Microcontroller communication today?

As personal computer technology continues to evolve, I have wondered if my book is becoming hopelessly obsolete in the area of communications. As levels of circuit integration increase, I have this vague dread that my emphases on efficiency have been trampled down by the march of technology. Even a decade ago Silicon Labs was showing what could be done when the lowly 8051 microcontroller became simply the ‘core’ of an IC with hosts of additional features…analog input and output, huge number of I/O pins, timers almost without number, and a USB interface to keep port pins free…and the cost declined to the point where using older versions of the 8051 with additional wired-in devices became of questionable economic value.

So I am asking for input on the communication section of C and the 8051. I devote several chapters to RS-232 as well as other low-performance protocols. These are extremely efficient, using only a couple of port pins and low enough speed to have no wire routing issues, but you can barely find anything on a PC that is that primitive. Is there still any use for simple microcontroller-to-microcontroller communication, or should all attention shift to USB? As I say in the chapter on USB, it is complex beyond imagination. Admittedly the newer versions of USB demand backwards compatibility with the very slow modes, but the entire process of exchanging a message seems quite cumbersome. Are the newest devices coming with completely pre-programmed USB controllers so the microcontroller designer only leaves off a message for the separate sub-system to handle?

In short, is anyone willing to make comments on the present state of microcontroller communication?

Efficient Design With Microcontrollers (part 2)

Efficient Electronic Hardware [taken from C and the 8051]

  1. Use as few supply voltages as possible. With the right analog devices, a logic supply (usually 5V, but recently going as low as 2.7V) can often suffice. Microphone signals and most sensor signals never get that big. There is no law that all analog processing must be done with ±15V. Often, if the signal goes into an A-D converter and the signal-to-noise ratio is not a problem, it is unnecessary to amplify it to such levels.
  2. Use as little current as you safely can, and design so the high current drains are the shorter duration ones. Continue reading

Efficient Design With Microcontrollers (Part 1)

[I take the next few posts from C and the 8051]

An efficient microcontroller application involves designing with a minimum of external hardware necessary to allow the software to keep up with all of its tasks.

Efficient is not always an intuitive or even obvious concept. With many years’ experience in assisting customers and teaching students, I have strong personal opinions about what constitutes efficient use of microcontrollers and enumerate a few below:

  1. Transfer as much of the project’s functionality as possible to software. Only if you can have just one processor, and it is quite busy, should you allow yourself more hardware.
  2. Use as few port pins as possible.
  3. If you transfer debouncing and calibration to software, you reduce construction costs and simplify hardware troubleshooting. (Debouncing is discussed beginning on page 321.)
  4. Use functions rather than straight-line programming so code can be re-used.
  5. Use tables, interpolation, and simplified calculations with the smallest-sized variables to make code faster and smaller with simpler math operations.

This is what I mean by “efficient.” Next time I will describe what I see as efficient hardware. Some of these ideas date back many years. Do you think they are outmoded with the higher-performance ICs available today?