Table of Contents

If you have something you think should be added, please E-mail Dr. Cady

A/D Information

Dithering" of A-Ds either as a signal added to the reference or to the signal to be measured is an accepted technique. It works, but only under a tightly constrained set of input and sampling conditions. As well as white noise, a triangle wave can be used as the dithering signal, with the obvious limitations that its period should be an integral number of sampling intervals, the averaging period > should be one dither cycle in length and that the signal to be measured should not change during the averaging period.

If you want to convert at 100 MHZ these techniques are unlikely to be much use to you. At DC they may be worth looking at.

The Voltech PM1000 AC power analyzer uses this technique - open one up and you'll find a lowly 8-bit ADC inside. Their dither signal is a 600 Hz triangle wave, 1 ADC unit p-p. The approach they use is fairly well documented in the service manual for the product.

I have done a bit of experimentation with dither applied to DC signals. In this experiment, I used a 600 Hz triangle wave (same as Voltech), sampling the signal 256 times at a rate of 3840 Hz (60 Hz * 64). The final result was a 16-bit number (fully 16 bits if the input was at the Vrh level). A 16-bit DAC was used to furnish the test signal. Usable resolution increase was 3 to 4 bits, with the lower 4 bits mostly random.

A control case was also set up, using the exact same hardware and software but with the dither turned off. The results seen were consistent with what one would expect from a 8-bit AD; e.g. the low 8 bits of the 16-bit result were meaningless. Plotting scatter diagrams of both test runs (X=DAC input, Y=ADC result) was quite illustrative; the dithered signal plotted a smooth diagonal line, whereas the control run plotted the expected stairstep function. These experiments went a long way towards adding to my understanding of ADC technology, giving visual meaning to terms like "monoticity", "differential non-linearity", "accuracy" and such.

Amusing anecdote: The reason for performing these test runs was to satisfy an engineer on the project who was convinced that adding dither to a DC signal to increase resolution would not work. This guy actually believed that a spec like "+/- 3 LSB error" meant that ANY 3 bits of the ADC result could be in error - not just the low three bits, or a +/- 3-count potential error.

Thanks to: Mark Schultz <mschultz(aatt_sign)>


iButtons are very rugged, about the size of a stack of 4 quarters, and can be had with clock, memory, ID#, etc. They are extremely rugged (stainless steel can) and are being used for building security, hotel door access, US Postal service letter carrier delivery logging, etc. There are only 2 contacts and a variety of rugged, compact connectors are available. IButtons cost a lot less then parallel port dongles. In fact, some dongles have the iButton chip inside them. 
Thanks to: Bruce Boyes <bboyes(aatt_sign)>

App Note 74 Reading and Writing iButtons via Serial Interfaces 

Dallas Semiconductor One-Wire Interface

App Note 74 Reading and Writing iButtons via Serial Interfaces 

If you're just interested in sample code, check out:

Code to talk the Dallas One-Wire protocol is included. Also included is sample C code that implements the bus discovery protocol.

It's actually pretty easy to do the protocol. The timing requirements are fairly lax; you have to add some NOPs even with a 2MHz HC11 to get the right delay. The data sheets include the complete protocol.

Ken Hornstein<kenh(aatt_sign)>

LCD Displays: Drivers and Other Information
LCD Frequently Asked Questions a LCD to a RS232 line
Sites discussing interfacing:


Motorola's XMMAS40G10x comes in a 16 pin dip package, is a micromachined accelerometer reading +/-40G linear, with .1G resolution if I remember right. Output is a voltage, the device requires +5V.

Check out the Analog Devices ADXL05, a great single chip solution with a minimum external part count. Info is available at the analog web site

Infrared Remote Controllers


