Go here to sign up for The Embedded Muse.
The Embedded Muse Logo The Embedded Muse
Issue Number 430, September 20, 2021
Copyright 2021 The Ganssle Group

Editor: Jack Ganssle, jack@ganssle.com

   Jack Ganssle, Editor of The Embedded Muse

You may redistribute this newsletter for non-commercial purposes. For commercial use contact jack@ganssle.com. To subscribe or unsubscribe go here or drop Jack an email.

Editor's Notes

SEGGER Embedded Studio cross platform IDE

Tip for sending me email: My email filters are super aggressive and I no longer look at the spam mailbox. If you include the phrase "embedded muse" in the subject line your email will wend its weighty way to me.

Time Dahlin passed along a wonderful reference about the history of electronics. I've not read it all yet, but will.

Analog Devices continues to gobble up competitors. They have now acquired Maxim.

Quotes and Thoughts

Jeff Brown sent this in response to an article about working with one's hands in Muse 425:

In the light of this analysis Carlyle's rhapsody on tools becomes a prosaic fact, and his conclusion—that man without tools is nothing, with tools all—points the way to the discovery of the philosopher's stone in education. For if man without tools is nothing, to be unable to use tools is to be destitute of power; and if with tools he is all, to be able to use tools is to be all-powerful. And this power in the concrete, the power to do some useful thing for man—this is the last analysis of educational truth.  

—Charles H. Ham, Mind and Hand: manual training, the chief factor in education (1900)

Tools and Tips

Please submit clever ideas or thoughts about tools, techniques and resources you love or hate. Here are the tool reviews submitted in the past.

Freebies and Discounts

Sinelabore has kindly offered a copy of their SinelabeRT tool for this month's giveaway. I haven't tried it, but it does look interesting. From their website: "Generate production ready source code from UML state – and activity diagrams! Build robust event-driven embedded real-time software based on hierarchical state machines. Use your favorite modeling tool and generate code from it with an easy-to-use command line tool. Or use the built editor to create state machines within minutes. Automatic model checks warn from design flaws. Configure the generation process according to your needs. Simulate your model. Generate trace code automatically if needed. All major state diagram features like hierarchical states, regions, history, sub-machines … are supported." More info here.

Enter via this link.

Insidious Bugs

Frequent correspondent Prof G. Uribe writes about insidious bugs:

     Thinking of each and every one of the possibilities of error... it is impossible. See below what recently happened in a FIRE CONTROL SCADA SYSTEM...

  • An alarm occurs (first figure, below). In this case, the most horrible thing appears on the console screen: FIRE! But that is not what is wrong here...
  • I decided not to enter the Acknowledge process: Resolutions, Deletions, Dispatching...; what I need is to see all 338 pending issues!
  • I already know that if I activate the tab that says "338 Pending", a window is activated with the sequence of all the errors that have not been recognized (the 338 events in this case)
  • BUT: In the whole system, many icons like the one in the tab in question are activated with TWO (2) CLICKS, and many others ONLY WITH ONE (1) CLICK. Sounds familiar to you?
  • So, during the times, I ended up giving "TWO (2) CLICKS, unintentionally, in almost every case that NEEDS ONLY ONE (1)".
  • Normally, the second click is simply inoperative: It has no repercussions.


  • In the first screenshot (below) it can be seen that I have the mouse properly positioned over the tab, ready to activate it, which I do with TWO (2) CLICKS, when only ONE is needed in this case...


Of the TWO (2) CLICKS, the first one ACTIVATES the presentation on the screen of the aforementioned pending alarm report (see now the Second [2] screenshot, below), and so:

  • So, the function of printing the report is called, BUT THIS INSTALLATION DOES NOT HAVE ANY PRINTERS.
  • Thus, the system makes an UNEXPECTED error, which ends up ABORTING THE ENTIRE FIRE CONTROL SYSTEM. THANKS!
  • The computer must be completely REINITIALIZED, which assumes that the operator has to be  there in person (no remote activities allowed) to prevent this reboot operation from failing as well, INVALIDATING THE SYSTEM COMPLETELY. Sounds familiar too?

