**Experiments, Prototypes & Notes with the micro:bit v2.21** This repository contains my projects, experiments, and notes using the **micro:bit v2.21**, built on the **nrf52833** microcontroller. I...
Read more
#embedded
21 posts
๐ **Synchronization** is a fundamental concept that ensures that the processor, peripherals, timers, and interrupts operate in a consistent and accurate manner based on a common clock source. <!-- mo...
Read more
๐ **Clock is the basis for timers and interrupts** The clock system sets the pace of all digital components of the microcontroller. Timers use its signals to generate interrupts and perform tasks with...
Read more
๐ Timers are hardware modules of the microcontroller for actions with time counting and event generation **without the participation of the main code**. The accuracy of the timer and its maximum ti...
Read more
๐ How to handle pulse width modulation --- **PWM (pulse width modulation)** is used to control the power supplied to the load. ๐ธ **Classic method** - reducing the voltage through a rh...
Read more
๐ A must-have template for creating a Rust project for microcontrollers. --- table { width: 100%; border-collapse: collapse; margin-bottom: 20px; } th, td {...
Read more
Microcontroller peripherals are functional blocks integrated into the chip that enable it to interact with the outside world or carry out specific tasks โ often without involving the processor core....
Read more
A `processor register` is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware...
Read more
**MMIO (Memory-Mapped I/O)** is a way for the central processing unit (CPU) to interact with peripheral hardware devices (e.g. `UART`, `timers`, `GPIO`, `SPI`, etc.) by "sticking" the registers of the...
Read more
๐ Data Transmission Between CPU and Peripheral Devices via I/O Methods table { width: 100%; border-collapse: collapse; margin-bottom: 20px; } th, td {...
Read more
Classic software development is always inside the cycle of write - run - check - fix. In classic systems, debugging is simplified by built-in logs, breakpoints and step-by-step code execution direct...
Read more
A technical introduction to the **UART** - low-speed two-wire asynchronous multi-duplex serial protocol. **UART** The earliest serial protocol. Still commonly used in modern electronics. {{ img(src...
Read more
A technical introduction to the **SPI** - low-speed four-wire master-slave full-duplex serial protocol. **SPI** is widely used as a faster alternative to UART/I2C for transferring data between an in...
Read more
A technical introduction to the **I2C** - low-speed two-wire master-slave serial protocol. **I2C** is widely used for short-distance data transmission over a data bus (`SDA`) with a clock synchroniz...
Read more
Digital systems are based on the concept of **bits**, in addition to using bits they often have to transfer them back and forth usually between two components (MCU and Sensor, LCD etc). ๐ All the di...
Read more
**Review of the ecosystem of crates used for programming microcontrollers in Rust** In general, developing programs for **MCU** is aimed at obtaining some information from the surrounding world, perf...
Read more
**Experiments, Prototypes & Notes with the Raspberry Pi Pico W** This repository contains my projects, experiments, and notes using the **Raspberry Pi Pico W**, built on the **RP2040** microcontrolle...
Read more
In this article, I will explore: * How Rust ensures memory safety in no_std environments * What memory allocation strategies are viable on modern embedded targets * Which patterns help minimize memor...
Read more
๐ What is a general purpose input output (GPIO) of the MCU --- ### GPIO GPIO stands for general purpose input/output. It is a type of pin found on an integrated circuit that does not...
Read more
This article is the second part of my exploration into the stages and optimizations of [Rust compilation]((https://maltsev-dev.github.io/rs-to-bin/)), focusing now on embedded systems development. E...
Read more
In embedded Rust development, minimizing the size of the compiled firmware is essential due to the limited memory resources of microcontrollers. This article explores how to analyze binary sizes usi...
Read more