*   Infra Red Decoding for Soy, Mitsubishi and JVC                 *
*   1/1/90                                                         *
*   The SONY IR packet consists of three repeated words with       *
*   encoding done as variable width bursts of 40khz IR.            *
*   Inter word gap is 26.0ms                                       *
*   Start bit is       2.5ms                                       *
*   One bit is         1.3ms                                       *
*   Zero bit is        0.7ms                                       *
*   Inter bit gap is   0.7ms  (IR is OFF)                          *
*   12 bits per word                                               *
*   MSB First                                                      *
*                                                                  *
*                   1     0     1     0    0    ...                *
*   ___          _      _    _      _    _    _         __.._      *
*      |________| |____| |__| |____| |__| |__| |__...._|     |__   *
*        Start     Bit 1   2     3     4    5        12       Start*
*                                                                  *
*                                                                  *
*   The NEC IR packet consists of a start sequence followed by 32  *
*   data bits encoded as variable width off pulses.  The first 8   *
*   bits are the ID (21) then repeated as complement.  Then comes  *
*   the 8 data bits followed by their complement.  after 40 ms     *
*   comes a repeat sequence.                                       *
*                                                                  *
*   Homeminder uses this encoding with ID = 21                     *
*   Kenwood CD Player                  ID = B6                     *
*                                                                  *
*   Start bit is       9.0ms of on                                 *
*   FIrst off bit      4.5ms of off                                *
*                                                                  *
*   One bit is         1.6ms of off                                *
*   Zero bit is        0.5ms of off                                *
*   Inter bit gap is   0.7ms of on                                 *
*   8 bits ID and 8 Bits data and their complement                 *
*   MSB FIRST                                                      *
*                                                                  *
*                     1    0    1    0    1     1                  *
*   ___         __   ___   _   ___   _   ___   ___       __.._     *
*      |_______|  |_|   |_| |_|   |_| |_|   |_|   |...._|     |__  *
*        Start     Bit 1   2    3    4    5     5        32   rpt  *
*   The MITSUBISHI IR packet consists of three words with encoding *
*   done as variable off periods separated by 500 us bursts        *
*   Inter word gap is 26.0ms                                       *
*   Start bit is       0.5ms                                       *
*   One bit is         2.0ms                                       *
*   Zero bit is        0.7ms                                       *
*   Inter bit gap is   0.5ms                                       *
*   MSB First, First bit is start bit                              *
*                              0     1     0    1       1          *
*   ___   ____   ____   ____   __   ____   __   ____   ____        *
*      |_|    |_|    |_|    |_|  |_|    |_|  |_|    |_|    |_|     *
*      Start               BIT  1    2     3     4      5          *
*                                                                  *
*                                                                  *
*   Ignore first bit then ID = EA then 8 bit code                  *
*                                                                  *
*            0 1110 1010 XXXX XX00 only 6 bits active              *
*          MSB                                                     *
Thanks to: Kevin White <kevinwhite(aatt_sign)>
Links to more information: 
This one is the detailed bit strings for Sony CD IR: 
If you were to want the bit streams for other Sony product remotes or non-Sony ones, this is the general page for device files: 
Thanks to: Deena Renee Weinreb


One source of information is the "PC Keyboard FAQ" found at: 

Philips has an application note: AN434 Connecting a PC keyboard to the I2C-bus 
It can be found at 

Thanks to: Thomas Vegeby <tvegeby(aatt_sign)>

SPI Keyboard Controller
There is an application note (AN1723) for the HC05 that interfaces to an AT keyboard, 
Thanks to: Galen O'Grady, <ogradyg(aatt_sign)>

Links for PC interfaces, including keyboards. 

Controller Area Network (CAN) 

Phillips has several chips - 82c200 
Intel 82527 plus a microcontroller w/can onboard 
Motorola has a 6805 variant and the 68376 
Thanks to: Mike Turner <MikeTurner(aatt_sign)>

SAE J1850

J1850 is not the same as CAN, but the protocols are conceptually similar. The version of J1850 on the 'B32 is actually the General Motors/Chrysler version of the Society of Automotive Engineers protocol, and it runs at 10.4 kbps (average). It uses VPW (variable pulse width) encoding and requires an external transceiver such as the Motorola MC33390 for talking to the single-wire bus. The transceiver runs from automotive battery (+12 volts nominal). Signals on the bus are at ground and about +7 volts.

(This version of J1850 is incompatible with the Ford version, PWM, which uses a two-wire differential physical layer running at 41.6 kbps.)

A number of different physical layers are possible with CAN. DeviceNet for example runs at 250 kbps using an optically isolated differential transceiver, similar to RS-485. Our company has also done DeviceNet and are working on another new proprietary CAN project.

We have done a number of J1850 projects and can answer more questions if needed. So far I'm not yet aware of anyone's using J1850 outside of automotive. CAN appears to be much more widely used--except by Detroit--and there are signs that CAN may replace J1850 there (but very slowly). CAN is used by some of the European automotive manufacturers and also forms the basis of SAE J1939, used in heavy-duty truck and similar applications.

Both protocols are conceptually similar in that they use CSMA/CD/A, carrier sense, multiple-access, collision detection, arbitration. The network is peer-to-peer and any node can start talking when it senses the bus is free. Any other node with something to say will sync up whenever the first one starts to talk. Physically the bus line (or lines) are wired-OR (active-high or active low, depending on which protocol, which wire), with pull-up or pull-down resistors. One bus state is defined as dominant over the other. The message with the highest priority will dominate any message with a lower priority. Each transmitting node monitors the bus, bit-by-bit, over the first section of each data packet, and if it sees that it has lost arbitration, it quickly stops trying to transmit, and converts itself into a potential message receiver. This system of non-destructive collisions tends to optimize bus bandwidth.

CAN is probably a better choice for a general-purpose network (outside automotive) just because it is widely supported by not only Motorola but also many other chip suppliers. But there is no reason in principle that you couldn't use J1850 for a small local area network. Hope this is helpful.

Thanks to: Kerry Berland <kberland(aatt_sign)>

Links to papers on the web
Implementing the J1850 Protocol:
Data base of J1850 devices:
Dearborn Group: J1850 and CAN Products:
Harris Semiconductor Wireless J1850:

RS 485 Interfaces

The Texas Instruments "Data Transmission Circuits" data book has a good example of an isolated RS-485 circuit in chapter 5. 
Thanks to: Kevin Kostelny-Vogts <kevinkv(aatt_sign)>

You might want to take a look at Moto AN990, "A Small-Area Network using the MC68681 DUART" 
Thanks to: Bill Knight <ros(aatt_sign)>

