Channels ▼

Al Williams

Dr. Dobb's Bloggers

Take What You Know

September 24, 2010

My old high school algebra teacher Mr. Harder was a pretty interesting guy -- and I mean that in many different senses of the word. But he had a few phrases that have stuck with me over the years and one of them is "use what you know to find out what you don't know."

Of course, he was talking about math, but I find a lot of application for that saying in embedded systems. For example, consider how a lot of A/D converters work. You charge up a capacitor until a comparator tells you that you are at the same voltage as the input. So now what do you know? You know how long it took to charge the capacitor. Turns out computers are lousy at measuring voltage but great at measuring time so score one for Mr. Harder.

That's an obvious example, of course. But I am always surprised at how many times I see designs using a larger (and more expensive) chip just to get a few extra I/O pins. Unless you have very stringent requirements, you can usually find a way to squeeze some extra out of your CPU.

For example, I often put switches (with a resistor) on the same line as an LED. I can switch the LED pin from an output to an input on a fast interrupt to keep the LED bright enough and still sample the input. Sure, when you push the button, the LED turns on (that's a feature!). But on the plus side, the LED's average power consumption goes down.

Another great trick is when you need a lot of buttons and you aren't worried about reading them "slowly" (after all, how fast can people push buttons?). Most of the CPUs I use these days have some analog channels on them and it isn't unusual to have one or more that I'm not using (or, at least, not using as analog inputs). You can make a voltage divider network with multiple resistors so that when a button is pushed, you get a different voltage. Read the analog voltage and you can detect which button is pushed.

In theory, you could hook up a ridiculous number of buttons like that. In real life, you have to pick cheap resistors and keep the ratios far enough apart. But you can still get a pretty amazing number of switches on one pin like that.

And it isn't just discrete inputs you can apply this maxim to. Consider Microchip's AN828. This clever application note shows how to measure temperature with no extra parts by noting changes in the watchdog timer period due to temperature.

Mr. Harder would be pleased.

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video