Objectifying the FreeRTOS timers using static polymorphism through the CRTP pattern (source code included)

Here I showed you how to objectify the FreeRTOS' timers using dynamic polymorphism, and it works! At the end of the post I made a promise, to objectify the FreeRTOS timers using static polymorphism. For such endeavor I'll use the CRTP pattern. What's wrong with dynamic polymorphism? It introduces codebloats due to the use of …

My view on static polymorphism through the CRTP pattern (source code included).

The CRTP pattern is one of those obscure and esotheric things in C++, yet very useful. One of its uses is as static polymorphism. Traditional polymorphism uses virtual functions (and, under the hood, pointers, indirections, and a table of pointers, the so called vtable), which turns the objects more complex. Static polymorphism resolves its calls …

Arduino de tiempo real: Curso gratuito en español

Hola, Quiero invitarte a que visites mi curso gratuito en español donde te muestro, paso a paso, cómo obtener un Arduino de tiempo real, a través del sistema operativo FreeRTOS. El curso está alojado en el blog de mi sitio profesional: Curso de Arduino en tiempo real. El curso está en construcción y estoy intentando …

Some ways to make an embedded system safer, (III)

This is the 3rd and final part of this series. Some of the advices in this post are little more complicated than the others that I've presented. But I encourage you to give them a try, you won't regret. Remember why we are here. If you've missed the first two parts, you can reach them …

Some ways to make an embedded system safer in the Covid-19’s times (II).

In the previous post I started a serie of advices about how to make our embedded systems safer and more reliables. In this post we will discuss another 5 hints. 6 Use a watchdog A program might get stuck in a block of instructions for a variety of reasons. Some of them are: Memory gets …

Arduino, FreeRTOS and shared resources

The Arduino’s analog to digital converter is built upon a single ADC module with 6 or more channels (inputs) and only one channel can be active at any given time. When we are programming in a sequential fashion (without an operating system) it’s easy to read from all channels, one after another. However, when we …

Tareas estáticas en FreeRTOS y porqué debemos preferirlas.

Los sistemas de tiempo real no sólo tienen que entregar un resultado correcto, también deben hacerlo a tiempo. Por esta razón deberíamos evitar el uso de la memoria dinámica. Y a pesar de que los expertos en sistemas embebidos (por ejemplo) respaldan esta afirmación la forma tradicional de crear tareas en FreeRTOS (xTaskCreate()) implica indirectamente …