Follow our illustrated blog on Embedded Software Architecture

How to build a hybrid solar/wind energy harvester?

STM32F100: configuring two PWM channels, polarity and alignment

Introduction In our project one source supplies power to two different loads and we need to control how much power goes to which load. To achieve this, we use an STM32F100 processor to PWM high-power mosfets. These mosfet channels do or do not conduct green energy to the different loads which are a battery (bank) […]

Share

Pulse Width Modulation

A short definition Pulse-width modulation is commonly used in power-control or motor-control applications. Time is divided into periods. As always, the smaller the time periods, the higher the frequency. Within this time block a pulse signal is applied. The digital signal is logically active (“1”or ON) during a specified percentage of the time period, the […]

Share

ADC driver for the energy harvester

Introduction One of the goals of iteration 1 of the energy harvester project is to extend our software platform with drivers for measuring (gpio in, adc), controlling (gpio out, pwm) and debugging (uart). In this article our focus is set on the ADC driver (we already introduced the Analog-to-Digital-Converter here). It is hard (not to say […]

Share

Debounced Buttons

A button-driven handbrake Buttons (or switches, or keys) are quite common in the world of the embedded systems. In most cases buttons trigger a software action and – in our context – we will use buttons for configuring the settings of the charge controller. We can also use the buttons as a debugging utility. The […]

Share

Driving LEDs by GPIO: finally resolved!

Introduction Probably one of the most fascinating things you had to do in your early embedded career was controlling some LEDs by means of GPIO (General Purpose I/O). This – of course – is so easy i.e. until your project manager passes by: “I want this LED to blink a little faster” “Why is the […]

Share

MCU pin configuration, GPIOs and a word on software architecture

Basic peripheral setup: pin configuration All MCUs have pins. They might come in different package types such as QFP (Quad Flat Package – Figure left) or BGA (Ball Grid Array – Figure right). But for us, embedded software engineers, pins or balls, we don’t really mind: MCUs have pins and we need to configure them. […]

Share

Simple Platform Abstraction

What When prototyping, it is uncertain and sometimes even unlikely that the experimentation platform will be the basis of the final industrialized product. Therefor, it is good software developer workmanship to protect the logic development from change with regard to board, processor and real-time operating system, if and whenever possible. A platform abstraction – in […]

Share