Here are some tips I can think of:
  • EDN magazine had a recent article with many practical RS-485 application tips, especially with regard to proper termination and drop design. Search http://www.ednmag.comfor back articles.
  • RS-485 uses RS-422 signaling (electrical) levels, i.e., differential drivers, and twisted pair cable for tx data and rx data. Be sure to terminate each pair with a resistor equal to the characteristic impedance of the cable at each end of the cable and not at the drops.
  • Keep the drops very short. The usual practice is to run the cable from point-to- point with effective zero length drops.
  • You should be able to run high data rates (19,200 bps+) for long runs (1,000s of feet) with RS-485.

That should handle the hardware considerations, now the real fun begins. The real problems with any communications network(especially multi-drop) revolves around the communications protocol, and especially, procedures for error detection, and retry/correction.

  • Error detection requires taking full advantage of the SCI error detection (i.e., parity, framing, etc) and message checksums to detect content errors.
  • One of the simpler schemes to digest, conceptually, is the master-slave token ring style network. Basically, one 'hc11 is declared master and the others are declared slaves. The master launches a periodic query which is passed around the network ring checking for any traffic from the slaves. All slaves communicate by adding their message and passing it back to the master. The master serves as a message switch and passes the message on to any slave that needs it. This scheme is best suited to low message load but is completely determinant and avoids all problems if collisions. Another big con is that the loss of any station disables the entire network.
  • The other basic scheme is a csma style network where all stations transmit messages as needed. This begs for collisions and leads to many subtle problems related to collision recovery. This scheme is not determinant and is subject to sudden collapse as message traffic increases.
Thanks to: Robert L. (Bob) Smith <bobsmith(aatt_sign)>

Motion Control

Stepper Motors: 
Thanks to: Michael A. Tyborski <lifetel(aatt_sign)>
See AN1285/d about stepper motor and EB192/d about PWM on the Motorola Applications Notes site


RF Transceivers/Transmitters/Receivers for Wireless Communications They have a good selection of parts.

You might also be interested in the X.10 protocol which is defined so as to deliver messages to other devices via your wall power plugs. Your home power grid becomes a local area net.

A good text book on RF, particularly as it relates to the digital world can be had from the folks at tapr 
Thanks to: Clendon S. Gibson <cgibson(aatt_sign)>"

Universal Serial Bus (USB)

I was rather disappointed when I first ran across the basic specs for USB. Reminded me of a personal aphorism: "'Simple network' is a oxymoron." It seems as if the people involved in datacomm networks have never encountered the KISS principle; every network standard I've ever encountered is grotesquely complex.

USB might tout any number of wonderful bandwidth and performance boosts, but it's damn difficult to interface to unless you use a CPU with a lot of horsepower or dedicated USB silicon. I suspect this is one of the reasons it has not caught on as it's proponents said it would - lowly, slow, antiquated RS-232 is a lot easier for a low-end 8-bit micro to deal with.

USB, from what I've seen, appears to be a classic case of "design by committee", a kitchen-sink effort that attempts to make everybody happy but instead makes nobody happy. Why could they have not left well enough alone and adopted a standard that simply addressed the most pressing and irritating limitations of RS-232, to wit the bipolar signal levels (replace with differential drivers) and the speed limitations (solved by adaptation of the former) ? If really pressed, perhaps adaptation of a synchronous serial approach instead of the more hardware-intensive async method used in RS-232.

The present USB standard, with it's star-hub topology and complex packetization requiring complex silicon to process is not all that attractive to designers of cost-sensitive applications. Why should I buy a $100 USB keyboard when I can get the same thing using the traditional keyboard interface for $25? The same applies to other cost-sensitive devices like mice, modems and monitors - virtually every piece of hardware in the PC realm is subject to fierce competition and cost-sensitivity. A simple topology similar to RS-485 would have done the job quite well - I might not want to connect high-bandwidth multimedia peripherals or mass storage devices to it, but it would have been more than adequate for all the low-end commodity items traditionally interfaced to a serial bus, like keyboards, modems, mice, etc.

There is one computer manufacturer that "got it right" a long time ago - the Apple Desktop Bus shares many of the characteristics (except high bandwidth) that I've discussed above. A simple revamp of this approach that took advantage of the higher-speed serial transmission devices available today would have been completely satisfactory.

The emerging "firewire" standard is a much more appropriate place to apply the additional complexity needed to manage high-bandwidth real-time processing; THIS is the appropriate place to attach mass storage and multimedia peripherals. Mixing both low-data-rate, low cost peripherals like mice, keyboards and monitors along with high-data-rate real-time devices like video cameras and mass storage devices would seem to be folly to me.

Thanks to: Mark Schultz <mschultz(aatt_sign)>

Flash Memory

Question: The preliminary electrical specs for the HC912B32 specifiy a flash program voltage in the range 11.0-11.8V. Anyone out there know whether a standard 12V,5% flash programming voltage generator (e.g., MAX734, MAX662A) will cause problems? It sure would be nice to not have to add all the components to tweak the voltage down a notch.

Answer: Typically Flash is very fussy about Vpp. Excess voltage can cause damage. A three terminal adjustable regulator and two resistors will solve the problem properly. Very simple, very easy. If you have 12 volts available you might consider a Shotkey diode in series in the output (about .3 V drop). (A standard silicon diode, 1N4005, will drop about .6-.7 V) I would add a load resistor to prevent the voltage from soaring under no/light load conditions and improve regulation.

