Refilling the non-refillable Miele AutoDos Dishwasher Automatic Detergent Dispensing Disks

Did you know that modern (dish) washing machines have the ability to automatically dispense detergents? The positive side is: this can reduce the amount of detergents used. The machine will monitor the washing process, and ‘cleaner’ dishes should require less detergents.

Our new energy Miele Dishwasher came with that exact feature: the Miele AutoDos System, an automatic detergent dispensing system. The detergent is inside a rotating disk, dispensing detergents as needed, making it (hopefully) more environment-friendly:

Miele AutoDos Power Disk in Miele Dishwasher

The downside is: Miele did not make it refillable: after around 20 washing cycles, you have to replace the disk with a new one. This is not environment friendly. So I wanted to change this….

Continue reading

Installing Processor Expert into MCUXpresso IDE

With the new MCUXpresso versions out, and because it has been a while I showed how to install Processor Expert into Eclipse, here is an update how to do this.

Processor Expert in MCUXpresso IDE
Continue reading

Debugging the LPC804 on the MCU-Link Pro with an external Debug Probe

The NXP MCU-Link Pro debug probe includes a LPC804 as an additional microcontroller on the board, including its debug header.

MCU-Link Pro Debug Probe Board

The question is: how to debug the on-board extra LPC804 microcontroller with an external debug probe?

Continue reading

GNU Coverage (gcov) with NXP S32 Design Studio IDE

The open-source GNU tools provide a rich set of tools to help developing software. Some are clearly more for the high-end application development. But many of the tools are applicable for the more restricted embedded software development process as well. One is gcov, or the GNU Coverage Tool. Coverage is essential for the testing phase, as it tells you what part of code have been used and ‘covered’. This article describes how GNU coverage can be added the NXP S32 Design Studio IDE.

Continue reading

Recovering bricked LPC55Sxx EVK Boards

While developing applications, it can happen that things go wrong. And in my case I ended up with two LPC55Sxx EVK boards on my desk, which seemed not to be usable any more. The issue: the boards were not accessible with the debug probe, because right after main they muxed the pins in a wrong way :-(.

bricked board with set of debut probes

The standard GDB debug connections (both on-board and off-board) were not able to regain access of the board, because the MCU was running into the fault condition pretty much right out of reset.

Luckily, after a lot of trial-and-error, I have found a way to recover them.

Continue reading

Using Custom Source File Extensions with Eclipse CDT Gnu Make Builder Projects

One great thing with the Eclipse Gnu Make Builder (aka ‘auto make’ or ‘auto build’) feature: just add source files (*.c, *.cpp, …), and with kind of magic, they all get compiled and linked properly.

But for something easy and convenient: is it hard to use custom file extensions? So what if I want to use a different file extension for my source files, different from the standard ones? Actually Eclipse CDT can do this too, it just takes two settings to recognize, compile and link source files with custom extension.

Custom file extension with Eclipse auto-build
Continue reading

Debugging with Dynamic Printf Breakpoints

I’m not a big fan of using printf() in embedded applications, but I have to admit that in some cases it is very useful. One problem in debugging embedded systems debugging is getting values or information off the target: because of the limited resources this can be very challenging.

So why not doing this with the debugger in an automated way? And here dynamic printf breakpoints can help: it adds printf()-style output on-the-fly to your program without the need to recompile or restart your program, without the need to run printf() on the target:

Using Dynamic Printf Breakpoint
Continue reading

Silicon Shortage and Semihosting with NXP MCUXpresso SDK on FRDM-KE02Z

The silicon shortage is still going on. While the NXP Kinetis KE devices might not be my first choice, they still seem to be available, in at least in lower quantities. This has been recognized by others, as I’m getting more and more questions and requests for the KE and KV family. This is why I un-dusted my old FRDM-KE02Z to be used with the latest MCUXpresso SDK and IDE.

FRDM-KE02Z Board

And in case you want to use that board or device with semihosting, I have you covered.

Continue reading

Spilling the Beans: storage class and linkage in C, including static locals

In Spilling the Beans: C/C++ Header Files, I touched on interfaces and the difference between external and internal linkage. This article has a focus on internal linkage with using the static keyword in C.

Photo by Markus Spiske on Pexels.com

So this might be a programming language refresher, in case you are clear about the difference between declaration and definition, or if you are wondering about internal or external linkage in C.

Continue reading

LoRaWAN with NXP LPC55S16 and ARM Cortex-M33

LoRaWAN is getting more an more popular, both for terrestrial and increasingly with low-orbit satellite systems. The ‘Long Range’ in ‘LoRa’ makes it an ideal solution for low-power and low data rate applications. For a university research project we selected the Semtech SX1261/62 transceiver together with the NXP LPC55S16 mikrocontroller. Because the board used for that project is not available for the public (yet), I share here how you can run the LoRaWAN stack with the NXP LPC55S16-EVK.

LoRaWAN with Semtech SX126x and NXP LPC55S16
Continue reading