Barr Group FacebookBarr Group TwitterBarr Group LinkedInBarr Group Vimeo

At Barr Group, our mission is to help as many embedded systems engineers as possible make their products safer, more reliable and more secure. In addition to providing product design, consulting, and training services, we encourage our engineers to share their technical expertise by writing and teaching. We hope that you will learn something from these free how-to articles. Please respect the copyright notices at the bottom of each page.

Assembly vs. C: Which is Best for Microcontrollers?

Given a particular programming problem, what language should you use to realize the solution? Your choice could very well affect the success or failure of the project. So you'd better choose wisely.

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. Unfortunately, the modulo-2 arithmetic used to compute CRCs doesn't map easily into software. This article shows how to implement an efficient CRC in C.

CRC Series, Part 2: CRC Mathematics and Theory

Checksum algorithms based solely on addition are easy to implement and can be executed efficiently on any microcontroller. However, many common types of transmission errors cannot be detected when such simple checksums are used. This article describes a stronger type of checksum, commonly known as a CRC.

CRC Series, Part 1: Additive Checksums

Whenever you connect two or more computers together with the intent of exchanging information, you assume that the exchange will take place without errors. But what if some of the 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

by Michael Barr

As engineers design more and more products with embedded computer systems that require connections of one sort or another, we've got to pay attention to the ease with which these connections can be made. Short-range wireless protocols offer an attractive alternative to wired connections.

How to Design App-Ready Embedded Systems

by Michael Barr

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.

How to Use the C Preprocessor's #error Directive

by Nigel Jones

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.

The syntax of #error is very straightforward:

#error <writer supplied error message>


RS-485 Transmit Enable Signal Control

by Nigel Jones

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.

The bus wiring for a typical RS-485 or RS-422 implementation is shown in Figure 1.

Typical RS-485 or RS-422 Wiring

How Programmable Logic Works

by Michael Barr

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.


What’s happening and how it’s done. Get in the know.

Sign up for our newsletter today!

Receive free how-to articles, industry news, and the latest info on Barr Group webinars and training courses via email. 

To prevent automated spam submissions leave this field empty.