About Yasen Stoyanov

This author has not yet filled in any details.
So far Yasen Stoyanov has created 49 blog entries.

FreeRTOS: Using MCU Peripheral Drivers

Communication interfaces (I2C, SPI, UART, etc.) are some of the most commonly used microcontroller peripherals in embedded systems. In this introductory article, we will look at how low-level drivers for such peripherals can be used in FreeRTOS. Polled Drivers vs Interrupt-driven Drivers Based on the method used for getting information on events (e.g errors, operation

2021-03-08T06:23:40+02:00By |Categories: Embedded Systems|Tags: , |0 Comments

FreeRTOS: Using Software Timers

In this article, we will take a look at the software timers in FreeRTOS. A software timer allows a function to be executed at a set time in the future.FreeRTOS - RTOS software timer functionality and features description The function that is executed is referred to as a timer's callback function. The interval between starting

2021-01-03T18:53:29+02:00By |Categories: Embedded Systems|Tags: , , |0 Comments

Toolset for Debugging Embedded Programs

Writing programs that just work would make the development of embedded systems a lot easier. In practice, however, a considerable amount of time is devoted to finding and removing bugs from the code. This process is commonly known as debugging and there is no way of avoiding it. In this article, we will give an

2020-11-22T22:35:01+02:00By |Categories: Embedded Systems|Tags: |0 Comments

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: , |2 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

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: , |2 Comments

Communication Between RTOS Tasks

Real-time operating systems (RTOS) allows us to develop complex embedded systems. By using self-contained tasks (threads) each with their own context we can implement programs with multitasking behavior using a single CPU. Passing information between these tasks (inter-task communication) is an important aspect when designing an embedded application using an RTOS. We can say that

2020-05-19T19:02:24+03:00By |Categories: Embedded Systems|Tags: , |0 Comments

Peripheral Access Layer for Microcontrollers

The peripheral access layer is a layer of the firmware that provides access to the registers of a microcontroller's peripheral units. It has to be easy to use, well structured, and efficient. This layer is part of the software packages every microcontroller vendor provides for free with their Software Development Kits (SDK) and Integrated Development

2020-04-26T14:42:59+03:00By |Categories: Embedded Systems|Tags: , |0 Comments

Direct Memory Access (DMA) in Embedded Systems

Direct Memory Access (DMA) is a process of transferring data from one memory location to another without the direct involvement of the processor (CPU). The main benefit of using DMA is more efficient data movement in the embedded system. Principle of Operation There are many different types of DMA implementations, some of them for very

2020-04-15T20:59:18+03:00By |Categories: Embedded Systems|Tags: |0 Comments
Go to Top