On optimizing manual soldering
When faced with manual soldering of thousands of components, speed and efficiency become pivotal. Here are some takeaways from my own experience attempting to optimize such a process.
On hardware state machines: How to write a simple MAC controller using the RP2040 PIOs
Hardware state machines are nice, and the RP2040 has two blocks with up to four machines each. Their instruction set is limited, but powerful, and they can execute an instruction per cycle, pushing and popping from their FIFOs and shifting bytes in and out. The Raspberry Pi Pico does not have an Ethernet connection, but there are many PHY boards available… take a LAN8720 board and connect it to the Pico; you’re done. The firmware ? Introducing Mongoose…
Graphical medicine
Although an appealing user interface is a good option for any device, in medical applications it can be a life saver.
Pay it Forward
A popular car bumper sticker reads, "If you can read this, thank a teacher!" I might say, "If you can read THIS (article on Embedded Related), then you've been blessed with great experiences and/or great educators or volunteers that got you excited about tech and helped you believe that you had a future in this field!" Why not pay it forward by helping other children have those same great experiences? As we enter another season of giving, I hope you consider doing what you can to support the hundreds or thousands of non-profit organizations, educators, and volunteers around the world who are getting kids excited about tech the same way YOU got excited about tech. In this article, I'll share with you a handful of organizations that I know of or donate to that have this mission. How do you like to give back?
Getting Started With Zephyr: West Manifest For Application Development
In this blog post, I show a simpler way to create custom West manifest files. This technique eliminates the need to duplicate the complex West manifest from upstream Zephyr. I also show how we can use the West manifest to include out-of-tree board and SoC definitions, and include our own out-of-tree drivers.
What is “real time”?
The post clarifies the technical meaning of “real time” for embedded systems and contrasts it with the colloquial sense of immediacy. It presents a precise definition: a real-time system’s correctness depends on both logical results and the time at which those results are produced, so missing timing constraints constitutes failure. The article emphasizes determinism — low variance in operation timing — as the key property of real-time systems, and contrasts classic RTOS behavior with general-purpose Linux’s higher timing variance. It also notes that raw CPU overprovisioning can mask nondeterminism in some designs, but is not always practical, reinforcing that real time means predictable timing sufficient for the application, not simply “fast.”
Simulating Your Embedded Project on Your Computer (Part 2)
Having a simulation of your embedded project is like having a superpower that improves the quality and pace of your development ten times over! To be useful, though, it can't take longer to develop the simulation than it takes to develop the application code and for many simulation techniques "the juice isn't worth the squeeze"! In the last article, I showed you how to use the terminal (i.e. printf/getchar) to easily make a completely functional simulation. In this article, we'll take simulation to the next level, either in terms of realism (by using virtual hardware) or in terms of user experience (by using a GUI to simulate our hardware, instead of using the terminal).
Blocking == Technical Debt
Blocking code in embedded systems trades quick development for long-term pain, effectively becoming technical debt. This post shows how blocking in Arduino examples and traditional RTOS threads hard-codes sequences and timing, making change and extension expensive. It contrasts blocking kernels with preemptive non-blocking approaches and recommends event-driven Active Objects and frameworks like QP as more scalable alternatives.
In TCL FPGA Wizards Trust
In TCL FPGA wizards trust. The best way to learn TCL is exposure therapy which we will be doing here using two examples: One for creation of a project with synthesis and implementation steps and another for simulation.
How 5G impacts future IoT development
The Internet of Things (IoT) applications are ubiquitous today. IoT is used in almost every industrial, commercial, and consumer market segment, including autonomous driving, smart factories, automation and preventive maintenance, smart homes, smart cities, security, asset tracking, supply chain management, agriculture, farming, healthcare, smart medicine and remote surgery, augmented reality applications, activity monitoring, and more. The three most promising uses of IoT are smart manufacturing, autonomous driving, and healthcare, particularly remote surgery.
Soft Skills For Embedded Systems Software Developers
Soft skills often determine whether an embedded project ships on time as much as technical chops do. This post lays out practical, engineer-friendly guidance on interpersonal skills, communication, time management, deep focus, asking for help, learning, and resilience. It mixes concrete tips like the documentation system, pomodoro and quiet hours with habits such as engineering notebooks and role-playing to make collaboration and productivity more reliable.
Introduction to Microcontrollers - Driving WS2812 RGB LEDs
Mike Silva walks through a practical, cycle-counted AVR assembly implementation to bit-bang WS2812B RGB LEDs from an 8MHz AVR, hitting the chip's tight 1.25µs-per-bit timing. The post breaks down the WS2812B self-clocked protocol and GRB byte order, explains register and calling-convention choices, and includes a complete C example plus power-consumption warnings for driving LED strips.
Skills For Embedded Systems Software Developers
Embedded development demands a broad, practical skillset, and this post lays out the core knowledge employers expect across software, hardware, and tooling. It highlights essential languages like C, low-level concepts such as interrupts and RTOS, plus hardware skills like debugging with JTAG and using oscilloscopes. You also get realistic timelines, hands on study advice, and resource pointers to build a portfolio that proves you can ship reliable firmware.
Lost Secrets of the H-Bridge, Part III: Practical Issues of Inductor and Capacitor Ripple Current
Jason Sachs cuts through the math to show what ripple current actually does to H-bridge hardware. He explains why peak current is the limiting factor for inductors, why capacitor ESR usually dominates DC-link voltage ripple, and how center-aligned PWM and duty selection reduce harmonics and ripple. Read this if you want practical rules of thumb and calculation templates for real power-electronics designs.
Back from ESC Boston
Stephane nearly skipped ESC Boston, but going turned into a productive mix of networking, informal meetups, and on-the-floor filming. He captures candid encounters with speakers and vendors, learns how small shows differ from larger expos, and outlines practical follow-ups like booth highlight videos and speaker hospitality suggestions. The post is an encouraging read for engineers weighing the value of regional conferences and DIY event coverage.
Recruiting New Bloggers!
EmbeddedRelated is expanding its blogging team, and Stephane Boucher is inviting engineers, students, hobbyists, and researchers to contribute. He points to the success of earlier contributors and says the community has already read their articles more than 1,250,000 times. If you have knowledge to share, this post explains how to pitch a topic and get started.
The volatile keyword
Although the C keyword volatile is very useful in embedded applications, care is needed to use it correctly and vigilance is required to ensure its correct implementation by compilers.
Implementing State Machines
Stephen walks through a practical state machine example using a dish-washing analogy to expose common implementation pitfalls and fixes. Starting from a straightforward superloop design he shows how blocking loops, global state, and interrupt races can break behavior, then refactors the code to use scoped enums, non-blocking state actions, and a simple interrupt flag to make embedded state machines safer and more maintainable.
VHDL tutorial - combining clocked and sequential logic
Need the ADC clock to sometimes be the raw 40MHz input? Gene Breniman shows how to extend a reloadable, counter-based VHDL clock divider to support a master-clock pass-through by using a conditional signal assignment to switch between the internal ADCClk and Mclk. The article also covers remapping ClkSel values and includes a working XC2C32A CPLD build that leaves room for future enhancements.
R1C1R2C2: The Two-Pole Passive RC Filter
Jason Sachs walks through the math and simulation for the common two-pole passive RC filter, turning repetitive algebra into a compact reference you can reuse. He derives the closed-form transfer function, extracts the natural frequency and damping ratio, and explains why the topology cannot be underdamped without inductors or active stages. The post finishes with a state-space simulation recipe and practical component guidance.
PID Without a PhD
You do not need control theory to implement useful PID loops in embedded projects. Tim Wescott walks through simple, ready-to-use C code, clear explanations of P, I and D terms, and a practical tuning recipe you can apply to motors, precision actuators, and heaters. The article highlights anti-windup, sampling-rate guidance, and when to call in a control expert.
Ten Little Algorithms, Part 1: Russian Peasant Multiplication
Jason Sachs revisits a centuries-old multiplication trick and shows why it still matters. He lays out Russian Peasant Multiplication with simple Python code, then reveals how the same shift-and-add pattern maps to GF(2) polynomial arithmetic and to exponentiation by squaring. The post mixes historical context with practical bitwise techniques that are useful for embedded and low-level math work.
Data Hiding in C
You can get C++-style data hiding in plain ANSI C, Stephen Friederichs demonstrates how with a FIFO stack example. He shows opaque pointer typedefs to hide struct layouts, const-qualified handles to catch accidental writes, static file-local functions for private helpers, and a canary field to detect tampering. The pattern keeps the public header stable while letting you change implementations behind the scenes.
VHDL tutorial - A practical example - part 1 - Hardware
Gene Breniman walks through a practical CPLD-based data acquisition engine built for a low-power handheld instrument, focusing on hardware choices, signal flow, and pin assignments. The article explains component selection including a PCM1870 ADC, CY14B101Q2 serial nvSRAM, and an XC2C64A CPLD, and shows how the CPLD acts as an SPI sequencer and I2S clock master while minimizing microcontroller pins and power draw.
Implementing State Machines
Stephen walks through a practical state machine example using a dish-washing analogy to expose common implementation pitfalls and fixes. Starting from a straightforward superloop design he shows how blocking loops, global state, and interrupt races can break behavior, then refactors the code to use scoped enums, non-blocking state actions, and a simple interrupt flag to make embedded state machines safer and more maintainable.
Skills For Embedded Systems Software Developers
Embedded development demands a broad, practical skillset, and this post lays out the core knowledge employers expect across software, hardware, and tooling. It highlights essential languages like C, low-level concepts such as interrupts and RTOS, plus hardware skills like debugging with JTAG and using oscilloscopes. You also get realistic timelines, hands on study advice, and resource pointers to build a portfolio that proves you can ship reliable firmware.
Introduction to Microcontrollers - Buttons and Bouncing
Mechanical buttons lie to your microcontroller, producing bounces and occasional noise that look like multiple presses. Mike Silva walks through practical ways to represent buttons, simple and robust software debounce strategies, and how to convert states into single-use events. The post includes ready-to-use C patterns: N-sample filters, shift-accumulator filtering, per-button data structures, and keypad debouncing examples.
Round Round Get Around: Why Fixed-Point Right-Shifts Are Just Fine
Jason Sachs explains why, in most embedded systems, simple bitwise right-shifts are an acceptable way to do fixed-point division rather than paying the runtime cost to round. He shows the cheap trick of adding 2^(N-1) to implement round-to-nearest, explains unbiased "round-to-even" issues, and compares arithmetic error to much larger ADC and sensor errors. The takeaway: save cycles unless your algorithm or inputs require extra precision.
Learning Rust For Embedded Systems
Rust eliminates whole classes of memory and concurrency bugs, making it a compelling choice for embedded projects, and the author recommends it for the VolksEEG project after a rapid evaluation. The post connects Rust fundamentals such as ownership and borrowing, RAII, traits, and unsafe blocks to familiar embedded patterns. It also provides a curated on-ramp of videos, books, and tools like Cargo, RTIC, and probe-rs to get hands-on quickly.
++i and i++ : what’s the difference?
Although the ++ and -- operators are well known, there are facets of their operation and implementation that are less familiar to many developers.
Best Embedded Systems pdf Documents Out There
Sifting through millions of embedded systems PDFs online is tedious and most documents are low-value. Stephane Boucher asks the community to crowdsource a curated directory of the best PDFs, explains submission and approval rules, and offers cash incentives to motivate contributions. Submissions must reach a +5 rating by partner members to be approved, and initial pending submissions are limited to five to prevent abuse.
New Discussion Group for Users of TI ARM based MCUs
A new discussion group is opening up for engineers working with TI’s ARM-based microcontrollers. Stephane Boucher is inviting users to subscribe, with moderation in place to help keep spam under control, and notes that the group may take a little time to gain momentum before the useful conversations really start flowing.
New TI MCU Resource Center
EmbeddedRelated has launched a new TI MCU Resource Center, giving engineers a dedicated place to follow Texas Instruments’ latest MCU videos and articles. Stephane Boucher says TI will keep the section updated regularly, and the link is now available in the site’s main menu. It is a simple announcement, but one that could make tracking TI’s MCU news much easier.
Blogs Section Now Online!
EmbeddedRelated’s blog section is now live, and Stephane Boucher is lining up 10 embedded systems experts to start publishing soon. He explains how he recruited the contributors, what still needs to be set up, and invites readers to suggest improvements for the new section. If you follow embedded systems or DSPs, this is the start of a new community content push.






