Thanks to: Bob Smith <bobsmith(aatt_sign)>

FLASH memory
AN1718 for flash programming code.

Programming flash is not quite as simple as programming EEPROM on an HC11 but it is similar. The timing is such that you need to do it from within - ie if you want to do it through BDM you need to load a program into the RAM of the target device that then loads data into the target RAM and finally programs it into the flash. You can get the flash programming details from the HC12 data sheets and from AN1718.
Thanks to: Jim Sibigtroth <rftp70(aatt_sign)>


I2C Bit Bus

M68HC12 Code for I2C bus

See Phillips Semiconductor for more information. Search for I2C
Thanks to: Shyang Huang <ssh383f(aatt_sign)>

Other links:

Sending clocks through a distributed application is a bad idea. I2C and the SPI are fine for on-board communications, but you'll have endless problems if you start sending the signals through a few meters. The I2C specification says that the maximum line length is under 1 meter. It's possible to use extender circuits, but the maximum length with extenders is 10 meters and they are expensive too. Stay onboard with I2C and use RS-485 for long lines.
There is a reasonably good book that explains the I2C in some detail: 
The I2C Bus - From Theory to Practice 
by Dominique Paret, Carl Fenger 
ISBN 0-471-96268-6 
Thanks to: Kevin J. McCann" <kevinmccann(aatt_sign)>

Check out the "free downloads/customer contributions" page at

Surface Mount Technology

Download case outlines:

Metcal has what they call a "hoof tip" and a "mini hoof tip" for this kind of soldering. They have a good appnote on doing hand soldering on these packages at:
Kitchen oven approach to SMD prototyping...
- Prepare the pads with flux paste only - as much as you like
- Preheat to 425F or 220C with heavy pot inside to provide thermal ballast (use a pizza stone for ballast)
- Put in board for 3 minutes. (ensuring chips don't move whilst moving the board).

Download the hints below as a text file

No problem unless you want to use the really small SMDs and fine pitched ICs! Remember these components are pretty hardy - in production they go through solder waves for several seconds. It's more likely you'll damage the PCB from heat than the chips.

Quality assurance engineers - do not read beyond this point....

Just use a good temperature controlled iron with a relatively fine tip - not too fine though or it will cool too much at the point. I have used regular solder techniques, as well as solder paste techniques - they both work.

It helps to clean the board very well before hand with a flux remover spray. Using silver loaded LMP solder helps because it melts at a lower temperature, and seems to flow much better. (clean the solder too!).

Using an iron it's fiddly trying to hold the component down, heat one end with the iron, and feed the solder in with your third hand!

If you can get it you can use solder paste - just dab it on the pads, drop the component on, and heat it with a hot air gun (slowly at first to dry the solder pasteand glue the chip down otherwise it will blow away!). You can do lots of components at once this way. (beware the components on the bottom side may fall off). Always use NEW solder paste - after a few months the particles com out of suspension and you get lumps and it doesn't run properly.

Fine pitched ICs are more difficult. It helps to use solder paste, a proper dispenser, and a proper SMD hot air knife with appropriate nozzles. Someone recently mentioned a solder wave process using a soldering iron and a largish tip to drag a blob of solder along over the IC legs, relying on surface tension to leave just the right amount of solder on each connection. Sounds like it needs really well cleaned components and boards and lots of practise!

It also helps if you have a few thousand $$$ for a proper SMD soldering station, but plenty of Radio Amateurs do it with a 40Watt Weller and a paint stripping heat gun....

Thanks to:
Mark Harrison 
R&D Engineer
The Bionic Ear Institute
384-388 Albert St., East Melbourne, Victoria, Australia
email: harrisom(aatt_sign)

I did a small amount of this using Pace equipment. The procedure we used is a bit different. Instead of solder, use solder paste. Solder paste is flux with microscopic beads of solder mixed in. The solder paste is held in small cartridges mounted in a gun, like a miniature caulking gun. The paste should be new or kept fresh in a refridgerator. Instead of using a variable heat soldering iron, use a variable heat hot-air-jet. For the hot-air-jet, we used a Pace vacuum desoldering pencil with the presure reversed so that it blows out a jet of hot air. Turn down the pressure and turn up the heat until the jet of air is hot enough to turn tissue paper brown in just a few seconds. Make sure the smt pads are clean and well tinned. If they are not clean and shiny, use solvent and brush to clean, or tin as necessary. Usually the pads are pre-tinned, and at the most all you would need to do is clean the pads. If you tin yourself, It is impotant that there be just a slight amount of tinning. Remove almost all of the solder after tinning. The pads must be flat and smooth. Squeeze the trigger on the paste solder paste gun and apply a liberal amount of paste to all of the pads, not one pad at a time, just squeeze a continuous bead around covering all of the pads and the space between them. Place the IC onto the pads, close to its final position, push it down into the paste; not hard, you don't want to bend any of the leads. It is not necesary for the IC to be perfectly positioned, get it fairly close. The leads must all be in a plane so that when the IC sits on the board all of the leads touch the board. If some are bent you can fix it later. Move the hot-air-jet around the leads so that the paste starts to melt, then go slower and closer, starting at a corner until the solder melts and move the hot-air-jet along around the IC in one operation. It takes some practice to get the distance, speed, and temperature right. As the paste melts, the solder in the paste will melt too. The molten solder has a high degree of surface tension. The force of surface tension of molten solder is much greater than the viscosity of the now molten flux in the paste. The surface tension of the molten solder will pull the IC leads into near perfect alignment with the pads as you go around. After you have practiced a few times it is quick and easy, much faster and easier than soldering through-hole devices. This works for ICs with any number of pins, it does not work for devices with less than for terminals.

If one of the leads was bent so that it did not get wetted properly, use a wooden soldering aide and a temperature controlled iron. Press down on the lead while you melt the solder; hold the lead down with the soldering aide until the solder solidifies. Sometimes a lead will stick up a small distance, but not enough so that it does not get wetted with solder. As long as it is wetted, you probably have good electrical contact and don't need to fix it.

To desolder, Pace has special attachments for the vacumm desoldering pen. Replace the standard desoldering tip with an smt deslodering tip. You need to use the correct size for the device. The tip is build somewhat like a box so that it touches all the leads of the device at once. Place the desoldering tip over the device and wait till all of the solder melts, then just lift up the tip and the device comes away easily. The device is held to the tip by the force of the vacumm. The tip is constructed so that there is a good seal of high temperature rubber, so that the vacumm is strong enough to overcome the force of surface tension from the melted solder and pull the device away.

Thanks to: Mark Rainess <mrainess(aatt_sign)>

The solder paste may not work for you: I never tried it for SMT resistors or capacitors but for the larger chips you need alot of practice to get all the contacts soldered properly with no excess solder all over the place.

Apart from the variable heat soldering iron, you'll need a magnifying glass to check if the pads for ICs are soldered properly, a soldersooker (or solder pump) and solder tape stuff (i can't remember the name but it consists of a reel of sorta woven copper ribbon). and a set of tweezers.

