EmbeddedRelated.com
The 2026 Embedded Online Conference

Data Hiding in C

Stephen FriederichsStephen Friederichs April 20, 201317 comments

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.


Chebyshev Approximation and How It Can Help You Save Money, Win Friends, and Influence People

Jason SachsJason Sachs September 30, 201221 comments

Are expensive math libraries or huge lookup tables eating CPU and flash on your microcontroller? In this practical guide Jason Sachs shows how Chebyshev polynomial approximation (with range reduction, splitting, and small interpolated tables) can give near-minimax accuracy while using far less code and runtime. The post compares Taylor series, plain and interpolated tables, and explains how to fit empirical sensor data and evaluate coefficients efficiently.


Welcome to my life!

Morten DramstadMorten Dramstad July 18, 20127 comments

Self-employed embedded engineer Morten Dramstad mixes industrial microcontroller work with hands-on hobbies and community projects. He describes AVR-based livestock automation, a current LPC1788 Cortex-M3 project and practical compiler choices like Keil and Imagecraft. Outside engineering he restores a 1952 AJS, built an electronic injection prototype on a Motorola 68HC16, trains for a private pilot license, and runs DMX512 workshops at his church.


10 Software Tools You Should Know

Jason SachsJason Sachs May 20, 201215 comments

Embedded work gets a lot easier when you have the right software stack, and Jason Sachs lays out the tools he leans on every day. From revision control and file comparison to build systems, scripting, analysis, documentation, QA, and command-line utilities, he focuses on practical picks that save time and reduce mistakes. The list is opinionated, but it is full of the kind of workflow advice that helps engineers stay productive.


Lightweight hardware abstraction

Gene BrenimanGene Breniman January 31, 2012

Hardware pin reassignments turned a small firmware tweak into a tangled mess of #ifdefs and scattered port references. Gene Breniman shows how a lightweight hardware abstraction, implemented with per-board include headers and meaningful macros like MODE_LED and LED_ON, cleans up the code and makes it easy to target multiple prototypes. The post emphasizes keeping changes local to configuration headers to reduce validation scope and maintenance.


Embedded Software Creation II - European Normative & Legislation

Dr. Maykel AlonsoDr. Maykel Alonso December 20, 20116 comments

If you are building a product for the European market, standards and directives can determine whether it can legally ship with a CE mark. Maykel Alonso breaks down how European normative and legislation fit together, what “New Approach” and “Global Approach” mean, and which directives commonly affect embedded products. The post also points engineers to the Official Journal of the European Union and a useful directive reference table.


C++ on microcontrollers 4 – input pins, and decoding a rotary switch

Wouter van OoijenWouter van Ooijen November 12, 20112 comments

Wouter van Ooijen shows how to extend a small C++ I/O library for microcontrollers to support input pins and mixed I/O, and how to decode a rotary switch reliably. The post walks through a safe class hierarchy for input, output, and bidirectional pins, then builds a quadrature decoder with a saturating counter and an HC595 seven-segment demo you can run on LPCXpresso hardware.


Modulation Alternatives for the Software Engineer

Jason SachsJason Sachs November 8, 20111 comment

Jason starts with a hardware curiosity, the 7497 synchronous rate multiplier, and turns it into a practical lesson for firmware engineers. He contrasts conventional PWM with a simple accumulator-based method called "synthetic division," showing how it implements first-order delta-sigma behavior in software. The post explains when to pick PWM or delta-sigma and why the accumulator trick can give higher effective resolution at low update rates.


C++ on microcontrollers 3 – a first shot at an hc595 class with 8 output pins

Wouter van OoijenWouter van Ooijen November 2, 2011

A simple HC595 wrapper turns into a nice C++ lesson in how to build reusable I/O abstractions for microcontrollers. Wouter van Ooijen shows how to expose all eight shift-register outputs as regular output pin objects, then generalizes the same pattern to MCU ports and even daisy-chained HC595 chips. Along the way, he runs into a classic class dependency problem and resolves it with forward declarations and out-of-class method definitions.


A true pioneer passes away... A farewell to Ritchie.

