How-to articles about designing safe, reliable, and secure embedded systems.

CRC Series, Part 3: CRC Implementation Code in C/C++

CRCs are among the best checksums available to detect and/or correct errors in communications transmissions. This article shows how to implement an efficient CRC in C or C++.

CRC Series, Part 2: CRC Mathematics and Theory

Many common types of data transmission errors cannot be detected by additive checksums. This article describes a stronger type of checksum known as a CRC.


CRC Series, Part 1: Additive Checksums

What if data is lost or corrupted in transit? Communication protocols usually attempt to detect such errors automatically. To do that they use checksums.


Introduction to the ATVEF Protocol Enhanced TV

New standards are making the delivery of Web-based and enhanced content alongside television a reality. This article describes the ATVEF enhanced television standard and the requirements for designing ATVEF-compatible receivers.

Short Range Wireless Protocols: Bluetooth vs. IrDA

As engineers design more and more products with embedded computer systems that require connections of one sort or another, short-range wireless protocols offer an attractive alternative to wired connections.

How to Use the C Preprocessor's #error Directive

One of the least used but potentially most useful features of the C preprocessor is the ANSI-specified #error directive. Here's a look at a couple of clever uses for #error that have proven invaluable in embedded software development.

How to Design App-Ready Embedded Systems

Bug fixes, patches, and third-party application programs are all possible in today’s more powerful embedded systems, but you need to plan for them at design time. This article shows you how.

RS-485 Transmit Enable Signal Control

Quite a few embedded systems include multiple processors. Sometimes these processors stand in isolation, but more often they're required to communicate over a multidrop bus such as EIA RS-485 or RS-422.

How Programmable Logic Works

In recent years, the line between hardware and software has blurred. Hardware now engineers create the bulk of their new digital circuitry in programming languages such as VHDL and Verilog. This article will help you make sense of programmable logic.

How to Create Jump Tables via Function Pointer Arrays in C and C++

Jump tables, also called branch tables, are an efficient means of handling similar events in software. Here's a look at the use of arrays of function pointers in C/C++ as jump tables.