Sure, this sequence is one very complicated to think of, in order to prevent this CHAOS... but there are several conceptual programming errors here, including that EVERY CALL to the system has to be validated and an APPROPRIATE action taken in case of ERROR, including preserving a FULL LOG in case of faults. "HANG UP" the system is completely and absolutely INAPPROPRIATE.

  • I do prefer to silence my opinions on the quality of the testing procedures of this software system.

PS: Programmers ALSO will always be between us.

Update on the Better Firmware Faster Seminar

As travel resumes I'm getting a lot of inquiries about my Better Firmware Faster seminar. I haven't done this since February 2020, and have not been on a plane since then. The cessation of travel came almost as a relief after nearly half a century on the road.

Two years ago, just months before the arrival of the pandemic, I wrote a blog about why I wasn't ready to retire. To quote that: "Travel is getting harder and my patience with it is wearing thin. Another night in a hotel, sitting on a plane for too many hours - it all is getting old. I spend a lot of time on the road and have visited over 80 countries on six continents, some many dozens of times. Working with engineers in so many places is fascinating and fulfilling but being away from home is no longer my cup of tea. The getting-there part is a hassle."

We used to joke that our car was an autonomous vehicle. Rather like an old milk horse, it just knew the way to Baltimore-Washington International airport.

Not being on a plane for 18 months, not being in a hotel, not in line for another rental car, has been liberating.