* Soldering resistors and capacitors:

melt a small amount of solder onto one pad 
holding the chip directly above the pad with the tweezers, heat up the soldered pad with the tip of the soldering iron 
place the chip onto the pads, keeping the solder on the pad liquid with the iron 
remove the soldering iron but keep the chip in place for a moment 
let the chip go 
simply solder the opposing side of the chip

* Desoldering resistors and capacitors:

Heat one side of the chip and then the other 
press the chip lightly, with the iron, at each side as you heat it. 
repeat until the chip moves off the pads 
clean up the pads using the solder sooker 
NB: often adding more solder to the pads before desoldering makes it easier

* Soldering small ICs (ie 8 to 16 pin) and SM transistor

This is similar to soldering resistors and capacitors 
put a dab of solder onto a corner pad (eg equiv to pin-0 on an 8-pin) 
put a dab of solder onto an opposing pad (eg equiv to pin-4 on an 8-pin) 
holding the IC in the tweezers, line it up over the pads 
heat first one soldered pad, attaching the IC at one corner 
realign the IC 
heat the second soldered pad to keep the IC in place. 
solder the remaining pads as you would normally 
check for short circuits with the magnifying glass 
use the solder tape to remove these [read on further for info on using the tape 
check for open circuit 
resolder any you find

* Soldering Large ICs

Secure the IC on the PCB in the same way as for a small IC 
Now the fun bit: 
Cover each pin of the IC in masses of solder, making sure that the pads are covered too. 
Use the solder tape to removeall the excess solder 
check connection as for small ICs

* Desoldering ICs

This is NOT fun and there is a chance that the IC won't work afterwards.

The procedure is similar to that of removing resistors and capacitors 
Again put masses of solder on all the pins 
the technique is basically to heat up all the pins so that the solder in liquid around them so that the IC can be moved from position 
Run the iron over all the pins, pressing lightly to the side on the pins as you do so. 
When enough solder is liquid then the pressure will move the IC off the pads

* Using the solder-tape

This is quite difficult to explain without actually showing you:

------------------		put the end of the tape on the pin and
       |     |			pad as shown.
       |     |  <-- pin Heat the end of the tape and the solder /| |\ to be removed simultaneosly | \___/ | <--pad Only the excess solder will be absorbed | ########| into the tape | ########| When no more solder is absorbed or your \######## fingers have been burnt. snip off the ######## used section of tape and continue. ######## <--tape 

Thanks to: J.W.simpson <cnap126(aatt_sign)>

I too have had to deal with small pitch SMT parts, and was left to contracting out this service... Frustrated, I searched for a technique and/or equipment (not too expensive) which would allow me to do this in-house. Finally, I came across some equipment from Metcal which works excellent and is reasonably priced (approx. $1100 CAN / $ 750 US). Which this soldering station, a "mini-hoof" tip, and a little practice using "drag soldering", I am able to hand solder fine pitch parts as low as 7 mils. I have just finished soldering nine HC12 (912B32) and they work excellent. In fact, my clients do not believe that I hand soldered the components... The soldering looks that good. The technique is quite simple and It took me about 10 minutes to learn. The technique is described on the Metcal site at: 
The only comment I can make is that one must use a lot of flux. The technique and the equipment work excellent! By the way, I was at first skeptical, but my distributor (FAI) was able to loan me a test unit. After I used it, I purchased one immediately: 
Station: MX-500S-11 
Hoof Tip: SMTC-0167 ( Fine pitch parts) 
Chisel Tip: STTC-037 (for 1206 resistors, etc) 
Further, I do not work for or with Metcal. I am just a extremely satisfied customer that is now able to hand-solder in-house SMT prototypes! Thanks to: 
Sam Saprunoff 

Infrared Data Association (IrDA) Infrared Interface

Home page of IrDA:
Overview paper:

There are chips and modules out there that handle all the encode & decode for you and are usually fed with NRZ serial data from a UART (or SCI from the controller). A number of manufacturers do these modules, HP to name one - the others escape me at the moment.

One chip I have used recently is the CS8130 from Crystal Semiconductor Corp. in Austin Tx. This chip provides a neat solution in that all you require is the LEDs (drivers included for 2 LEDs), PIN diode (receiver included), a 3.6864MHz crystal and the serial data.

I've had mine operating over 5 - 6 metres by driving the LEDs hard. HP LEDs HSDL4200 series gives you the highest output that I could find per mA of drive current.

Thanks to: Ian Rumble < Ian_Rumble(aatt_sign)>

Decoupling Capacitors

To me, "bypass capacitors and "decoupling capacitors" are the same. I use the names interchangeably.

My suggestion to anybody auto routing a printed circuit board, "ROUTE POWER AND GROUND MANUALLY FIRST". I have come to this conclusion only recently.

I have designed many-many microcontroller based products for a variety of applications. Generally I take a product from concept to prototype, generating all of the hardware, firmware, and application software required. Until recently, I have always hand routed my printed circuit boards (using PADS PCB CAD software). The only times that I have had a noise problem is when someone else routed the PCBs. Two of these times, the boards were auto routed.

Generally, I design with at least one 0.1uF monolithic ceramic "decoupling" capacitor for each I.C. on the PCB (eliminating a few during routing, that I feel are not required because of component placement). In addition I add one 4.7uF solid tantalum capacitor for each 9 or 10 I.Cs. I place 3 capacitors at each power entry and exit from the PCB (0.1uF monolithic ceramic, 1.0uF dipped tantalum, and a 10uF aluminum electrolytic). The decoupling capacitors should be positioned as close to the ground pin as possible with very short connections between it, ground, and power (0.050" minimum width).

Thanks to: David Naviaux <dnaviaux(aatt_sign)>

Hi folks,

If I can make a few comments about decoupling caps as I think so far we have only heard half the story.

Decoupling caps fall into two groups, electrolytic and ceramic.


The two main types in this group are constructed from tantalum or aluminium. Tantalum tends to be more expensive than aluminium but has a wider useful frequency range of operation from LF to several MHZ. This is due to its non wound construction and therefor lower inductance. However they are very intolerant of switch on charge surges and can fail catastrophically. Aluminium are formed by winding a strip of aluminium foil into a coil which tends to produce a higher inductance and therefor a poorer high frequency performance due to the increase in impedance.

Whichever type of electrolytic is chosen its function is to deal with big current demands which are beyond the ability of ceramic caps.


Ceramic caps are placed as close as possible to the IC requiring decoupling and must be connected by the lowest inductance tracks possible.

However there are three types of dielectric commonly found in ceramic capacitors which changes their performance considerably.

C0G Used in small values for tuned circuits and timing. Has lowest impedance >30 MHZ. To expensive to use as decoupling caps in large values.

X7R Good general purpose cap with lowest impedance 10-30 MHZ of about 0.1 ohms. Note that capacitance changes with applied voltage. Fairly cheap in decoupling type values.

Z5U Decoupling use only with lowest impedance around 5MHz of 0.1 ohms. Big changes of capacitance with applied voltage.


As has already been said by many people layout is the most vital part of applying decoupling and caps must be as close as possible to the chip with the lowest inductance/resistance tracks possible connecting them. The best approach is to use a multilayer pcb with internal power and ground planes. However it is surprising what can be done with prototyping bread boards providing a little thought and care is given to tracks and layout.

Thanks to: John Dowson <jdo(aatt_sign)>

A while back I wrote an article on this subject. I hope you find this useful.

Thanks to: Kevin Ross <kevinro(aatt_sign)>

The 10 uF electrolytic is there to provide bulk energy storage for relatively slow changes in current demand. If you look at data for electrolytics, it usually quotes an ESR in milliohms at a given frequency. I'm not sure how ESR increases above this frequency, but it seems safe to assume that it does. (Well, safer than assuming that it doesn't :-) )

