Slow 32 kHz Oscillator Startup

In an IoT (Internet of Things, see “IoT: FreeRTOS Down to the Micro Amps“) project I’m using the Freescale KL15Z microcontroller. The nodes are moving around, and the board is using a special inductive charging ‘on the fly’ when nearby the charging station. The energy is stored in capacitors, so no batteries are needed. That worked very well, but some system failed: they need to quickly check sensor signals after power-up. Tracking down the problem, it was obvious that most of the systems failed because it took them too long to boot from the power-on reset. So I instrumented the application to toggle an LED so I can monitor what happens: It was over 400 ms after power-on! Yikes!

413 ms for startup

413 ms for startup

Continue reading

Tutorial: DIY Kinetis SDK Project with Eclipse – Board Configuration

In “Tutorial: DIY Kinetis SDK Project with Eclipse – Startup” I showed how to create a Kinetis SDK project from scratch. In this post it is about adding the board initialization files. With the board initialization the peripheral clocks and pin muxing is configured.

MK64FN1M0VLL12 on FRDM-K64F

MK64FN1M0VLL12 on FRDM-K64F

Continue reading

Tutorial: DIY Kinetis SDK Project with Eclipse – Startup

This is the start of a multi-post tutorial about the Freescale Kinetis SDK, released back in April as beta version. The SDK a set of peripheral drivers, and will become the standard software foundation and drivers provided by Freescale for their ARM Cortex based devices. Similar what other vendors already do. While this is a good step, it is the same time very disruptive for my university projects with new Freescale Cortex-M devices. And with everything new (and beta), it needs time to learn. So this post is about creating a Do-It-Yourself Kinetis SDK project from scratch for Eclipse. This part is about the startup code: about everything to get the application started.

FRDM-K64F with SD, nRF24L01+ and HC-06 Bluetooth

FRDM-K64F with SD, nRF24L01+ and HC-06 Bluetooth

Continue reading

EmbSys Registers View with CMSIS-SVD dimElementGroup

As outlined in “How to Add Register Details View in Eclipse“, I have a nice register detail level viewer for Eclipse and GDB. But one problem showed up: there were entries showing with %s:

PCR Register with %s

PCR Register with %s

The reason is that the parser is not handling the dimElementGroup of CMSIS-SVD.

Continue reading

Tutorial: PWM with DMA on ARM/Kinetis

For a project I need to change the PWM duty cycle after a PWM period is over. One way to do this is to have an interrupt at the end of the PWM period, and then set the new PWM duty (compare) register value in the interrupt. That works fine for ‘slow’ PWM frequencies, but if the PWM frequency is high, the CPU load is massively increasing. A better way is to use DMA (Direct Memory Access).

FRDM-KL25Z with DMA PWM and Logic Analyzer

FRDM-KL25Z with DMA PWM and Logic Analyzer

Continue reading

Configuration Data: Using the Internal FLASH instead of an external EEPROM

Many applications need to store persistent (non-volatile) data at runtime: configuration data, error logs, sensor data, calibration values, etc. The question is: where to store that data? If it is only a few kBytes, an SD card or similar is an overkill. Adding an external EEPROM? Sure, that works, but adds an extra part to the design. Some microcontroller have internal EEPROM. But what if not? Why not using the microprocessor internal flash memory?

Internal FLASH vs. external EEPROM

Internal FLASH vs. external EEPROM

Continue reading

How to Add Register Details View in Eclipse

The standard Eclipse registers view only shows the core registers:

Standard Registers View in Eclipse

Standard Registers View in Eclipse

I think it would be great to have a view to see all the device peripheral registers too?

Embedded System Registers View

Embedded System Registers View

If you want the same, then this article is for you. It works both for stock Eclipse and Freescale Kinetis Design Studion (KDS) 🙂

Continue reading

Tutorial: Data Logger with the FRDM-K64F Board

The Freescale FRDM-K64F is a great board for data logger applications: it has a powerful ARM Cortex M4F with 120 MHz, 1 MB Flash and 256 KByte RAM. Best of all: it already has a micro SD card socket on the board :-).

Data Logger with FRDM-K64F

Data Logger with FRDM-K64F

Continue reading