FreeRTOS: LED Blinking And Button Polling

FreeRTOS is one of the most widely used open-source real-time operating systems (RTOS). In this article, we will look at a very simple FreeRTOS program: a push-button will enable/disable the blinking of an LED. The program is developed and tested using the LPCXpresso54102 board with NXP's LPC54102 microcontroller. The program can be easily adapted for

2020-10-20T23:58:11+03:00By |Categories: Embedded Systems|Tags: , |0 Comments

Using Callbacks in Firmware Development

In its classic form, a callback (aka callback function) is a function that is passed as an argument to another function. The function that accepts the callback as an argument is expected to call back on it (execute it) at a certain point in time. The callback mechanism allows a lower-level software layer to call

2020-10-05T09:01:21+03:00By |Categories: Embedded Systems|Tags: , |0 Comments

Bubble Sort Algorithm

Bubble sort is a simple comparison-based sorting algorithm. It is named like that because it sorts elements similar to the water bubble rising to the surface, i.e. after all iterations are completed, either lower or higher values bubble up towards the top index of the given array. By making multiple passes through an array with

2020-08-10T08:26:29+03:00By |Categories: Explained Simply|0 Comments

KiCad – Create Template

KiCad templates are used to create projects with common settings. Templates can contain everything you need for a new project, for example, table and graphic formating, board outlines, schematic elements, etc. You can create a KiCad template with the following easy steps: Create a project with the settings you needAdd a folder named meta in

2020-07-26T19:33:56+03:00By |Categories: How To|0 Comments

Aligned and Unaligned Memory Access

Unaligned memory access is the access of data with a size of N number of bytes from an address that is not evenly divisible by the number of bytes N. If the address is evenly divisible by N, we have aligned memory access. We can express this as Address/N, where Address is the memory address

2020-07-19T16:56:39+03:00By |Categories: Embedded Systems|Tags: , |0 Comments

KiCad Files – Useful Information

In this post, I will try to provide you with useful KiCad files information. In the folder containing a KiCad project, you can find various types of files ranging from libraries, schematics to generated output files. Extension / NameDescription.proThis is the project file and it contains parameters and configurations..sch, .kicad_schSchematic file. (The new format is

2020-07-05T21:27:16+03:00By |Categories: Explained Simply|0 Comments

KiCad – Annotate Schematic Elements

When you create a schematic, you need to annotate it. If you have a few elements, it is easy to do it manually. For larger schematics, it is better to use automatic annotation. KiCad provides this capability using an easy to use interface. Tools menu Select the "Tools" menuClick "Annotate Schematic..."When the window is opened

2020-06-21T16:28:59+03:00By |Categories: How To|0 Comments

IPv6 Header Explained

The IPv6 is the latest version of the Internet Protocol. Its header is subdivided into a mandatory fixed header and optional extension headers. The fixed header has 8 fields and fixed size of 40 bytes, while all extension headers are multiple of 8 octets in size. To meet this requirement, some extension headers require internal

2020-06-14T13:31:40+03:00By |Categories: Explained Simply|0 Comments

Little-Endian vs Big-Endian in Embedded Systems

To better understand the concept of little-endian and big-endian formats we first have to look at how memory is accessed. The memory space of a microprocessor is expected to be byte-addressable. When a CPU has a 32-bit address bus this means that it can access a total of 232 addresses each with a size of

2020-06-07T21:07:09+03:00By |Categories: Embedded Systems|Tags: , |0 Comments

Prusa i3 MK3S Filament Sensor rev. 0.4 and FW 3.9.0

In the latest firmware release (at the time of writing this article) Prusa Research added a feature for filament sensor recognition (available for i3 MK3S only). Essentially the printer can tell when then filament sensor is disconnected and can interrupt the print and wait for user action. More details can be found in their GitHub

2020-05-31T12:47:21+03:00By |Categories: Embedded Systems, How To|Tags: |0 Comments
Go to Top