## Round-robin or RTOS for my embedded system

First of all, I would like to introduce myself. I am Manuel Herrera. I am starting to write blogs about the situations that I have faced over the years of my career and discussed with colleagues.

To begin, I would like to open a conversation with a dilemma that is present when starting a project ... must I use or not any operating system?

I hope it helps you to form your own criteria and above all that you enjoy it.

Does my embedded system need an...

## Watchdog Timer Anti-patterns

June 8, 2019

The humble watchdog timer has been an essential part of our reliability tool chest for decades now. The way it works is straightforward and easy to understand, and most practical designs are easy to interface with.

There is a wealth of reference material that covers both the theory behind watchdog timers and practical design tips. But what we'll talk about today is of a slightly different nature.

Despite its straightforward operation and long history, the watchdog timer does occasionally get...

## Mutex vs. Semaphores – Part 2: The Mutex & Mutual Exclusion Problems

Part 1 of this series we looked at the history of the binary and counting semaphore, and then went on to discuss some of the associated problem areas. In this posting I aim to show how a different RTOS construct, the mutex, may overcome some, if not all, of these weaknesses.

To address the problems associated with semaphore, a new concept was developed during the late 1980’s. I have struggled to find it’s first clear definition, but the major use of the term mutex (another...

## Designing Communication Protocols, Practical Aspects

For most embedded developers always comes the time when they have to make their embedded MCU talk to another system. That other system will be a PC or a different embedded system or a smartphone etc. For the purpose of this article I am assuming that we are in the control of the protocol between the two ends and we don’t have to follow something that is already in place on one side.

So let’s say that we have our embedded MCU, we have implemented and configured the USB stack (or just...

## A brief overview of flight control software

It has been a long time since the first drones appeared. If you are interested in such a topic, you may be confused about how and where to jump in. Since I went through the same phase, I'd like to write my findings here and help others.

For this blog post, I've created chart and table with all open source flight control programs I've been able to find.

The chart shows the course of development of the existing software. It is separated in years and you can see when which project...

## Debugging DSP code.

May 1, 2019

I am fascinated with neural network processing and have been playing with them since the 80's.

I am a frequent contributor to the Numenta forum. Numenta is the current project of Jeff Hawins, the guy that gave us the Palm Pilot. They are working with the HTM model. This is a system based on studies of the functions of the cortical column and has some very interesting properties: It processes sequential data streams and has very effective one shot learning. The data is arranged in Sparse...

## Mutex vs. Semaphore - Part 1

It never ceases to amaze me how often I see postings in forums asking the difference between a semaphore and a mutex. Probably what baffles me more is that over 90% of the time the responses given are either incorrect or missing the key differences. The most often quoted response is that of the “The Toilet Example (c) Copyright 2005, Niclas Winquist” . This summarises the differences as:

• A mutex is really a semaphore with value 1

No, no, and no again....

## Patents and the little guy working at home

April 11, 20191 comment
There are pluses and minuses to having patents. As it stands now the patent system is horribly broken and not doing what the founders intended when they set it up.I have some patents through work and it does look nice to see my name on the patent database. It's kinda like wetting yourself in a dark suit - it gives you a warm feeling but nobody notices.Don Lancaster makes a compelling argument that for the little guy it’s best to avoid the whole mess to the degree possible.

## Public speaking

Public Speaking: This common task goes with embedded system engineering. Pitching a project. Presenting at a conference. Delivering a status report. Teaching. All part of the job.

Stephane Boucher did a v-blog post here last week and is naturally apprehensive about how he did.

If you have not seen it you can catch it here:

First - Stephane - You did fine!

I spent some time (5 quarters, 3 classes a day, computer technology in a tech school) in a classroom and am comfortable in front of a...

## Getting smacked by the long tail of poor design habits

March 25, 2019

In the 80’s I did a fair amount of consulting and enjoyed it greatly.

I would come in, hear what it was the person hiring me wanted; meet with the people that I needed to work with and proceed to toss together a design, parts list, and program. Sometimes I would work with them to get a board into production. I knew my chips and code and could make all kinds of amazing toys.

One of my biggest repeat customers eventually offered a good salary at the same time that my wife was feeling...

## 10 Circuit Components You Should Know

Chefs have their miscellaneous ingredients, like condensed milk, cream of tartar, and xanthan gum. As engineers, we too have quite our pick of circuits, and a good circuit designer should know what's out there. Not just the bread and butter ingredients like resistors, capacitors, op-amps, and comparators, but the miscellaneous "gadget" components as well.

Here are ten circuit components you may not have heard of, but which are occasionally quite useful.

1. Multifunction gate (

## Byte and Switch (Part 1)

Imagine for a minute you have an electromagnet, and a microcontroller, and you want to use the microcontroller to turn the electromagnet on and off. Sounds pretty typical, right?We ask this question on our interviews of entry-level electrical engineers: what do you put between the microcontroller and the electromagnet?We used to think this kind of question was too easy, but there are a surprising number of subtleties here (and maybe a surprising number of job candidates that were missing...

## Data Hiding in C

Strictly speaking, C is not an object-oriented language. Although it provides some features that fit into the object-oriented paradigm it has never had the full object-oriented focus that its successor C++ offers. C++ introduced some very useful concepts and abilities that I miss when I’m developing in ANSI C. One such concept is protected member variables and functions.

When you declare a class in C++ you can also declare member variables and functions as part of that class. Often, these...

Arduino Robotics

Beginner robotics is a series of article chronicling my first autonomous robot build, Clusterbot.  This build is meant to be affordable, relatively easy and instructive.  The total cost of the build is around $50. 1. Arduino robotics - motor control2. Arduino robotics - chassis, locomotion and power3. Arduino robotics - wiring, coding and a test run4. ## How to Build a Fixed-Point PI Controller That Just Works: Part I February 26, 20127 comments This two-part article explains five tips to make a fixed-point PI controller work well. I am not going to talk about loop tuning -- there are hundreds of articles and books about that; any control-systems course will go over loop tuning enough to help you understand the fundamentals. There will always be some differences for each system you have to control, but the goals are the same: drive the average error to zero, keep the system stable, and maximize performance (keep overshoot and delay... ## Endianness and Serial Communication May 20, 20131 comment Endianness is a consideration that is easily overlooked in the design of embedded systems. I myself am amply guilty of this oversight. It’s something you don’t ever have to worry about if you’re only working with a single processor or two processors that have the same endianness. You can even avoid it if you have two processors that have different endianness but never transmit data between themselves that consists of more than one byte. It’s easy to lull... ## Ten Little Algorithms, Part 1: Russian Peasant Multiplication March 21, 20156 comments This blog needs some short posts to balance out the long ones, so I thought I’d cover some of the algorithms I’ve used over the years. Like the Euclidean algorithm and Extended Euclidean algorithm and Newton’s method — except those you should know already, and if not, you should be locked in a room until you do. Someday one of them may save your life. Well, you never know. Other articles in this series: • Part 1: ## Introduction to Microcontrollers - Buttons and Bouncing October 26, 20133 comments What Is A Button? To your hardware, that is. As discussed in Introduction to Microcontrollers - More On GPIO, a button (or key, or switch, or any form of mechanical contact) is generally hooked up to a microcontroller so as to generate a certain logic level when pushed or closed or "active," and the opposite logic level when unpushed or open or "inactive." The active logic level can be either '0' or '1', but for reasons both historical and electrical, an... ## Introduction to Microcontrollers - More On GPIO September 13, 20134 comments Now that we have our LED Blinky program nailed down, it's time to look more closely at outputs, add button/switch inputs, and work with reading inputs and driving outputs based on those inputs. It's ON - No, It's OFF - No, It's ON... I have to confess, I cheated. Well, let's say I glossed over something very important. In our LED Blinky program, we never cared about whether an output '1' or an output '0' turned on the LED. Since we were just... ## Unit Tests for Embedded Code March 5, 201411 comments I originate from an electrical engineering background and my first industry experience was in a large, staid defense contractor. Both of these experiences contributed to a significant lack of knowledge with regards to software development best practices. Electrical engineers often have a backwards view of software in general; large defense contractors have similar views of software and couple it with a general disdain for any sort of automation or ‘immature’ practices. While there... ## Two jobs December 5, 201223 comments For those of you following closely embeddedrelated and the other related sites, you might have noticed that I have been less active for the last couple of months, and I will use this blog post to explain why. The main reason is that I got myself involved into a project that ended up using a better part of my cpu than I originally thought it would. edit - video of the event: I currently have two jobs: one as an electrical/dsp engineer recycled as a web publisher and the other... ## October winner announced November 15, 20121 comment If you are a regular visitor of EmbeddedRelated, you are most likely aware that I have been running monthly draws lately for users of the site who are helping me to clean up the archives by rating threads in the forums section. For the month of August, the member "Cryptoman" won a iPad, and for the month of September, 10 members won$50 each.

For October, the winner of the new iPod Touch is the member with the username "hssathya".

The winner of the next draw will win...

## Behold, the New Comments System!

I have just finished implementing a new system for commenting the blogs.  It uses Ajax extensively, so the page won't reload if you post a comment.  And it is a 'threaded' system, which means that if you post a reply to a comment, it will be attached to it.

What do you think?  I personally love it.  Please go ahead and test it with a quick comment.

Although it is better to be logged in to post a comment, non-registered users can also comment, but they will have...

## Best Embedded Systems pdf Documents Out There

There are thousands of pdf documents related to Embedded Systems available online.  In fact, when I do a search in Google for:

embedded systems filetype:pdf

I get 4,340,000 results! A huge mix of articles, promotional documents, theses, etc.

Out of these 4 millions+ documents, I suspect that there must be at least a few hundreds jewels that deserve to be given more visibility.

Today, I am asking for your help (again!) to build a directory of some of the most useful pdf files out...

## New Discussion Group for Users of TI ARM based MCUs

June 14, 2010

If you are a user of an ARM based TI Microcontroller, please feel free to join the new "TI ARM processors MCUs" discussion group by sending a blank email to: tiarm-subscribe@yahoogroups.com This discussion group will be moderated, so you don't have to worry about receiving more spam than you probably already get. It usually takes a few weeks for a group to gain momentum, so don't worry if the activity level is low for a little while, but make sure to join so you don't miss the good...

## New TI MCU Resource Center

April 1, 2010

I am happy to announce the publication of the new "TI MCU Resource Center" on EmbeddedRelated.com, where TI will regularly add videos and articles to keep you informed on their latest and greatest MCU related products.

To access the new section, you'll find a link in the main menu of the site at the top of the page.

## Blogs Section Now Online!

September 18, 2007

I am happy to announce that the blog section is now online.

Last week, I sent an email to all the members of EmbeddedRelated.com to ask for embedded systems experts who would be interested in blogging on the site. The response was very positive and I have selected 10 highly qualified individuals who will soon be writing here about all sorts of embedded systems related subjects. I am currently in the process of receiving their info (bio, photo, username, etc) and creating their bloggers'...