Controlling a Wallbox via Modbus-RTU

When operating a photovoltaic (PV) system at home in 2022, we usually want to make good use of the electrical energy harvested by the system – instead of feeding too much excess energy back into the grid. While this is definitely true for the setup we’re operating here (in Germany),... [Read More]

Prototyping with MicroPython

A recent toy project of mine involves controlling SPI devices through an STM32 MCU. Right from the beginning, I expected a lot of prototyping-style back-and-forth so I thought this would be a great opportunity to get to know MicroPython. [Read More]

Git diff colliding with the shell: special characters

It sounds simple enough: You would like git to show local changes, but considering certain file types only. Something like git diff *.h usually does the job but in some cases yields unexpected results. We’re going to find out what this is about in this article. [Read More]

How to Deal with a 4-bit Wrapping Counter

Today’s article will be about integers and twos’ complement representation. It feels a bit like a follow-up on the previous one, where we did some experimenting with twos’ complements on narrow integer types. This time we are going to think more about how twos’ complement may help us handling counter... [Read More]

SPI bus: Clock Polarity and Clock Phase by example

After some months, here’s finally an article about a truly Embedded topic! We are going to take a quick look at the two basic parameters you want to carefully adjust when setting up an SPI bus: Clock Polarity (CPOL) and Clock Phase (CPHA). [Read More]

Git Snapshots Revisited

A great way to approach Git, I believe, is to explore its inner workings. To do that, let’s take a closer look at an analogy I made up previously, and create some useful graphs from real repositories. [Read More]

KNX Link-Layer Ack: A brief analysis.

KNX is a two-wire bus for building automation. It operates at a pretty low bitrate, which makes it a good candidate for analyzing communications using a cheap logic analyzer. This article is about the Acknowlegement procedure at the KNX Link Layer. [Read More]

Software Design Challenges: Embedded vs. Web

Sometimes, Embedded is considered a very special field of Software Engineering. It’s all about microcontrollers and complex devices, connected via a plethora of different bus systems – carefully orchestrated using only the C programming language. Let’s go and find out what’s so special about Embedded, and what our discipline has... [Read More]

Git in a nutshell: Commit, Checkout, Reset

We’re going to talk about three basic git commands in this episode: commit, checkout and reset. Instead of making up any abstractions or metaphors, we will focus straight on how these commands modify your repository’s internal state. [Read More]

3 Practical Uses of void Pointers in the C Language (part 1/3)

Probably every beginner’s book on C programming has a section on pointers. Usually, there are also one or two paragraphs on the topic of void pointers. Have you ever asked yourself what they can actually be used for? In this article, we will explore some practical uses for pointers of... [Read More]