Gene BrenimanGene Breniman October 15, 20115 comments

Dennis Ritchie's work on C and UNIX quietly shaped the tools we use every day. Gene Breniman recalls becoming a convert after reading Kernighan and Ritchie's The C Programming Language and how C replaced assembly in his embedded projects. This personal farewell explains why K&R remains a near-biblical reference for many engineers and why Ritchie's influence still matters.


Can an RTOS be really real-time?

Miro SamekMiro Samek February 7, 20262 comments

Real-Time Operating Systems are meant for real-time applications. But with conventional shared-state concurrency and blocking, can you honestly know the worst-case execution time of an RTOS thread?


Thumb Rules for Effective Meetings

Kunal SinghKunal Singh October 3, 2007

Too many meetings waste engineers' time while too few kill communication, and Kunal Singh proposes seven practical thumb rules to fix both extremes. He outlines how to identify meeting types, publish and stick to an agenda, clarify roles, eliminate ambiguity, conclude items or mark them open, and circulate minutes. These simple practices help make meetings concise, accountable, and decision-oriented.


Tracing code and checking timings

Richard DorfnerRichard Dorfner May 25, 20115 comments

When you cannot afford logs or to stop the CPU, GPIO toggles become a powerful real-time tracer. Richard shows how driving IO pins and watching them with an oscilloscope or logic analyzer reveals control flow, function timings, and ISR activity with very little overhead. He also explains using direct port writes and conditional compilation to keep measurements noninvasive and easy to enable or disable.


Who needs source code?

Colin WallsColin Walls August 31, 2023

Many developers feel that the supplying source code is essential for licensed software components. There are other perspectives, including the possibility of it being an actual disadvantage. Even the definition of source code has some vagueness.


A true pioneer passes away... A farewell to Ritchie.

Gene BrenimanGene Breniman October 15, 20115 comments

Dennis Ritchie's work on C and UNIX quietly shaped the tools we use every day. Gene Breniman recalls becoming a convert after reading Kernighan and Ritchie's The C Programming Language and how C replaced assembly in his embedded projects. This personal farewell explains why K&R remains a near-biblical reference for many engineers and why Ritchie's influence still matters.


Remember Y2K?

Colin WallsColin Walls December 21, 20231 comment

There was fear that the turn of the century at the end of 1999 would cause problems with many embedded systems. There is evidence that the same issue may occur in 2038.


Building Linux Kernel for Desktops

Kunal SinghKunal Singh August 9, 20084 comments

Kernel building for desktop Linux is less daunting than it used to be. In this short primer Kunal Singh introduces the distribution-specific tools and procedures that simplify compiling a desktop kernel, with focused pointers for Fedora, Ubuntu, and SUSE. Engineers will get a quick overview of where to start and which tools each distribution provides to streamline a custom kernel build.


Embedded Software Creation I - Methodologies

Dr. Maykel AlonsoDr. Maykel Alonso June 20, 20112 comments

Maykel Alonso lays out the principal methodologies used to build embedded software, from cascade and incremental to iterative and spiral. The post walks through common stages, including requirements, analysis, design, implementation, integration, testing and maintenance, and highlights when each model fits firmware projects. Read this for a practical lens on picking a development approach that matches hardware constraints and regulatory demands.


Software Prototyping

Gene BrenimanGene Breniman August 19, 20081 comment

Software prototypes can save a lot of pain during bring-up, and Gene Breniman argues they deserve a place in the development process. He revisits an earlier post, then points readers to Jack G. Ganssle’s article on creating software prototypes, where test code becomes the model for the real product software. It is a short but practical reminder that early code can do more than just validate hardware.


“Smarter” cars, unintended acceleration – and unintended consequences

Michael J. PontMichael J. Pont October 20, 2015

Smarter cars are arriving fast, but the software tricks behind them may be creating new safety and compliance risks. This post connects Tesla’s autopilot, the VW emissions scandal, and a reported Porsche throttle-delay case to ask whether automotive standards and regulations are keeping pace with increasingly intelligent vehicle control systems.


The 2026 Embedded Online Conference