Ceramic capacitors on the other hand have an ESR, but it is not so frequency dependent. They tend to be positioned close to individual chips to provide local decoupling for current spikes generated by logic output stages. CMOS and TTL output stages both generate spikes when both output transistors conduct simultaneously for very short periods on changes of state.

Another use for decoupling is to get rid of power supply noise. Switching converters produce ripple at their switching frequency (typically hundreds of kHz) Parallel capacitance goes some way to eliminate this but ESR prevents it from totally eliminating the noise. I presume that this is what stray 0.1uF caps not immediately associated with any IC are doing.

I've been looking at Sanyo OSCON electrolytics for a new design and they're pretty impressive. The down side is that they are very expensive. To give you an example of how effective: one 22uF OSCON and a TDK common mode choke reduce 200 mV of supply noise at 160 kHz to around 20 mV.

Thanks to: Ted Wood"<tedwood2(aatt_sign)>

TI has an application note titled "The Bypass Capacitor in High-Speed Environments" which can be downloaded from their web site:

Thanks to:David Naviaux <dnaviaux(aatt_sign)>

All ceramic caps exhibit some form of piezoelectric effect. G dielectrics (as in COG), also known as NPO, have the lowest piezo effect and the lowest TCC (temperature coefficient of capacitance) of the popularly available ceramics, usually not noticed unless you are looking for it.

