Follow our illustrated blog on Embedded Software Architecture

How to build a hybrid solar/wind energy harvester?

Archives for May 2013

Mutexes and semaphores: the FreeRTOS implementation

Let us start with an interesting quote from the FreeRTOS web site: Binary semaphores are used for both mutual exclusion and synchronisation purposes. The quote clearly makes a distinction between the two use cases we saw in part 1: mutual exclusion: how to serialize access to shared data, and synchronization: how does a producer notify […]


Investigating the Wind-turbine to dump load switching – part 1

The (most obvious?) switching solution would be a high-power relay. In a previous article, we already did an experiment with a Solid State relay (and we will continue to do so). Now we will look further into the ‘contactor’. The ‘kit’ we ordered  from (via Ebay) is a relay board with optical isolation (to […]


User level spin locks revisited

This article was written – quite a few years ago – but recent activities made it worthwhile to take another look at it,  revise the content and give it an overhaul to alleviate and clear up some of the inaccuracies. It starts with a quote and excerpt from the book Inside Microsoft Windows 2000, Third […]


STM32F100: why and how to use the internal reference voltage for ADC?

One of our main development boards is the  STM32VLDISCOVERY. Its st-link is an in-circuit debugger and programmer, and makes development for prototyping fast and easy. The board has an ‘interesting’ property though: its reference voltage is labeled 3.3V while it is actually… only 3V. Check out the picture for proof!   After reviewing the board schematics we found […]


Mutexes and semaphores: two concepts for two different use cases

Introduction There has always been (and there still is) confusion on terminology and usage of mutexes and semaphores. The main reason is that the term ‘semaphore’ has a different meaning depending on the context. We need to distinguish two contexts or levels: the concept and usage level, and the implementation level. This article is about the […]