Then there's TSA. I don't miss being injected, inspected, detected, infected, neglected and selected (that from Alice's Restaurant) by those folks.

My current plan is to not travel - not do the seminar - at least through the end of the year. After that? I don't know. When Covid subsides to a more manageable level I may resume doing a few - a very few - Better Firmware Faster seminars a year. It's impossible to pin a date on that.

But those will only be in the USA. I have many friends overseas and fond memories of so many wonderful places. But going to Europe means an overnight flight and a sleepless day of daze that's harder now than at 60 or 50 or 40. Asia is so far away one wonders if being sealed in that aluminum tube for 16 or more hours is a CIA experiment in new forms of "enhanced interrogation".

As things evolve I'll post updates.

A bit off-topic: I'm appalled by the behavior of some airline passengers in recent months. A quote attributed to Ali Ibn Abu Talib comes to mind:

A moment of patience
In a moment of anger
Saves 1000 moments of regrets

On Grammar

I received this email:

ah 2/3 from the world Champions in thier park ah yes the Phila are back and today its the twins Meanwhile the stopper can he stop the nat spo slide tonight the tigers just teed off on the hapless spos

The fightens are back and so is sec 119

That is quoted in its entirety, and is from someone born and raised in the United States. He went to the same high school I attended in Washington, DC. The Jesuits failed him. I'm told this is something about sports.

The author is clearly an idiot. Or, someone who chooses to present himself as one.

Language matters. Email, texting, Twitter and Facebook are swell technologies, but none of them redefine the rules of grammar, all evidence to the contrary. Too many people miss the fact that when the medium is the written word, for better or worse one is judged on the use of the written word. Electronic communications don't have to be particularly literate, but must be grammatical and spell-checked.

Everything we create on-line lives forever. Privacy is dead. Tweet out some meaningless blather and it may come back to haunt you years from now. Employers routinely google (and, gads, I hate verbizing what should be a proper noun) job candidates. Create an on-line identity that shrieks "moron" and you're likely to be categorized as one.

We make choices in life, and one of those choices is how much care and pride we take in how we present ourselves. Men prefer ties to stained T-shirts in interviews, even though a tie is a hideous anachronism that should have gone the way of the fedora. Conversely, a stained T-shirt is the expected attire for an engine rebuild session. (As an ex-hippy freak this pains me to write this, but it's the truth). When we converse, we reserve the word "ain't" for rare emphasis and skip the double negatives - unless one wants to be viewed as an uneducated product of the slums.

The fact is we're being judged all the time, even when your best friend asks "are you alright? You look tired" with concern. When the parent sees chocolate smeared on the guilty youngster's face, that's a judgment that may lead to a time-out, a judgment that will be hard to dismiss even if the kid tries to explain how he had to swim through a river of Hershey's best to save western civilization. And when your incomprehensible email arrives in a co-worker's inbox, be sure that will subtly bias the recipient's view of your expertise and education.

That example email above mirrors too much code. Like this from a project I won't identify:

// pint out ans

I assume "pint" means "print" and "ans" is "answer... but could be wrong. This is an attempt at a sentence as there is a verb of sorts. Normally we do capitalize the first word in a sentence and end with punctuation. The extra effort needed to write this correctly is approximately zero; it only requires the author to take some pride in his work. Though he may get a pass if not a native English speaker, if I were evaluating this code for a hiring position, I'd assume a lack of pride in the work; an unwillingness to try for correctness.

(Our tools are primitive. How I wish for an editor that checked comments, and only comments, for spelling!)

At the very least, poorly-written communication screams "I don't care enough to get this right." If it's an email to your child, you're teaching the unimportance of the written word, which is akin to dismissing the importance of education and erudition.

If it's too much trouble to get the spelling or grammar right, remember Abe Lincoln's admonishment: "It is better to keep one's mouth shut and be thought a fool than to open it and resolve all doubt."

Is proper grammar an anachronism? Do you think that even comments in code should have proper spelling and grammar?

Failure of the Week

From Bobby Werthman:

Have you submitted a Failure of the Week? I'm getting a ton of these and yours was added to the queue.

This Week's Cool Product

Brushless DC motors (BLDC) are increasingly common as they are efficient and offer high torque for reasonable prices. The rotor is comprised of permanent magnets; the stator (typically) has three windings.

But they are complex to use. Really complex. Software must vary the drive to each winding at millisecond rates. Generally Hall-effect sensors are employed to sense the position of the motor to help instruct the code's operation. The software detects the motor's position and does several coordinate transformations (Clarke and Park) before actuating two FETs per winding, often configured as H-bridges. Get these difficult transforms wrong and the motor will stall or burn up. Some of the semiconductor vendors offer canned code, but one does wonder, given how bad so much vendor-supplied firmware is, just how robust the routines are. Each coordinate transform is interrupt-driven, so other code can degrade real-time performance and cause poor operation.

Texas Instruments has introduced the MCF8316A, a single-chip BLDC controller. There's no code other than an initial configuration to set the part up and initiate motor rotation. The chip does all of the complex work.

Interestingly, it doesn't use Hall-effect sensors. The following block diagram shows, highlighted with arrows, how the part measures the current supplied to the motor. That current is influenced by the winding's relationship with the magnets and thus provides position information.

The MCF8316A can supply up to 8A per winding, though power dissipation factors must be observed.

Amazingly, considering the power delivered to the motor, the part is available in a VQFN package that's 1 mm high and 5 x 7 mm. $1.75 in 1000 lot quantities.

Note: This section is about something I personally find cool, interesting or important and want to pass along to readers. It is not influenced by vendors.


Let me know if you’re hiring embedded engineers. No recruiters please, and I reserve the right to edit ads to fit the format and intent of this newsletter. Please keep it to 100 words. There is no charge for a job ad.


Joke For The Week

These jokes are archived here.

This is not a joke. But it should be. Have Nike shoes? Better check to see if they need a firmware update!

About The Embedded Muse

The Embedded Muse is Jack Ganssle's newsletter. Send complaints, comments, and contributions to me at jack@ganssle.com.

The Embedded Muse is supported by The Ganssle Group, whose mission is to help embedded folks get better products to market faster. can take now to improve firmware quality and decrease development time.