X7R, Y5U, and the other dielectrics exhibit much larger piezo effects and TCC. Barium titanate is often used in these dielectrics. That compound is also the main ingredient in most devices deliberately using the piezo effect (grill lighters and sonar transducers). Normally piezo is not a problem unless large forces are involved on the chip and the circuit is high impedance as the piezo voltage is a fairly high impedance signal. Your cap manuf should be able to give some guidance if you have a problem.

Thanks to: Mike Turner <MikeTurner(aatt_sign)>

Noise Suppression

The best solution is always try to remove the noise a the source rather than "patching" up its causes else where. I would suggest trying to reduce the motor noise getting into the HC12 circuitry using the following techniques: 
1) Ensure there is solid ground planes for HC12 and motor power circuitry. Some people opt for separate ground with a filter between the two grounds. 
2) Provide inline filtering for any signal which crosses the boundary between the logic and power circuitry. I tend to use LCL type devices from Murata (EMIFIL series) or AVX (W3F series). 
3) If the motor circuit and the HC12 have common supply rails then filter supply to HC12 using Common mode filter. Murata BNX series or similar provide easy solutions and do a very go job. 
Thanks Gavin Voigt gvoigt(aatt_sign)

SPI Interfaces

Can I share one of my favorite "secret" parts here?

Allegro Microsystems Inc. (formerly Sprague) offers a 32 bit, serial input--parallel output latched driver. It can shift at 5MHz rates; it has a separate 32 bit shift register and 32 bit output latch register, has an OUTPUT ENABLE for the output drivers (so you can hold all outputs OFF until the uController is up and running); it has a SERIAL DATA output so you can cascade multiple chips; it is available in 40 pin DIP or 44 pin PLCC, and comes as either an 40V 150mA open-collector structure or a 30V open-collector 125mA darlington.

In either case, you can't sink full rated load from ALL outputs simultaneously, but you can derate and sink something like 50mA continuously from ALL outputs at once (100mA on the 5832.)

Their part numbers:

UCN5832A	40DIP	Open Collector (single transistor)
UCN5832EP	44PLCC	Open Collector (single transistor)
UCN5833A	40DIP	Darlington output
UCN5833EP	44PLCC	Darlington output
These ARE sole-sourced parts which can be a major drawback. Also, there is no provision for readback. If they had added a sense circuit and a readback Shift-register, the part would be *perfect* :)!

Thanks to: Robert W. Schmidt <bschmidt(aatt_sign)>

