Geometrías de circuitos impresos en KiCAD

En la siguiente entrada de mi blog alternativo te muestro los pasos necesarios en el programa #KiCAD para crear de manera correcta las geometrías y que tu fabricante no tenga problemas cuando las fabrique. Aunque la mayoría de nuestros circuitos impresos tienen geometrías cuadradas o rectangulares, a veces tenemos que romper la tradición, ya sea …

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 …

Catch 2, quick and dirty setting up in Linux

Download Catch 2 Download it from here and decompress it wherever you want. Create a test file Create a folder wherever you want.Inside the folder create a test.cpp file (without the main() function). For example: // test.cpp #define CATCH_CONFIG_MAIN #include "catch2/catch.hpp" int square( int a ) { return a*a; } // more functions to be …

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 …

Static tasks in FreeRTOS

Static tasks in FreeRTOS Before release 9.0 of FreeRTOS all tasks were created using dynamic memory, using one of five memory schemes (aka malloc() versions). However, since release 9.0 the programmer can create tasks in a static manner too. Even better, all mechanisms in FreeRTOS (tasks, timers, semaphores, queues) can be created now in a …