For more SPI information see:
(# before a part number indicates a new listing as of 04/12/95)

Atmel              AT25C01      1K bit EEPROM
                   AT25C02      2K  "    "
                   AT25C04      4K  "    "
Catalyst           CAT33C704    3-volt CAT35C704
                   CAT35C704    4K  "  EEPROM with security
                   CAT64LC10    1K  "    "
                   CAT64LC20    2K  "    "
                   CAT64LC40    4K  "    "
Harris             CDP68HC68R1  1K  "   SRAM
                   CDP68HC68R2  2K  "    "
Motorola           MCM2814      2K  "  EEPROM
National           NM25C04      4K  "    "
Ramtron            FM2504(0/1)  4K  "   FRAM
                   FM2516(0/1) 16K  "    "
Xicor              X25020       2K  "  EEPROM
                   X25C02       2K  "    "
                   X25040       4K  "    "
                   X25043       4K  "    "    with reset supervisor
                   X25080       8K  "    "
                   X25160      16K  "    "
                   X25320      32K  "    "
                   X25640      64K  "    "
                   X25128      128K "    "
                   X25401      256  "  NOVRAM

ISO 8859 has a collection on the ISO8859 (Latin-1) character set. Includes ASCII tables, tables of control characters, and links to ISO8879 and UNICODE info.

Voice Synthesizers

Take a look at:

I bought the ISD2590 chip. (Information Storage Devices This is a voice chip which can record and replay. Has an uP bus interface with which you can start and stop the replay of any of different messages in memory. The sound is very natural and they can be stacked. Jameco ( carries them, and they come in ranges of up to 240 seconds of sound. Prices range from $6.25 (10 secs) to $17.95 (240 secs). Also they bring the ease of reprogramability to the design.
Thanks Hector Saint-Hilaire <hs00(aatt_sign)

In case you'd like to update your database of voice chips, we recently introduced a chip set. If you're interested, you can see the chips at 
Randy Carlstrom, RC Systems, Inc.

Wirewrapping Techniques and Information

Saw your comments about PLCC wire-wrap adaptors. I just used one for a 68HC711E9 project which included the adaptor, pullup resistors, crystal and jumpers. It was sold by JDR Microsystems and cost $18 or $19 dollars. They also have the same adaptor with RS232 chip for about $23.00. The pins are on .1" spacing, so I just mount it on a larger perf board.

Thanks: <l.laxdal(aatt_sign)>

Wire wrap is an excellent prototyping method -- I have done many complex prototype boards with it. You do have to handle them carefully - i.e., don't drop them or use them for frizbies and snag and rip off he wires. Buy ww prototype boards with power ground runs built in, some three-level ww sockets and an assortment of pre-stripped wire. Also, be sure to get some of the little plastic labels with pin IDs to stick over the sockets on the back of the board. I hand wrap all of mine, I never found a power wrap tool that I trusted. Once you develop the feel you will find it goes quite smoothly. Carefully done, ww is very reliable and will withstand a lot of abuse, short of ripping the wires off. Digi-key has most of the supplies I have mentioned.

Ironwood and, I think, Aeries make adaptor sockets for PLCC and maybe even QFP chips to adapt them to .1 pin spacing.

Smaller boards are made by Vector can be purchased from Digi-Key. I also found that Fry's Electronics (a CA-based regional consumer electronics chain) sells similar WW perfboards, including a large (10x20" or so) board. This monster sold for around $70.

My personal favorite remains the Vector IEEE-696 (Old S-100 Bus) form factor board. It will take both .3" and .6" DIPS and has built in regulator sites to regulate the standard 696 power to +5 and +/- 12V. I keep an old IEEE-696 chassis and power supply around for testing. I have built entire systems in this form with excellent reliability. I use .1" space flat ribbon cable WW connectors along the board edge for system interconnects and, also, flat-ribbon cable with DIP socket adaptors on the end (available pre- made from Digi-Key) make good interconnects.

Until recently I used only gold-plated WW sockets, but recently tried some tin-plated ones. I was skeptical of connection reliability, but can see no evidence of wrap corrosion with them. Of course thats been in lab a environment.

One tip I would offer for working with PLCC-packaged parts. It is true that WW adapters can be obtained for these types of devices, albeit at a fairly high price. An alternative to this is to buy single-in-line WW socket strips and thru-hole-mount PLCC sockets with narrow pins. Both items are available from Digi-Key. Thru-hole-mount PLCC sockets (at least the ones I've used) have their pins on .100" centers, but the pins themselves are too small and too short to wire-wrap to. However, if one breaks up and arranges the SIP WW sockets to match the hole pattern of the PLCC socket on your perfboard you can simply plug the PLCC socket into the SIP WW socket arrangement and wire-wrap to it. An alternative to the SIP WW sockets is to make up a PLCC socket holder using Vector R39 WW socket pins, also available from DK. The latter approach is a bit more expensive but still less than the $60+ that Ironwood or Emulation Technology would charge for a PLCC WW adapter.

One downside of WW prototyping is that it is VERY noise free and doesn't accurately reflect the noise you will pick in the average PCB trace. Translating a WW design to PCB still has to be done with much care to avoid typical PCB trace-coupling and ground problems.

Thanks: Mark Schultz <mschultz(aatt_sign)> and 
Robert L. (Bob) Smith <bobsmith(aatt_sign)>

NiCad and NiMH Batteries

Here are a couple of pages that describe how to care for NiCad batteries:
Maha NiMH Batteries


If you're interested in robotics (particularly in using Motorola microcontrollers in robotics), I suggest you visit the University of Florida Machine Intelligence Laboratory website at We're a graduate and undergraduate robotics and artificial intelligence research laboratory. Of particular interest to someone getting started in robotics, we teach a class called IMDL (Intelligent Machine Design Lab Students with no prior experience in robotics build a robot during a semester. All their papers are on the website, so you can look there for ideas, sensors, things we know work, and pitfalls to avoid. We'd be happy to hear any ideas you come up with and help with problems you get stuck on. Good luck!
Thanks to: Matt Radlinski mattrad(aatt_sign)
University of Florida
Machine Intelligence Laboratory
and the M68HC12 mailing list

Input Protection Devices

Harris SP720

What is the SP720. It is a 16-pin package with 14 protection circuits. They are like the traditional dual-diode input protection except that they use transistors as SCR's to get very fast inputs. Perhaps a more convenient part is the SP724 which has four protection circuits in a 6-pin SOT-23 package. Both Arrow and Avnet appear to have some, but they want to sell reels of 3K parts. These quad parts are VERY attractive compared with dual diodes in SOT-23. 
Thanks to Gene Zumchak [zumchak(aatt_sign)]

We use the TL7726 to protect I/O lines on our student boards. They work great! We haven't lost a single processor since we started using the board. The clamp current is limited, but the clamping voltage is very low V+-0.2V. Arrow has them for $1.36 or .23 per channel. 
Thanks to Ed Carryer [carryer(aatt_sign)]

Microsemi has devices called TVSarray. These are transient voltage suppressors and come in a variety of packages and supressor types. 


Here are some PDF files and other links to metastability information:

  • Discussion from the Electronic Muse
  • Metastable Response in 5-V Logic Circuits from TI
  • Metastability Considerations - Xilinx App Note XAPP077
  • Metastability Recovery - Xilinx App Note XAPP094 
  • There are many more great references on the web. Try a search using