Path: senator-bedfellow.mit.edu!faqserv
From: [email protected] (Russ Hersch)
Newsgroups: comp.arch.embedded,comp.robotics.misc,comp.realtime,sci.electronics.design,alt.comp.hardware.homebuilt,comp.answers,sci.answers,alt.answers,news.answers
Subject: Embedded Processor and Microcontroller primer and FAQ
Supersedes: <microcontroller-faq/[email protected]>
Followup-To: poster
Date: 12 Sep 1997 10:51:14 GMT
Organization: none
Lines: 4082
Approved: [email protected]
Expires: 27 Oct 1997 10:50:49 GMT
Message-ID: <microcontroller-faq/[email protected]>
NNTP-Posting-Host: penguin-lust.mit.edu
Summary: This article is a primer and general FAQ about embedded
        processors and microcontrollers.
X-Last-Updated: 1997/09/11
Originator: [email protected]
Xref: senator-bedfellow.mit.edu comp.arch.embedded:23801 comp.robotics.misc:17946 comp.realtime:21812 sci.electronics.design:47746 alt.comp.hardware.homebuilt:32931 comp.answers:28027 sci.answers:7063 alt.answers:28882 news.answers:112099

Archive-name: microcontroller-faq/primer
Posting-Frequency: monthly
Last-modified: September 11, 1997

This article is a primer and general FAQ about embedded processors and
microcontrollers.  Included is a collection of information sources.


The following topics are addressed:

      0)  Rantings and ravings (to make the FAQ zero-based)

      1)  ABOUT THIS FAQ
    1.1)  Who put this FAQ together?
    1.2)  How can I contribute to this FAQ?
    1.3)  What newsgroups will this FAQ be posted to?
    1.4)  May I distribute this FAQ or post it somewhere else?

      2)  MICROCONTROLLERS
    2.1)  What is a Microcontroller?
    2.2)  Applications
    2.3)  Flavors

      3)  THE MICROCONTROLLER MARKET
    3.1)  Shipments
    3.2)  Industrial applications
    3.3)  Deciding whose microcontroller to use
    3.4)  The players

      4)  MICROCONTROLLER FEATURES
    4.1)  Fabrication techniques
    4.2)  Architectural features
    4.3)  Advanced Memory options
    4.4)  Power Management and Low Voltage
    4.5)  I/O
    4.6)  Interrupts
    4.7)  Special microcontroller features

      5)  SOME POPULAR MICROCONTROLLERS

      6)  GETTING STARTED WITH MICROCONTROLLERS
    6.1)  Evaluation Kits/Boards
    6.2)  Easy chips to use
    6.3)  Software (cheap and easy)

      7)  MICROCONTROLLER PROGRAMMING LANGUAGES
    7.1)  Machine/Assembly language
    7.2)  Interpreters
    7.3)  Compilers
    7.4)  Fuzzy Logic and Neural Networks

      8)  DEVELOPMENT TOOLS
    8.1)  Simulators
    8.2)  Resident Debuggers
    8.3)  Emulators
    8.4)  Good Stereo System

      9)  FINDING OUT MORE ABOUT MICROCONTROLLERS
    9.1)  Books
    9.2)  Data and Reference Books
    9.3)  Periodicals
    9.4)  USENET newsgroups
    9.5)  Internet sources of information on specific microcontrollers

     10)  MICROCONTROLLER FREE SOFTWARE SOURCES
   10.1)  FTP sites
   10.2)  WEB pages
   10.2)  BBSs
   10.3)  Mailing lists

     11)  SOURCES FOR PARTS


0)  Rantings and ravings

   Disclaimer:  Just so it is understood, the "rantings and ravings" are
   my rantings and ravings.  My readers are refined and sophisticated
   and would never rant or rave.  I, on the other hand, sit in front of
   the TV in torn underwear and drink beer out of the bottle.

   =====> OK, I know this FAQ is long. Very long. Well... it's
   ridiculously long. If you are inconvenienced or strenuously object to
   the posting of this FAQ, please DON'T FLAME me or send me nasty mail.
   Just think what I have to go through. This FAQ takes a lot of my
   time, of which I have very little to spare. I'm open for suggestions.
   I've considered the following:
       - splitting it up into smaller parts
       - eliminating certain sections which may no longer be relevant -
         the web and search engines certainly seem to make a lot of this
         FAQ obsolete (or am I mistaken on this?)
       - not posting it to the newsgroups and just turning this
         whole mess into a [large] web page (the problem with this
         is that I don't have a web site)
       - forgetting about it all together and reminding my kids that I'm
         their father (if you all tell me to go packing, I'll gladly
         fold up shop and devote more time to family, friends, and
         personal hygiene)
   I would be happy to hear ideas on how this FAQ could be improved for
   the reader. If it makes MY job easier, then that's even better.


   OK, with that out of the way, let's get on with it...

   Techno-Wimp, has announced the next generation of their wildly
   successful MIL (Mother-In-Law) transducer.  Dubbed the MIL-II, it now
   includes Techno-Wimp's proprietary new breakthrough technology, MMX
   (Mad Mother-in-law Extensions).  Utilizing patented heuristic
   algorithms, the MIL-II achieves a remarkable performance rating of 15
   million MIPS (Mother-In-law Periphery Scans) per second.  The
   previous WOMF ("Whoa, outta my face!") technology has been updated
   and improved, and together with MMX permits the MIL-II to
   concurrently detect multiple stimuli. This provides the designer with
   the necessary safety margin when using the MIL-II in mission critical
   applications.

   The MIL-II is implemented in Techno-Wimp's patented new fabrication
   technique, 0.25 micron JMOS (Jello Mold On Silicon). The MIL-II also
   features a new packaging technique called PSC/CEC (Plastic Slip
   Covers with Card Edge Connector). PSC/CEC was designed to allow easy
   upgrading to future products in the MIL transducer line.


   I hate it when I'm stupid, and well, I really did it this time. I
   omitted an important source of information - EDN magazine. Always
   full of timely features, important design articles, and the popular
   Design Ideas column. In addition, the 24th edition of the EDN
   microprocessor directory is due out this fall. This directory is an
   invaluable aid for designers. The EDN web site also has a lot of
   important information and software, and is improving all the time.
   Worth taking a look at:  http://www.ednmag.com/


   UMPS (Universal Microcontroller Program Simulator) is a new package
   from Virtual Micro Design in France. It simulates the following
   microcontrollers: 8051, 68HC705, PIC, ST62xx, and the 68HC11. The
   main feature of UMPS is the ability to build a virtual
   microcontroller board on screen by connecting various virtual
   resources (switches, LEDs, displays, A/D, D/A, I2C devices, logic
   functions, etc.) together with the desired processor. Then when
   debugging your software, you can see "real results" without having to
   worry about actually building the hardware.

   Processors that are not supported can be added by the user using
   Virtual Micro Design's toolkit. Additional virtual resources can be
   added by writing your own DLL to support the desired device.

   UMPS includes an integrated assembler/disassembler and debugger,
   extensive documentation on the supported processors.

   This is a very slick package. The English needs a lot of work, but
   the software itself is first class, easy to use, and incredibly
   powerful. For more information:
        Virtual Micro Design
        I.D.L.S.
        Technopole Izarbel
        64210 BIDART
        FRANCE
        ++33-559-438-458   Fax: ++33-559-438-401
        Email: [email protected]


   If you'd like to start learning about microcontrollers, but the
   thought of finding all the parts and then building one scares you,
   take a look at the line of boards available from American Educational
   Systems. They have three boards: AES-51 (8051), AES-11 (68hc11), and
   AES-88 (8088). All three boards are built along the same lines and
   include RAM, ROM, LCD display, keypad, A/D, serial ports, digital I/O
   ports, and logic probe. Also included is a full bookshelf of
   documentation. These boards are ridiculously easy to use and program
   - you can get started experimenting right away.

   This is a perfect system for students and hobbyists. Even
   professionals will find this system useful as a prototyping tool and
   test bed. Highly recommended.

   For more information, contact:
         American Educational Systems
         970 West 17th St.
         Santa Ana, CA  92706  USA
         (800)730-3232 or (714)550-8094   Fax: (714)550-9941


   Check out Peter H. Anderson's web site. Lots of good microcontroller
   interfacing ideas and plans, PIC projects, and miscellaneous
   electronics.
        http://www.access.digex.net/~pha


   Barry Kauler, of GOOFEE fame, has done it again. He's written another
   RTOS, called CREEM. (He must stay up weeks thinking up names for this
   stuff. The names probably come to him in nightmares.) As hes says
   about this new system, "It's very unusual and very easy to use. It is
   probably the easiest way yet that anyone has come up with to do
   concurrent (multitasking) programming on a microcontroller." The
   first version is for the 8051 and is only 560 bytes and will run in a
   chip with only the internal RAM.

   Read the intro page and download CREEM (with source code) from the
   GOOFEE web site:
        http://www.goofee.com/creem.htm


   Point your browser at http://www.debco.com/ and take a look at what
   the gang at Debco has to offer. Lots of parts, kits, and assorted
   computer hardware. The best part is the series of Electronic
   Experimentors Journals that they've made available on-line. Chock
   full of project plans, ham radio topics (antennas and QRP), and
   computer questions and answers, these on-line journals are (IMHO) one
   of the highlights of the web. The gang at Debco should be commended.
   Recommended reading.


   Michael Dolinsky, Ph.D. and his team at Scaryna's Gomel State
   University in Belarus, have been doing research in embedded systems
   development tools. This research proposes methods, tools, and
   application results for integrated design of embedded
   hardware-software systems. Methods include tuning on selected
   hardware and designing hardware in parallel with the software.

   For information on this research, entitled, "High-Level Design Of
   Embedded Hardware-Software Systems",  check out the following web
   sites:
        http://alcatraz.gmd.de:9422/castle/inter/inter.htm
        http://www.internet.no/kennethi/belarus/companies/sprl/
   Their Inter Demo Version is available by anonymous ftp at:
        borneo.gmd.de (129.26.12.20)
        cd pub/SYDIS/inter


   Microtec announces a new quarterly newsletter, "Newbits" as a forum
   for their customers to share ideas:
        http://www.mri.com/newbits/newbits.html


   Take a peak at Magnus Danielson's collection of CPU stuff at:
        http://www.it.kth.se/~e93_mda/electronics/logic/cpu/


   Good news... After reading about the 1 bit powerhouse (MC14500) in
   this FAQ, Christian Brunschen checked out Motorola's web site. "lo
   and behold I found,at
   <URL:http://mot-sps.com/books/sg379/pdf/comcomponents3rev6.pdf>, a
   document called 'Commercial Components' with a remark 'Effective
   date: July 5, 1997'. On page 5 (of 10) there is a line stating
         MC14500BCP      CMOS 1-BIT ICU
   plus some codes, stating that this was a Proprietary device, part of
   something called the 'Phoenix Program', and that the $200 order
   minimum was waived -- but nothing about it being out of production.
   Rather, the'effective date' of july 5, 1997, would indicate that the
   chip is actually being produced as I am writing this. Also, the
   'Phoenix Program' sounds like it could be some sort of 'let's revive
   some chips which we took out or production, just because' (Phoenix
   was the bird who died by fire every evening, and reborn from the
   ashes in the morning, if I recall correctly), so this could very well
   mean that production of this chip has been reinstated. Alas, I have
   not been able to find out any more info on Motorola's site as to what
   this 'Phoenix Program'_actually_ is."


   And you won't believe this, but Scott Finneran ALSO wrote about the
   14500. Looks like we'll have to start a USENET newsgroup on this
   chip.

   Scott writes...

   "The Motorolla 14500 is alive and well down-under. I recently (about
   a year ago) performed some contract work for an Australian power
   station called Loy-Yang 'B'. They have a system manufactured in the
   early 1980's consisting of amongst other things hundreds of modules
   containing 14500 processors. These little beasts run at a whopping
   speed of 1KHz (liquid nitrogen coolant system was not necessary!!)
   and are used to control the start-up sequencing logic for firing up
   the power station boilers and turbines. The processor module in this
   system contained three 4-bit EPROMs in parallel (the early PICs were
   12-bit I believe... spooky!). The first EPROM contained the op-code
   for the processor while the other two contained an 8-bit operand.
   Note: the operand was never fed into the processor (remember it is a
   single bit device) but directly out onto a parallel bus to select
   from a variety of digital inputs and outputs whose value was fed into
   the 1-bit data-bus of the processor.

   "My work involved reverse engineering their compiler to run on an
   MS-DOS platform. The "language" was basically boolean logic equations
   with little features such as software based flip-flops and hardware
   based timers. The compiler produced 14500 assembly language which was
   fed into the assembler that I also wrote as part of the package. With
   only sixteen instructions and 1 addressing mode, the assembler wasn't
   exactly a lot of work to produce.

   The system (and my compiler) are still in use today. The only
   problems are apparently the occasional timing capacitor goes dry in
   the 1KHz clock generator circuit (yes it's a 555)."

   Well, let's all scrap our '51 and hc11 projects and move to the
   14500. Looks like we've got a trend here. Who knows, maybe Motorola
   will release a new generation 2-bit version? :-))


   Embedded.com is the on-line union of three embedded information
   sources, Embedded Systems Programming Magazine, Miller Freeman
   Directories, and the Embedded Systems Conferences. There is no charge
   to users of this site, which contains hands-on articles, editorials,
   and code downloads.
        http://www.embedded.com


   Vasu Srinivasan recommends the book "Using the M68HC11
   Microcontroller: A Guide to Interfacing and Programming" from
   Prentice-Hall. He says this book is useful if you're considering
   using the 68HC11EVB. See section 9.1 in this FAQ more information on
   this book.


   Take care of yourselves,

             Uncle Russ


1)  ABOUT THIS FAQ

1.1)  Who put this FAQ together?

   From time to time, general questions about microcontrollers and
   embedded processors (from beginners to experienced designers) pop up
   in the newsgroups.  It seemed that a general primer/FAQ might be
   useful.

   Much of this document could be considered as a sort of a primer on
   microcontrollers, with some material on embedded processors being
   slowly added.  For those of you with previous experience, sections 9
   and 10 might be of special interest (especially for those of you
   looking for that elusive "free COBOL compiler for the 1802").


1.2)  How can I contribute to this list?

   I please ask that if you have any suggestions or additions, or you
   would like to correct any of the information contained herein, please
   send me a note.
        My Email address is: [email protected]
        My Smail address is:
              Russ Hersch
              HaVradim 11
              Ginot Shomron
              ISRAEL

   Thanks to recent contributors:
         Magnus Danielson
         Marius Gafen (NSI, Israel)
         Michael Dolinsky, Ph.D. (Scaryna's Gomel State University,
            Belarus)
         Barry Kauler (the GOOFEE guy)
         Christian Brunschen
         Michael Markowitz (EDN magazine)
         Mark Meyer (American Educational Systems)
         Philippe Techer (Virtual Micro Design)
         Thomas Vegeby
         Ron Fredericks (editor, Software Forum Newsletter)
         Leticia Smith (webmaster, embedded.com)
         Bo Eriksson (Uppsala University, Sweden)
         Henry Spencer
         Mihai-Costin Manolescu
         Vasu Srinivasan
         Scott Finneran
         Tarjei T. Jensen
         John Doe (Techno-Wimp)


   Very special thanks to Robin L. Getz (National Semiconductor) who
   probably could be considered an honorary co-author of this FAQ. :-)

   Also, thanks to those who have posted questions and to those who have
   posted answers.  Thanks to "all my net friends" who send suggestions
   and encouragement, as well as the occasional question.  Special
   thanks to my mother-in-law, who thankfully doesn't know this FAQ
   exists ;-).


1.3)  What newsgroups will this FAQ be posted to?

   This FAQ will be posted to the following newsgroups:
         comp.arch.embedded
         comp.robotics.misc
         comp.realtime
         sci.electronics.design
         alt.comp.hardware.homebuilt
         comp.answers
         sci.answers
         alt.answers
         news.answers

   I will post once a month - on or about the 26th of each month.


1.4)  May I distribute this FAQ or post it somewhere else?

   I am putting no restrictions on the use of this FAQ except - It must
   be distributed in its entirety with the copyright notice, and no
   financial gain may be realized from it.  After all, I have spent, and
   continue to spend, a lot of time on this.

   For this reason I have appended a copyright statement to the end of
   this FAQ.  I feel pretty silly doing this, but I just want to protect
   myself.  The copyright does not limit the use of this list for
   noncommercial purposes.  I hereby give my permission to one and all
   to pass this list around and post it wherever you want - as long as
   it is not for financial gain.

       Thank you.


2)  MICROCONTROLLERS AND EMBEDDED PROCESSORS


2.1)  What is a Microcontroller?

   A controller is used to control (makes sense!) some process or aspect
   of the environment.  A typical microcontroller application is the
   monitoring of my house.  As the temperature rises, the controller
   causes the windows to open.  If the temperature goes above a certain
   threshold, the air conditioner is activated.  If the system detects
   my mother-in-law approaching, the doors are locked and the windows
   barred.  In addition, upon detecting that my computer is turned on,
   the stereo turns on at a deafening volume (for more on this, see the
   section on development tools).

   At one time, controllers were built exclusively from logic
   components, and were usually large, heavy boxes (before this, they
   were even bigger, more complex analog monstrosities).  Later on,
   microprocessors were used and the entire controller could fit on a
   small circuit board.  This is still common - you can find many [good]
   controllers powered by one of the many common microprocessors
   (including Zilog Z80, Intel 8088, Motorola 6809, and others).

   As the process of miniaturization continued, all of the components
   needed for a controller were built right onto one chip.  A one chip
   computer, or microcontroller was born.  A microcontroller is a highly
   integrated chip which includes, on one chip, all or most of the parts
   needed for a controller.  The microcontroller could be called a
   "one-chip solution".  It typically includes:
         CPU (central processing unit)
         RAM (Random Access Memory)
         EPROM/PROM/ROM (Erasable Programmable Read Only Memory)
         I/O (input/output) - serial and parallel
         timers
         interrupt controller

   By only including the features specific to the task (control), cost
   is relatively low.  A typical microcontroller has bit manipulation
   instructions, easy and direct access to I/O (input/output), and quick
   and efficient interrupt processing.  Microcontrollers are a "one-chip
   solution" which drastically reduces parts count and design costs.


2.2)  What is an embedded controller?

   Hah!  Why not ask an easy question like "Did Adam have a navel?" or
   "Did Eve?"  <Can't say about Adam, but well, Eve probably did.  She
   would have looked pretty silly in a fig leaf, without a navel.>

   Simply (and naively stated) an embedded controller is a controller
   that is embedded in a greater system.  A rigid definition is
   difficult if not impossible to formulate, since the usual response is
   "most embedded controllers are...".  The problem here is "most".  We
   can't seem to shake that word from the definition.  No matter how
   clever you feel your definition is, some wiseguy will come along and
   find an exception, or two, or 50.

   You COULD say that an embedded controller is a controller (or
   computer) that is embedded into some device for some purpose other
   than to provide general purpose computing.  Of course, someone will
   eventually prove you wrong, but who cares?

   A common example of a general purpose computer, would be a typical PC
   clone.  The x86 processor in this machine can't really be considered
   an embedded controller, since the machine is typically used for
   general purpose computing.  However, what is general purpose
   computing?  Take this same PC clone, turn it into a multi-media
   machine, and voila!  You have an appliance - much on the order of a
   microwave oven or television.  Is the x86 processor now considered an
   embedded controller  Or, is the PC clone itself now considered an
   embedded controller, controlling the multi-media peripherals?  Hey -
   I don't know about you, but I'm getting too old for this nonsense.

   Is a microcontroller an embedded processor?  Is an embedded processor
   a microcontroller?  What's the difference between an embedded
   processor and a microcontroller?  Well, today - not much.  With the
   continuing process of high scale integration continuing at a dizzying
   pace, many standard architecture processors are turning up as
   microcontrollers.  A few such examples are the Motorola 68EC300,
   Intel 386 EX, and the IBM PowerPC 403GB.  These chips could be called
   super-microcontrollers.

   So, what's the difference between an embedded processor and a
   microcontroller?  I wouldn't touch that question with a ten foot
   logic probe.

   We might be safe by stating that an embedded processor controls
   something (for example controlling a device such as a microwave oven,
   car braking system, or a cruise missile).  Is this always true?
   Maybe.  Maybe not.  You know, it just doesn't end.

   The main thing is not to get to hung up on precise definitions.
   Black and white?  Hell no, we've got grey scale, dithering,
   diffusion, you name it!  Same thing goes here with embedded
   controllers, just go with the flow.  It all depends on your point of
   view.

   Alright, if you really must insist, we'll take a stab at defining
   what an embedded controller is - realize however that there will be
   many exceptions.  Embedded controllers adhere to a philosophy similar
   to that of microcontrollers, high integration.  By including [many]
   features necessary for the task at hand, an embedded controller
   (processor) can be a powerful yet cost effective solution.  However,
   where a microcontroller [almost by definition] is a computer on a
   chip, an embedded controller might need external components before it
   is considered a "computer."  This is especially true regarding RAM.
   Since including large amounts of RAM (megabytes) on a processor is
   not really practical (due to cost and available silicon real estate)
   and because many embedded controllers are real powerhouses requiring
   large amounts of RAM, the RAM is often external to the processor.


2.3)  Applications

   In addition to the above home monitoring system, embedded processors
   and microcontrollers are frequently found in: appliances (microwave
   oven, refrigerators, television and VCRs, stereos), computers and
   computer equipment (laser printers, modems, disk drives), automobiles
   (engine control, diagnostics, climate control), environmental control
   (greenhouse, factory, home), instrumentation, aerospace, and
   thousands of other uses.  In many items, more than one processor can
   be found.

   Microcontrollers are typically used where processing power isn't so
   important.  Although some of you out there might find a microwave
   oven controlled by a Unix system an attractive idea, controlling a
   microwave oven is easily accomplished with the smallest of
   microcontrollers.  On the other hand, if you're putting together a
   cruise missile to solve the problem of your neighbor's dog barking at
   3 in the morning, you'll probably need to use processors with a bit
   more computing power.

   Embedded processors and microcontrollers are used extensively in
   robotics.  In this application, many specific tasks might be
   distributed among a large number of controllers in one system.
   Communications between each controller and a central, possibly more
   powerful controller (or micro/mini/mainframe) would enable
   information to be processed by the central computer, or to be passed
   around to other controllers in the system.

   A special application that microcontrollers are well suited for is
   data logging.  Stick one of these chips out in the middle of a corn
   field or up in a ballon, and monitor and record environmental
   parameters (temperature, humidity, rain, etc).  Small size, low power
   consumption, and flexibility make these devices ideal for unattended
   data monitoring and recording.


2.4)  Flavors

   Embedded processors come in many flavors and varieties.  Depending on
   the power and features that are needed, you might choose a 4, 8, 16,
   or 32 bit microcontroller.  Standard microprocessors (such as the
   Motorola 68000 or National 32032) are frequently used as powerful
   embedded controllers.  In addition, specialized processors are
   available which include features specific for communications,
   keyboard handling, signal processing, video processing, and other
   tasks.


3)  THE MICROCONTROLLER MARKET

   Thanks to Robin Getz of National Semiconductor for supplying much of
   the material in this section.


3.1)  Shipments

           WorldWide Microcontroller Shipments (in millions of dollars)

           '90   '91   '92   '93   '94   '95   '96   '97   '98   '99   '00
    4-bit 1,393 1,597 1,596 1,698 1,761 1,826 1,849 1,881 1,856 1,816 1,757
    8-bit 2,077 2,615 2,862 3,703 4,689 5,634 6,553 7,529 8,423 9,219 9,715
   16-bit   192   303   340   484   810 1,170 1,628 2,191 2,969 3,678 4,405


                WorldWide Microcontroller Shipments (in Millions)

            '90   '91   '92   '93   '94   '95   '96   '97   '98   '99   '00
    4-bit   778   906   979  1036  1063  1110  1100  1096  1064  1025   970
    8-bit   588   753   843  1073  1449  1803  2123  2374  2556  2681  2700
   16-bit    22    38    45    59   106   157   227   313   419   501   585


                                                  Source: WSTS & ICE - 1994

   If you were wondering why you should bother learning about
   microcontrollers - well, the tables above should fairly scream the
   answer at you.  Microcontrollers will be *BIG* business - we're
   talking piles of cash - billions!

   Notice that even the lowly 4-bit device is holding its own - what use
   is a 16-bit part in a toaster oven?  Also notice that the 8-bit
   market just keeps growing, and will probably continue to grow.  8-bit
   devices account for over half of the market, and will eventually grab
   even more.  Now do you understand why every silicon manufacturer is
   really pushing their 8-bit microcontrollers?


3.2)  Industrial applications

   Average Semiconductor Content per Passenger Automobile (in Dollars)

       '90   '91   '92   '93   '94   '95   '96   '97   '98   '99   '00
    $  595   634   712   905 1,068 1,237 1,339 1,410 1,574 1,852 2,126

                                                    Source: ICE - 1994

   The automotive market is the most important single driving force in
   the microcontroller market, especially at it's high end.  Several
   microcontroller families were developed specifically for automotive
   applications and were subsequently modified to serve other embedded
   applications.

   The automotive market is demanding.  Electronics must operate under
   extreme temperatures and be able to withstand vibration, shock, and
   EMI.  The electronics must be reliable, because a failure that causes
   an accident can (and does) result in multi-million dollar lawsuits.
   Reliability standards are high - but because these electronics also
   compete in the consumer market - they have a low price tag.

   Automotive is not the only market that is growing.  DataQuest says
   that in the average North American's home there are 35
   microcontrollers.  By the year 2000 - that number will grow to 240.
   Consumer electronics is a booming business.


3.3)  Deciding whose microcontroller to use

   When deciding which devices to implement in a design, there are lots
   of things to consider besides who else is using these devices (and
   how many are they using).
     - Can I expect help when I am having problems?
     - What development tools are available and how much do they cost?
     - What sort of documentation is available (reference manuals,
       application notes, books)?
     - Can I work a deal by purchasing more devices at one manufacturer?
       That is, purchasing not only the microcontroller, but also
       peripherals (A/D, memory, voltage regulator, etc.) from one
       company).
     - Do they support OTPs, windowed devices, mask parts?


3.4)  The players


                MICROPROCESSORS
      Rank                   Sales ($ millions)
   1995  1994   Company        1995      1994
   -----------------------------------------------
     1     1    Intel       $10,800    $8,036
     2     3    AMD             881       992
     3     2    Motorola        781       827
     4    11    IBM             468       297
     5     6    TI              219       202
     6     4    Cyrix           210       240
     7     5    Hitachi         188        66
     8     7    NEC             100        82
     9     8    LSI Logic        58        51
    10    10    IDT              45        25

                                       Source: In-Stat Inc.


                MICROCONTROLLERS
      Rank                     Sales ($ millions)
   1995  1994   Company          1995      1994
   -----------------------------------------------
     1     1    Motorola       $1,781    $1,511
     2     2    NEC             1,421     1,208
     3     4    Mitsibishi        945       708
     4     3    Hitachi           899       782
     5     5    Intel             835       605
     6     6    TI                807       534
     7     8    Philips           524       345
     8     7    Matsushita        500       413
     9    10    Lucent (AT&T)     492       275
    10     9    Toshiba           400       328

                                       Source: In-Stat Inc.



4)  MICROCONTROLLER FEATURES

   Thanks to Robin Getz of National Semiconductor who supplied some of
   the material in this section.


4.1)  Fabrication techniques

   CMOS - Complementary Metal Oxide Semiconductor

      This is the name of a common technique used to fabricate most (if
      not all) of the newer microcontrollers.  CMOS requires much less
      power than older fabrication techniques, which permits battery
      operation.  CMOS chips also can be fully or near fully static,
      which means that the clock can be slowed up (or even stopped)
      putting the chip in sleep mode.  CMOS has a much higher immunity
      to noise (power fluctuations or spikes) than the older fabrication
      techniques.


   PMP - Post Metal Programming (National Semiconductor)

      PMP is a high-energy implantation process that allows
      microcontroller ROM to be programmed AFTER final metalization.
      Usually ROM is implemented in the second layer die, with nine or
      ten other layers then added on top.  That means the ROM pattern
      must be specified early in the production process, and completed
      prototypes devices won't be available typically for six to eight
      weeks.  With PMP, however, dies can be fully manufactured through
      metalization and electrical tests (only the passivation layers
      need to be added), and held in inventory.  This means that ROM can
      be programmed late in production cycle, making prototypes
      available in only two weeks.


4.2)  Architectural features

   Von-Neuman Architecure

      Microcontrollers based on the Von-Neuman architecture have a
      single "data" bus that is used to fetch both instructions and
      data.  Program instructions and data are stored in a common main
      memory.  When such a controller addresses main memory, it first
      fetches an instruction, and then it fetches the data to support
      the instruction.  The two separate fetches slows up the
      controller's operation.


   Harvard Architecture

      Microcontrollers based on the Harvard Architecture have separate
      data bus and an instruction bus.  This allows execution to occur
      in parallel.  As an instruction is being "pre-fetched", the
      current instruction is executing on the data bus.  Once the
      current instruction is complete, the next instruction is ready to
      go.  This pre-fetch theoretically allows for much faster execution
      than a Von-Neuman architecture, but there is some added silicon
      complexity.


   CISC

      Almost all of today's microcontrollers are based on the CISC
      (Complex Instruction Set Computer) concept.  The typical CISC
      microcontroller has well over 80 instructions, many of them very
      powerful and very specialized for specific control tasks.  It is
      quite common for the instructions to all behave quite differently.
      Some might only operate on certain address spaces or registers,
      and others might only recognize certain addressing modes.

      The advantages of the CISC architecture is that many of the
      instructions are macro-like, allowing the programmer to use one
      instruction in place of many simpler instructions.


   RISC

      The industry trend for microprocessor design is for Reduced
      Instruction Set Computers (RISC) designs.  This is beginning to
      spill over into the microntroller market.  By implementing fewer
      instructions, the chip designed is able to dedicate some of the
      precious silicon real-estate for performance enhancing features.
      The benefits of RISC design simplicity are a smaller chip, smaller
      pin count, and very low power consumption.

      Among some of the typical features of a RISC processor:
         - Harvard architecture (separate buses for instructions and
           data) allows simultaneous access of program and data, and
           overlapping of some operations for increased processing
           performance
         - Instruction pipelining increases execution speed
         - Orthogonal (symmetrical) instruction set for programming
           simplicity; allows each instruction to operate on any
           register or use any addressing mode; instructions have no
           special combinations, exceptions, restrictions, or side
           effects


   SISC

      Actually, a microcontroller is by definition a Reduced Instruction
      Set Computer (at least in my opinion).  It could really be called
      a Specific Instruction Set Computer (SISC).  The [original] idea
      behind the microcontroller was to limit the capabilities of the
      CPU itself, allowing a complete computer (memory, I/O, interrupts,
      etc) to fit on the available real estate.  At the expense of the
      more general purpose instructions that make the standard
      microprocessors (8088, 68000, 32032) so easy to use, the
      instruction set was designed for the specific purpose of control
      (powerful bit manipulation, easy and efficient I/O, and so on).

      Microcontrollers now come with a mind boggling array of features
      that aid the control engineer - watchdog timers, sleep/wakeup
      modes, power management, powerful I/O channels, and so on.  By
      keeping the instruction set specific (and reduced), and thus
      saving valuable real estate, more and more of these features can
      be added, while maintaining the economy of the microcontroller.


4.3)  Advanced Memory options

   EEPROM - Electrically Erasable Programmable Read Only Memory

      Many microcontrollers have limited amounts of EEPROM on the chip.
      EEPROM seems more suited (becuase of its economics) for small
      amounts of memory that hold a limited number of parameters that
      may have to be changed from time to time.  This type of memory is
      relatively slow, and the number of erase/write cycles allowed in
      its lifetime is limited.


   FLASH (EPROM)

      Flash provides a better solution than regular EEPROM when there is
      a requirement for large amounts of non-volatile program memory.
      It is both faster and permits more erase/write cycles than EEPROM.


   Battery backed-up static RAM

      Battery backed-up static RAM is useful when a large non-volatile
      program and DATA space is required.  A major advantage of static
      RAM is that it is much faster than other types of non-volatile
      memory so it is well suited for high performance application.
      There also are no limits as to the number of times that it may be
      written to so it is perfect for applications that keep and
      manipulate large amounts of data locally.


   Field programming/reprogramming

      Using nonvolatile memory as a place to store program memory allows
      the device to be reprogrammed in the field without removing the
      microcontroller from the system that it controls.  One such
      application is in automotive engine controllers.  Reprogrammable
      non-volatile program memory on the engine's microcontroller allows
      the engine controller program to be modified during routine
      service to incorporate the latest features or to compensate for
      such factors as engine aging and changing emissions control laws
      (or even to fix bugs!!).  Reprogramming of the microcontroller
      could become a standard part the routine engine tune-up.

      Almost every application could benefit from this type of program
      memory - If a modem's hardware supported it, you could remotely
      upgrade your modem from Vfast to V.34, or incorporate new features
      such as voice control or a digital answering machine.


   OTP - One Time Programmable

      An OTP is a PROM (Programmable Read-Only-Memory) device.  Once
      your program is written into the device with a standard EPROM
      programmer, it can not be erased or modified.  This is usually
      used for limited production runs before a ROM mask is done in
      order to test code.

      A OTP (One Time Programmable) part uses standard EPROM, but the
      package has no window for erasing.  Once your program is written
      into the device with a standard EPROM programmer, it cannot be
      erased or modified.  (Well, sort of - any bit that is a one can be
      changed to a zero - but a bit that is a zero cannot be changed
      into a one).

      As product design cycles get shorter, it is more important for
      micro manufacturers to offer OTPs as an option.  This was commonly
      used for limited production runs before a ROM mask in order to
      test code.  However, one problem with Mask ROM is that
      programming, setup, and engineering charges make it economical
      only when the systems manufacturer purchases large quantities of
      identically programmed micros.  Then when you discover THAT bug
      (and find it and fix your code), you have quantities of *old
      buggy* micros around that you have to throw away.  Not to mention
      that lead time (the time when you submit your code to the micro
      manufacture, to the time you receive your micro with your code on
      it) can be at least 8 weeks, and as bad as 44 weeks.


   Software protection

      Either by encryption or fuse protection, the programmed software
      is protected against unauthorized snooping (reverse engineering,
      modifications, piracy, etc.).

      This is only an option on OTPs and Windowed devices.  On Masked
      ROM devices, security is not needed - the only way to read your
      code would be to rip the microcontroller apart with a scanning
      electron microscope - and how many people really have one of
      those?

      Although - and this is a manufacturer's little know fact - when a
      silicon manufacturer makes your ROMed microcontroller - they have
      to test it in order to make sure that it is programmed properly.
      (You should see what a spec of dust does on a mask :-)  In order
      to test this, they must be able to read out the ROM and compare it
      to the code you submitted.  This mode is known as test mode.  IN
      TEST MODE YOU CAN READ OUT THE ROM OF ANY DEVICE.  Anybody who
      tells you different, does not know what they are talking about -
      or is lying.  This is usually not a big deal because test mode is
      ***VERY*** confidential, and (usually) only known by that
      manufacturer (i.e. you cannot put a device into test mode by
      accident).  Test mode is ONLY applicable with ROMed devices.


4.4)  Power Management and Low Voltage

   Low voltage parts

      Since automotive applications have been the driving force behind
      most microcontrollers, and 5 Volts is very easy to do in a car,
      most microcontrollers have only supported 4.5 - 5.5 V operation.
      In the recent past, as consumer goods are beginning to drive major
      segments of the microcontroller market, and as consumer goods
      become portable and lightweight, the requirement for 3 volt (and
      lower) microcontrollers has become urgent (3 volts = 2 battery
      solution / lower voltage = longer battery life).  Most low voltage
      parts in the market today are simply 5 volt parts that were
      modified to operate at 3 volts (usually at a performance loss).
      Some micros being released now are designed from the ground up to
      operate properly at 3.0 (and lower) voltages, which offer
      comparable performance of the 5 volt devices.


      Now, why are voltages REALLY going down on ICs?  Paul K. Johnson
      (of Hewlett-Packard) explains:

      There are a few interesting rules of thumb regarding transistors:
      1)  The amount of power they dissipate is proportional to their
          size.  If you make a transistor half as big, it dissipates
          half as much power.
      2)  Their propagation delay is proportional to their size.  If you
          make a transistor half as big, it's twice as fast.
      3)  Their cost is proportional to the square of their size.  If
          you make them half as big, they cost one quarter as much.

      If you make a transistor smaller, you improve the power, speed,
      and cost.  The only drawback is that they are harder to make.
      (Hey, how hard can it be for HP, IBM, Motorola, National, etc?
      ed.)  Everybody in the world wants to make transistors smaller and
      smaller, the advantages are enormous.

      For years people have been using 5 Volts to power IC's.  Because
      the transistors were large, there was little danger damaging the
      transistor putting this voltage across it.  However, now that the
      transistors are getting so small, 5 Volts will actually fry them.
      The only way around this is to start lowering the voltage.  This
      is why people are now using 3 (actually 3.3) Volt logic, and lower
      in the next few years.  It isn't just because of batteries.


   Brownout Protection

      Brownout protection is usually an on-board protection circuit that
      resets the device when the operating voltage (Vcc) is lower than
      the brownout voltage.  The device is held in reset and will remain
      in reset when Vcc stays below the Brownout voltage.  The device
      will resume execution (from reset) after Vcc has risen above the
      brownout Voltage.


   Idle/Halt/Wakeup

      The device can be placed into IDLE/HALT mode by software control.
      In both Halt and Idle conditions the state of the microcontroller
      remains.  RAM is not cleared and any outputs are not changed.  The
      terms idle and halt often have different definitions, depending on
      the manufacturer.  What some call idle, others may call halt, and
      vice versa.  It can be confusing, so check the data sheet for the
      device in question to be sure.

      In IDLE mode, all activities are stopped except:
        - associated on-board oscillator circuitry
        - watchdog logic (if any)
        - the clock monitor
        - the idle timer (a free running timer)
      Power supply requirements on the microcontroller in this mode are
      typically around 30% of normal power requirements of the
      microprocessor.  Idle mode is exited by a reset, or some other
      stimulus (such as timer interrupt, serial port, etc.).  A special
      timer/counter (the idle timer) causes the chip to wake up at a
      regular interval to check if things are OK.  The chip then goes
      back to sleep.

      IDLE mode is extremely useful for remote, unattended data logging
      - the microprocessor wakes up at regular intervals, takes its
      measurements, logs the data, and then goes back to sleep.

      In Halt mode, all activities are stopped (including timers and
      counters).  The only way to wake up is by a reset or device
      interrupt (such as an I/O port).  The power requirements of the
      device are minimal and the applied voltage (Vcc) can sometimes be
      decreased below operating voltage without altering the state
      (RAM/Outputs) of the device.  Current consumption is typically
      less than 1 uA.

      A common application of HALT mode is in laptop keyboards.  In
      order to have maximum power saving, the controller is in halt
      until it detects a keystroke (via a device interrupt).  It then
      wakes up, decodes and sends the keystroke to the host, and then
      goes back into halt mode, waiting either for another keystroke, or
      information from the host.


   Multi-Input Wakeup (National Semiconductor)

      The Multi-Input WakeUp (MIWU) feature is used to return (wakeup)
      the microcontroller from either HALT or IDLE modes.  Alternately
      MIWU may also be used to generate up to 8 edge selectible external
      interrupts.  The user can select whether the trigger condition on
      the pins is going to be either a positive edge (low to high) or a
      negative edge (high to low).


4.5)  I/O

   UART

      A UART (Universal Asynchronous Receiver Transmitter) is a serial
      port adapter for asynchronous serial communications.


   USART

      A USART (Universal Synchronous/Asynchronous Receiver Transmitter)
      is a serial port adapter for either asynchronous or synchronous
      serial communications.  Communications using a USART are typically
      much faster (as much as 16 times) than with a UART.


   Synchronous serial port

      A synchronous serial port doesn't require start/stop bits and can
      operate at much higher clock rates than an asynchronous serial
      port.  Used to communicate with high speed devices such as memory
      servers, display drivers, additional A/D ports, etc.  Can also be
      used to implement a simple microcontroller network.


   SPI (Motorola)

      An SPI (serial peripheral interface) is a synchronous serial port.


   SCI

      An SCI (serial communications interface) is an enhanced UART
      (asynchronous serial port).


   I2C bus - Inter-Integrated Circuit bus (Philips)

      The I2C bus is a simple 2 wire serial interface developed by
      Philips.  It was developed for 8 bit applications and is widely
      used in consumer electronics, automotive and industrial
      applications.  In addition to microcontrollers, several
      peripherals also exist that support the I2C bus.

      The I2C bus is a two line, multi-master, multi-slave network
      interface with collision detection.  Up to 128 devices can exist
      on the network and they can be spread out over 10 meters.  Each
      node (microcontroller or peripheral) may initiate a message, and
      then transmit or receive data.  The two lines of the network
      consist of the serial data line and the serial clock line.  Each
      node on the network has a unique address which accompanies any
      message passed between nodes.  Since only 2 wires are needed, it
      is easy to interconnect a number of devices.


   MICROWIRE/PLUS (National Semiconductor)

      MICROWIRE/PLUS is a serial synchronous bi-directional
      communications interface.  This is used on National Semiconductor
      Corporation's devices (microcontrollers, A/D converters, display
      drivers, EEPROMS, etc.).


   CAN & J1850

      CAN (Controller Area Network) is a mutiplexed wiring scheme that
      was developed jointly by Bosh and Intel for wiring in automobiles.
      J1850 is the SAE (Society of Automotive Engineers) multiplexed
      automotive wiring standard that is currently in use in North
      America.

      Both of these groups have the "NOT INVENTED HERE" syndrome and
      refuse to work with each other's standard. The standards are quite
      different and are not compatible at all.

      The CAN specification seems to be the one that is being used in
      industrial control both in North American and Europe.  With lower
      cost microcontrollers that support CAN, CAN has a good potential
      to take off.

      Ken Tindell points out that although the J1850 and CAN buses are
      incompatible at an electrical level, they are almost the same at a
      higher level. They both use short-frame priority arbitration based
      on 29-bit identifiers. At a software-level there is hope. Isn't
      there always?


   Analog to Digital Conversion (A/D)

      Converts an external analog signal (typically relative to voltage)
      and converts it to a digital representation.  Microcontrollers
      that have this feature can be used for instrumention,
      environmental data logging, or any application that lives in an
      analog world.

      The various types of A/D converters that can be found:

      Succesive Approximation A/D converters -- This the most common
      type of A/D and is used in the majority of microcontrollers.  In
      this technique, the converter figures out each bit at a time (most
      significant first) and finds if the next step is higher or lower.
      This way has some benefits - it takes exactly the same amount of
      time for any conversion - it is very common - (and therefore very
      cheap).  However it also has some disadvantages - it is slow - for
      every bit it takes at least one clock cycle - the best an 8-bit
      A/D can do is at least 8 clock cycles (and a couple for
      housekeeping).  Because it takes so long - it is a power hog as
      compared to the other types of A/Ds.

      Single Slope A/D converters -- This is the type of converter that
      you can build yourself (if the microcontroller has a couple of
      analog blocks on it).  Your single slope A/D converter would
      include Analog Mux / comparator / timer (8-bit timer = 8 bit A/D -
      16-bit timer = 16 bit A/D) with input capture and a constant
      current source.  The only microcontroller (that I know of) that
      has all of this on it is National's COP888EK.

      First Step is to clear the timer to 0000 and then start it.  It is
      a simple matter to hang an external capacitor, and charge it with
      the constant current source (linearly because of the current
      source) when the voltage on the cap exceeds the sampling voltage,
      the comparitor toggles, stops the timer - and voila - you have the
      voltage in uSecs - with 16-bit accuracy.  The only drawback is you
      can't really expect 16 bits (14 yes) - the conversion time varies
      quite a bit, and it is SLOW.

      Delta-Sigma A/Ds converters -- This type of A/D converter is found
      on higher-end DSPs.  These are the hardest to understand of the
      A/Ds because it just makes a best guess (a little National
      Semiconductor humor here :-).  Delta sigma A/Ds can be broken down
      into two main parts.

      The modulator which does the A/D conversion and the filter, which
      turns the output of the modulator into a format suitible for the
      microcontroller (or DSP).

      The modulator is very simple - it just compares the input voltage
      to the average of the last 100 (or so) modulator outputs and
      decides if the input is higher or lower than the average. This
      happens millions of times a second, resulting in a high speed
      single-bit datastream of 1s and 0s who's *average* is equal to the
      input voltage. Becuse the ouput is only a one or a zero, there are
      very few sources of errors. This is the main reason that
      delta-sigma A/Ds are **very** accurate.

      The filter comes after the modulator ... and this filter is
      essentially a big DSP block.  It must take the very high speed
      stream of ones and zeros and turn it into a slower speed stream of
      16-bit (or greater) words to be used by the microcontroller.  This
      process is called decimation and the filter is often called a
      "comb filter".  Another digital filter follows this stage and
      rejects unwanted frequencies.  This filter performs a similar
      function to the anti-aliasing filter required in many traditional
      A/D appliactions, but it does it at an unprecedented level of
      performance and at low cost.  This is the other major benefit of
      delta-sigma A/Ds.

      Flash A/D -- This is the basic architecure for the fastest
      category of A/Ds.  The flash converter involves looking at each
      level that is possible and instantaneously saying what level the
      voltage is at.  This is done by setting up comparators as
      threshold detectors with each detector being set up for a voltage
      exaclty 1 LSB higher than the detector below it.  The benefit of
      this architecture is that with a single clock cycle, you can tell
      exactly what the input voltage is - that is why it is so fast.
      The disadvantage is that to achieve 8-bit accuracy you need 256
      comparators and to achieve 10-bit accuracy you need 1024
      comparators. To make these comparators operate at higher speeds,
      they have to draw LOTS of current, and beyond 10 bits, the number
      of comparators required becomes totally unmanageable.


   D/A (Digital to Analog) Converters

      This feature takes a Digital number and converts it to a analog
      output. The number 50 would be changed to the analog output of
      (50/256 * 5Volts) = .9765625V on a 8-bit / 5 Volt system.


   Pulse width modulator

      Often used as a digital-to-analog conversion technique.  A pulse
      train is generated and regulated with a low-pass filter to
      generate a voltage proportional to the duty cycle.


   Pulse accumulator

      A pulse accumulator is an event counter.  Each pulse increments
      the pulse accumulator register, recording the number of times this
      event has occurred.


   Input Capture

      Input Capture can measure external frequencies or time intervals
      by copying the value from a free running timer into a register
      when an external event occurs.


   Comparator

      One or more standard comparators can sometimes be placed on a
      microcontroller die.  These comparators operate much like standard
      comparators however the input and output signals are available on
      the microcontroller bus.


   Mixed (Analog-Digital) Signal

      We live in an analog world where the information we see, hear,
      process, and exchange with each other, and with our mechanical and
      electronic systems, is always an analog quantity - pressure,
      temperature, voltage, current, air and water flow are always
      analog entities.  They can be digitized for more efficient
      sorting, storage and transmittal, but the interface - the input
      and output - is almost always analog.  Thus the essence of analog
      electronics lies in sensing continuously varying information,
      shaping and converting it for the efficiency of digital processing
      and transmission, and reshaping the digital data to an analog
      signal at the other end.

      Mixed analog-digital devices are being used increasingly to
      integrate the complex functions of high-speed telecommunications,
      or the real-time data processing demanded by industrial control
      systems and automotive systems.  Start looking for
      microcontrollers that have analog comparators, analog
      multiplexers, current sources, voltage doublers, PLL (Phase Lock
      Loops) and all sorts of peripherals that you thought were analog
      only.


4.6)  Interrupts


   Polling

      Polling is not really a "feature" - it's what you have to do if
      your microcontroller of choice does not have interrupts.
      Polling is a software technique whereby the controller continually
      asks a peripheral if it needs servicing.  The peripheral sets a
      flag when it has data ready for transferring to the controller,
      which the controller notices on its next poll.  Several such
      peripherals can be polled in succession, with the controller
      jumping to different software routines, depending on which flags
      have been set.


   Interrupts

      Rather than have the microcontroller continually polling - that
      is, asking peripherals (timers / UARTS / A/Ds / external
      components) whether they have any data available (and finding most
      of the time they do not), a more efficient method is to have the
      peripherals tell the controller when they have data ready.  The
      controller can be carrying out its normal function, only
      responding to peripherals when there is data to respond to.  On
      receipt of an interrupt, the controller suspends its current
      operation, identifies the interrupting peripheral, then jumps
      (vectors) to the appropriate interrupt service routine.

      The advantage of interrupts, compared with polling, is the speed
      of response to external events and reduced software overhead (of
      continually asking peripherals if they have any data ready).

      Most microcontrollers have at least one external interrupt, which
      can be edge selectible (rising or falling) or level triggered.
      Both systems (edge/level) have advantages.  Edge - is not time
      sensitive, but it is susceptible to gitches.  Level - must be held
      high (or low) for a specific duration (which can be a pain - but
      is not susceptible to glitches).

      Interrupts are critical when you are controlling anything (this is
      what microcontrollers do).  If you misunderstand any of the terms,
      and design your systems with the way you *think* it works - not
      the way it *really* works - it will effect system performance.  It
      may also work for a very long time with no problems, and then all
      of a sudden fail.  Check your datasheets - these descriptions are
      the correct ones (or are at least supposed to be), but that does
      not mean that they are agreed to by the silicon manufacturers, (or
      by the marketing guys that they employ, and who write parts of the
      data sheets.)

      4 bit microcontrollers usually have either a polling or
      non-vectored type of interrupt scheme.  8 and 16 bit
      microcontrollers usually have some type of vectored arbitration
      type of interrupt scheme.  32 bit microcontrollers usually will
      have some type of vectored priority type of interrupt scheme.
      Again, check your data sheet to make sure - or ask a
      manufacturer's rep if you aren't sure.


   Maskable Interrupts

      A maskable interrupt is one that you can disable or enable
      (masking it out means disabling the interrupt), whereas
      non-maskable interrupts you can't disable.  The benefit of
      maskable interrupts is that you can turn off a particular
      interrupts (for example a UART) during some time critical task.
      Then, those particular interrupts will be ignored thus allowing
      the microcontroller to deal with the task at hand.  Most
      microcontrollers (as well as most microprocessors) have some type
      of Global Interrupt Enable (GIE) which allows you to turn off (or
      on) all of the maskable interrupts with one bit.  NOTE:  GIE
      usually does not effect any NMI (Non-Maskable Interrupts)


   Vectored Interrupts

      Simple (non-vectored) interrupts is one of the simplest interrupt
      schemes there is (Simple = less silicon = more software = slower).
      Whenever there is an interrupt, the program counter (PC) branches
      to one specific address.  At this address, the system designer
      needs to check the interrupts (one at a time) to see which
      peripheral has caused the interrupt to occur.  Code for this may
      look like (on a COP8):

        IFBIT  UART,PSW      ; If the UART bit has been set
        JP     UART_Recieve  ;  Jump to the UART receive service routine

        IFBIT  T1,PSW        ; If the timer has underflowed
        JP     Underflow     ;  Jump to the underflow service routine

        ...   and so on

      This can be *very* slow - and the time between the interrupt
      happening and the time the service routine is entered, depends on
      how the system designer sets up their ranking.  The peripheral
      that is checked last takes the longest to process.  Most
      microcontrollers that have fewer than 3 - 5 interrupts use this
      method.  The benefit of this is that the system designer can set
      the priority - The most important peripheral gets checked first -
      and you get to decide which peripheral that is.

      Vectored interrupts are a little easier to set up, but the system
      designer has less control of the system (i.e. is dependent on the
      silicon manufacture to make the proper decisions during design of
      the chip).  When an interrupt occurs, the hardware interrupt
      handler automatically branches to a specific address depending on
      what interrupt occurred.  This is much faster than the
      non-vectored approach described above, however the system designer
      does not get to decide what peripheral gets checked first.
      Example (on a National Semiconductor COP888CG):

         Rank         Source          Description        Vector Address
      ------------------------------------------------------------------
           1 (highest) Software       INTR Instruction    01FE - 01FF
           2           External       Pin G0 Edge         01FA - 01FB
           3           Timer T0       Underflow           01F8 - 01F9
           4           Timer T1       T1A / Underflow     01F6 - 01F7
           5           Timer T1       T1B                 01F4 - 01F5
           6           MICROWIRE/PLUS BUSY Goes Low       01F2 - 01F3
           7           UART           Receive             01EE - 01EF
           8           UART           Transmit            01EC - 01ED
           9           Timer T2       T2A / Underflow     01EA - 01EB
          10           Timer T2       T2B                 01E8 - 01E9
          11           Timer T3       T3A / Underflow     01E6 - 01E7
          12           Timer T3       T3B                 01E4 - 01E5
          13           Port L / MIWU  Port L Edge         01E2 - 01E3
          14 (lowest)  Default        VIS Interaction     01E0 - 01E1

      In ROM location 01F8 - 01F9 (2bytes x 8 bits = 16bit address) the
      system designer enters the ROM location of where they want the
      service routine (of the Timer T0 underflow) to be. And so on for
      the rest of the addresses.


   Interrupt arbitration and priority

      Interrupt arbitration and priority - These are two of the most
      misused words when it comes to microcontrollers (microprocessors
      too for that matter) and it's generally because no one knows the
      difference between them.  Priority is not Arbitration.
      Arbitration is not Priority.  Lets see if we can sort out the
      differences.

      Arbitration - If you look at the above chart of the COP888CG, you
      may think the interrupts are prioritized because they have some
      ranking.  They do have rank, but they are not prioritized.  What
      happens is that (in an arbitration scheme) when an interrupt
      occurs, the GIE (Global Interrupt Enable) is cleared.  This
      effectively means that all future interrupts will be delayed until
      the GIE is set.  The GIE becomes set only if the system designer
      sets it in a service routines, or on a RETI (Return from
      Interrupt).

      Quick Example 1 - Timer 1 underflows - the hardware clears the
      GIE, looks at ROM locations 01F6 and 01F7 and jumps to the ROM
      location pointed to by those addresses.  The program does a couple
      things, and then sets the GIE (because the user wants to recognize
      an external interrupt during this service routine).  However while
      in the service routine, Timer 3 underflows.  Although a timer 3
      underflow is lower in rank than a timer 1 underflow, the interrupt
      handler does not care - it simply looks at the GIE, and because it
      is set - handles the interrupt (now we have nested interrupts).
      The Timer 1 underflow service routine will not be completed until
      the Timer 3 underflow is complete.

      Quick Example 2 - Timer 3 underflows at the same time as an
      External interrupt occur.  The one to be handled first is the
      External Interrupt.  If the user sets the GIE, the interrupt
      handler will jump down to the Timer 3 underflow handler.  If the
      user does not set the GIE, the microcontroller handles the
      External interrupt, does a RETI, and the Timer 3 underflow can now
      be handled.


      Priority - In a priority scheme, things are prioritized (well,
      what'd you expect?).  If Timer T0 underflows, the only thing that
      can interrupt that is an external or software interrupt.  If a
      external or software interrupt occurs, the interrupt handler will
      branch to these service routines.  When they are complete, it will
      return to the Timer T0 underflow.

      Quick Example - In the below timing diagram, the following
      happens:
        1) Timer T0 underflows
        2) Timer T2 underflows
        3) An External Interrupt occurs.


      In a priority scheme, the following would happen:

       External Interrupt             |---------|
                                      |         |
       Timer T0 Underflow     |-------|         |------|
                              |                        |
       Timer T2 Underflow     |                        |------|
                              |                               |
       Normal Execution    ---|                               |-------

                              ^   ^   ^         ^      ^       ^
                              |   |   |         |      |       |
       Time ->                |   |   |         |      |       \-T2 Done
                              |   |   |         |      \-------- T0 Done
                              |   |   |         \-------------- Ext Done
                              |   |   \------------------------ Ext Edge
                              |   \----------------------- T2 Underflows
                              \--------------------------- T0 Underflows

      This is what RTOS (Real Timer Operating Systems) do - prioritize
      and handle interrupts.


4.7)  Special microcontroller features


   Watchdog timer

      A watchdog timer provides a means of graceful recovery from a
      system problem.  This could be a program that goes into an endless
      loop, or a hardware problem that prevents the program from
      operating correctly.  If the program fails to reset the watchdog
      at some predetermined interval, a hardware reset will be
      initiated.  The bug may still exist, but at least the system has a
      way to recover.  This is especially useful for unattended systems.


   Digital Signal Processors (DSP)

      Microcontrollers react to and control events - DSPs execute
      repetitive math-intensive algorithms.  Today many embedded
      applications require both types of processors, and semiconductor
      manufacturers have responded by introducing microcontrollers with
      on-chip DSP capability and DSPs with on-chip microcontrollers.

      The most basic thing a DSP will do is a MACC (Multiply and
      ACCumulate).  The number of data bits a DSP can Multiply and
      ACCumulate will determine the dynamic range (and therefore the
      application).

       Bits Fixed/Floating  Dynamic Range   Typical Application

         8     Fixed           48 dB         Telephone-quality voice
        16     Fixed           96 dB         Compact disk (marginal)
        24     Fixed          144 dB         Compact disk
                                                 (room for error)


   Clock Monitor

      A clock monitor can shut the microcontroller down (by holding the
      microcontroller in reset) if the input clock is too slow.  This
      can usually be turned on or off under software control.


   Resident program loader

      Loads a program by Initializing program/data memory from either a
      serial or parallel port.  Convenient for prototyping or trying out
      new features, eliminates the erase/burn/program cycle typical with
      EPROMs, and allows convenient updating of a system even from an
      offsite location.


   Monitor

      A monitor is a program installed in the microcontroller which
      provides basic development and debug capabilities.  Typical
      capabilities of a microcontroller monitor include:  loading object
      files into system RAM, executing programs, examining and modifying
      memory and registers, code disassembly, setting breakpoints, and
      single-stepping through code.  Some simple monitors only allow
      basic functions such as memory inspection, and the more
      sophisticated monitors are capable of a full range of debug
      functions.

      Monitors can either communicate with a dumb terminal or with a
      host computer such as a PC.  Much of the work of the monitor (such
      as user interface) can be offloaded to the host PC running a
      program designed to work with the monitor.  This makes it possible
      to reduce the size and complexity of the code that must be
      installed in the target system.


   MIL transducer

      An MIL transducer is a sophisticated and expensive device that
      detects the presence of your mother-in-law.  Sensitivity settings
      are possible for a full range of stimuli such as:  snarling,
      stomping, nasty faces, and others.  Techno-Wimp (address withheld
      upon request), the sole manufacturer of the MIL transducer, has
      recently announced a major new version which is sensitive enough
      to detect less-tangible stimuli.  This breakthrough product is
      dubbed the MIL-WOMF ("Whoa, outta my face!") transducer.  Both the
      original MIL and the new MIL-WOMF transducers are programmable and
      easy to interface to most microcontrollers.


5)  Some popular microcontrollers

   Some common microcontrollers are described below.  A common question
   is "what microcontroller should I use for...?"  Well, that's a tough
   one.  The best advice would be to choose a chip that has a full set
   of development tools at the price you can afford, and good
   documentation.  For the hobbyist, the Intel 8051, Motorola 68hc11, or
   Microchip PIC would all make suitable choices.


   8048 (Intel)

      The grandaddy of 'em all, the first microcontroller, it all
      started here!  Although a bit long in the tooth and a bit kludgey
      in design (at least by today's standards), it is still very
      popular due to its very low cost, availability, and wide range of
      development tools.

      Modified Harvard architecture with program ROM on chip with an
      additional 64 to 256 bytes of RAM also on chip.  I/O is mapped in
      its own space.


   8051 (Intel and others)

      The 8051, Intel's second generation of microcontrollers, rules the
      microcontroller market at the present time.  Although featuring a
      somewhat bizarre design, it is a very powerful and easy to program
      chip (once you get used to it).

      Modified Harvard architecture with separate address spaces for
      program memory and data memory.  The program memory can be up to
      64K.  The lower portion (4K or 8K depending on type) may reside on
      chip.  The 8051 can address up to 64K of external data memory, and
      is accessed only by indirect addressing.  The 8051 has 128 bytes
      (256 bytes for the 8052) of on-chip RAM, plus a number of special
      function registers (SFRs).  I/O is mapped in its own space.

      The 8051 features the so-called "boolean processor".  This refers
      to the way instructions can single out bits just about anywhere
      (RAM, accumulators, I/O registers, etc.), perform complex bit
      tests and comparisons, and then execute relative jumps based on
      the results.

      Piles of software, both commercial and free, are available for the
      8051 line.  Many manufacturers supply what must be a hundred
      different variants of this chip for any requirement.  Often
      featured in construction projects in the popular hobbyist
      magazines.


   80c196 (MCS-96)

      The third generation of Intel microprocessors, the 80c196 is a 16
      bit processor.  Originally fabricated in NMOS (8096), it is now
      mainly available in CMOS.  Intel Corp. has recently introduced a
      clock-doubled (50MHz) version of the 80c196.

      Among the many features it includes are: hardware multiply and
      divide, 6 addressing modes, high speed I/O, A/D, serial
      communications channel, up to 40 I/O ports, 8 source priority
      interrupt controller, PWM generator, and watchdog timer.


   80186,80188 (Intel)

      These chips are, in essence, microcontroller versions of the 8086
      and 8088 (of IBM/PC fame).  Included on the chip are: 2 channels
      of DMA, 2 counter/timers, programmable interrupt controller, and
      dynamic RAM refresh.  There are several variations including:  low
      power versions, variations with serial ports, and so on.

      One major advantage you gain by using one of these parts is that
      you can use standard PC development tools (compilers, assemblers,
      etc) for developing you applications.  If you are already familiar
      with PC software development, the learning curve will be short,
      since these chips have the same basic architecture as the original
      8088 (as used in the IBM/PC).

      Other advantages include high speed processing, a full megabyte
      addressing space, and powerful interrupt processing.


   80386 EX (Intel)

      The 80386 EX is of course a 386 in microcontroller clothing.
      Included on the chip are: serial I/O, power management, DMA,
      counter/timers, programmable interrupt controller, and dynamic RAM
      refresh.  And of course, all of the power of the 386
      microprocessor.

      One major advantage you gain by using one of these parts is that
      you can use standard PC development tools (compilers, assemblers,
      etc) for developing your applications.  If you are already
      familiar with PC software development, the learning curve will be
      short, since these chips have the same basic architecture as the
      original 8088 (as used in the IBM/PC).

      We're talking power here gang.  Now let's all wait for Microsoft
      to release a version of Windows for embedded and real-time
      applications (Windows ET?  Windows RT?  Windows 2000? :-).


   65C02/W65C816S/W65C134S (Western Design Center)

      The Western Design Center, Inc. is the original owner and designer
      of the 65C02 8-bit microprocessor, used in the original Apple,
      Commodore, and Atari computers. WDC has subsequently developed a
      16-bit MPU (W65C816S), an 8-bit microcontroller (with 65C02 as the
      core) named W65C134S, and a 16-bit microcontroller (with 65C816 as
      core).  These are sold off-the-shelf and the the module technology
      is licensed for use in ASIC designs.

      WDC has recently come out with their .8u 134S and 265S.  There are
      many companies who have or are designing in these parts into their
      board-level system design.  It is expected that this new version's
      performance to be greatly enhanced over the previous 1.2u. They
      are also working with their foundry to add EE and Flash versions
      to their standard product offering.

         The Western Design Center
         2166 East Brown Rd.
         Mesa, AZ  85213
         (602)962-4545  Fax: (602)835-6442
         Email: [email protected]
         Web: http://www.wdesignc.com


   MC14500 (Motorola)

      According to Magnus Danielson, "This is an awesome chip that
      everyone should know by heart... why?  It's so weird compared to
      most other chips... it is really worth reading up on the details.
      It lives its life inside a 16 pin DIP and has 16 instructions."

      Motorola was the manufacturer of this 1 bit powerhouse, which is
      now out of production.  And no, there isn't a C compiler for it.
      Maybe Dave Dunfield (hi Dave ;-) wouldn't mind adding this to his
      C compiler suite.

      Although the MC14500 is a bit bizarre (one bit's worth) and may be
      somewhat limited, it does have a few noteworthy features:
          - RISC processor with 16 instructions (well, what did you
            expect from a 1 bit processor) and one addressing mode
          - no memory boundary (an infinite amount of memory)
          - small package (16 pin)

      Find a copy of the data sheet on this chip and give it a careful
      going over.  I'm sure you'll agree that this was an interesting
      chip and I imagine was probably quite useful.  Seems to me that
      the new wave of scaled-down micros such as the Atmel 2051,
      MicroChip PIC, and Philips 752 probably caused its demise.


   68HC05 (Motorola)

      The 68HC05 (and the earlier 6805) is based loosely on the
      manufacturer's earlier 6800, with some similarities to the 6502.
      It has a Von-Neuman architecture in which instructions, data, I/O,
      and timers all share the same space.  Stack pointer is 5 bits wide
      which limits the stack to 32 bytes deep.  Some members of this
      family include on chip A/D, PLL frequency synthesizer, serial I/O,
      and software security.


   68hc11 (Motorola and Toshiba)

      The popular 68hc11 is a powerful 8-bit data, 16-bit address
      microcontroller from Motorola (the sole supplier) with an
      instruction set that is similar to the older 68xx parts (6801,
      6805, 6809).  The 68hc11 has a common memory architecture in which
      instructions, data, I/O, and timers all share the same memory
      space.

      Depending on the variety, the 68hc11 has built-in EEPROM/OTPROM,
      RAM, digital I/O, timers, A/D converter, PWM generator, pulse
      accumulator, and synchronous and ansynchronous communications
      channels.  Typical current draw is less than 20ma.


   683xx (Motorola)

      The MC68EC300 series incorporates various peripherals into various
      68k family core processors.  These can be called "integrated
      processors".  They are really super-microcontrollers, very high
      performance, capable of high processing speeds, and able to
      address large amounts of memory.  A typical example from this line
      would be the 68331.  It is based on a 68020-like core and has
      about the same processing power as an Intel 80386.


   PIC (MicroChip)

      While watching my 8 year old daughter play with her Barbie Dolls
      (she has about 7 or so, including two that used to belong to Roz,
      my wife, when she was a girl) I noticed an interesting difference
      between the old dolls and the new dolls.  The old Barbies could
      only move their heads sideways, while the new Barbies not only can
      move their heads sideways, but also up and down.  AMAZING - the
      old Barbies were good girls - they could only say no.  The new
      Barbies however can also say yes.  Progress - isn't it wonderful!
      (Not to mention the gymnast Barbie that Dave Perry's daughter got
      for Christmas - "wait'll you see what *she* can do ;-)"

      Which leads me to an amazing fact.  Most everyone thinks of the
      PIC microcontroller line as being a recent introduction.  However,
      they've been popular for over 20 years.  What's the difference?
      Microchip (which was originally [owned by] General Instruments),
      seems to have recreated this microcontroller into a product
      universally regarded as a powerful and cost effective solution.
      The new chips are fabricated in CMOS, some features have been
      added, and new family lines have been introduced.

      The PIC microcontrollers were the first RISC microcontrollers.
      RISC generally implies that simplicity of design allows more
      features to be added at lower cost, and the PIC line is no
      exception.  Although having few instructions (eg. 33 instructions
      for the 16C5X line versus over 90 for the Intel 8048), the PIC
      line has a wealth of features included as part of the chip.
      Separate buses for instructions and data (Harvard architecture)
      allows simultaneous access of program and data, and overlapping of
      some operations for increased processing performance.  The
      benefits of design simplicity are a very small chip, small pin
      count, and very low power consumption.

      PIC microcontrollers are rapidly gaining in popularity.  They are
      being featured more and more often in construction projects in
      popular hobbyist magazines, and are chalking up a good number of
      design wins.  Due to their low cost, small size, and low power
      consumption, these microcontrollers can now be used in areas that
      previously wouldn't have been appropriate (such as logic
      circuits).  They are currently available in three lines:  the
      PIC16C5x, PIC16Cxx, and PIC17Cxx families.

      PSST!  Hey kid!  Want a naked Barbie Doll?!

      Henry Spencer adds the following information:

      The 16C5x line is the descendant of the original PIC design; they
      are a bit limited and clumsy, and have essentially been made
      obsolete by the 16Cxx. The 16Cxx line is the heart of the PIC
      family today, an improved design benefitting from hindsight:
      tidier and more flexible than the 16C5x while retaining its
      simplicity and speed, and providing a wide spread of prices and
      capabilities, including quite a few choices of on-chip
      peripherals.  The 17Cxx line is more ambitious, arguably pushing
      the PIC architecture rather farther than God intended :-) it to
      go; they can do things the 16Cxx line can't, but they're not where
      most of the action is.

      Unusually for microcontrollers, the Microchip PIC databooks
      include complete documentation on how to program the chips --
      information that other manufacturers often will give out only to
      programmer manufacturers, only under nondisclosure, or only at
      gunpoint.


   COP400 Family (National Semiconductor)

      The COP400 Family is a P2CMOS 4-bit microcontroller which offers
      512 bytes to 2K ROM and 32x4 to 160x4 RAM.  Packages are varied
      from  20 to 28 pin (DIP/SO/PLCC).  Functions include Microwire,
      timers counters, 2.3 to 6.0 Volt operation, ROMless modes, and OTP
      support.

      Far from being "old" technology - 4-bit microcontrollers are
      meeting significant market needs in more applications than ever
      before.  The reason for the continuing strength of the COP400
      family is its versatility.  Over 60 different, compatible devices
      are available for a wide range of requirements.  The first under
      $.50 microcontroller set a new standard of value for
      cost/performance.


   COP800 Family (National Semiconductor)

      The COP800 Basic Family is a fully static 8-bit microcontroller,
      fabricated using double metal silicon gate microCMOS technology.
      This low cost microcontroller contains all system timing,
      interrupt logic, ROM, RAM, and I/O necessary to implement
      dedicated control functions in a variety of applications.

      Depending on the device, features include:  8-bit memory mapped
      architect, MICROWIRE serial I/O, UART, memory mapped I/O, many 16
      bit timer/counters with capture registers, a multi-sourced
      vectored interrupt, comparator, WATCHDOG Timer and Clock monitor,
      Modulator/Timer (high speed PWM timer for IR transmission),
      8-channel A/D converter with prescaler and both differential and
      single-ended modes, brownout protection, halt mode, idle mode,
      high current I/O pins with 15mA sink capability, Schmitt trigger
      inputs and Multi-Input-Wake-Up.  Most devices operate over a
      voltage range from 2.5V to 6V.

      High throughput is achieved with an efficient, powerful
      instruction set operating at a 1uS per instruction rate (most
      instructions are single byte/single cycle) including true bit
      manipulation and BCD arithmetic instructions.  Most devices have
      military versions for -55C to +125C.


   HPC Family (National Semiconductor)

      The HPC Family of High Performance microControllers is a 16-bit
      controller fabricated using National's advanced microCMOS
      technology.  This process combined with an advanced architecture
      provides fast, flexible I/O control, efficient data manipulation,
      and high speed computation.

      With its 16x16 bit multiply and 32x16 bit divide, the HPC is
      appropriate for compute-intensive environments that used to be the
      sole domain of the microprocessor.  The architecture is a
      Von-Neuman architecture where the program and data memory share
      the same address space.

      Depending on the family member, features include: 16-bit
      memory-mapped architecture with software configurable external
      address/data bus, Microwire/Plus serial I/O, UART, 16-bit
      timer/counters with input capture capability, High-Level Data Link
      Control (HDLC) for ISO-standard data communications, 8-channel A/D
      converter with prescaler and both differential and single-ended
      modes, power-saving modes, Multiply/Accumulate Unit with built-in
      circular buffer management for low to medium DSP applications,
      software configurable chip-select outputs, 64KB address space
      directly addressable, low-voltage (3.3V) operation.

      High throughput is achieved with an efficient, powerful
      instruction set operating at a 50ns per instruction cycle (most
      instructions are single byte/single cycle) including true bit
      manipulation.  Key applications currently using the HPC family
      include: Anti-lock Braking Systems, Hard Disk drives for mass
      storage, telecommunications, security systems, laser printers, and
      some military applications.


   Project Piranha (National Semiconductor)

      Project Piranha is an internal code name for National
      Semiconductor's embedded RISC processor technology. The Piranha
      technology represents the first RISC processor specifically
      designed for the needs of embedded applications.  This was
      accomplished through examination of the needs of typical embedded
      applications, resulting in a technology which maintains the
      benefits of CISC while providing the performance of RISC.

      Specifically, some of these benefits are:
        compact code density     -->  smaller memory usage/
                                         lower system cost
        small core size          -->  more room for add-on system design
        scalable architecture    -->  a range of performance solutions
      from 8 to 64 bits             with a common architecture
        common instruction set   -->  you only face the learning curve
           and development tools         once
        modular design           -->  designed for easy integration of
                                         specialized functions into
                                         single chip

      This technology is initially being implemented in application
      specific products from National Semiconductor, with the first
      product being available in Q1, 1995.  For further information on
      this technology, please contact Mark Throndson at
      [email protected], or (408) 721-4957.


   Z8 (Zilog)

      A "loose" derivative of the Zilog Z80, the Z8 is actually a
      composite of several different achitectures.  Not really
      compatible with the Z80 peripherals.  Has a unique architecture
      with three memory spaces:  program memory, data memory, and a CPU
      register file.  On-chip features include UART, timers, DMA, up to
      40 I/O lines.  Some versions include a synchronous/asynchronous
      serial channel.  Features fast interrupt response with 37
      interrupt sources.  The Z8671 has Tiny Basic in ROM.  The Super-8
      is just that, a super version of the Z8 with more of everything.

      There seem to be quite a few new members of the zilog Z8 family
      arriving recently, including chips such as the Z86C95 which
      contains a fairly "normal" Z8 but with lots of registers (not the
      normal 128, but 236), and an internal 16 bit harvard architecture
      DSP with two data memory systems and one program memory system,
      and with a 24 bit accumulator.  The DSP unit has its memory
      systems accessible as additional banks of Z8 registers (the exact
      mechanism is very poorly explained in the documentation!) so the
      Z8 can be used to write the data and code for the DSP into the
      DSP's storage and then start the DSP running, etc.  There are the
      usual Z8 peripherals plus A/D and D/A (single channel, accessible
      by the Z8 and DSP CPUs).

      Zilog has also recently come out with some new OTP parts:
                                                   osc
      part#    PDIP   EPROM      RAM       I/O     type         freq
      ---------------------------------------------------------------
      Z86E04  18 pin   1K     124 bytes  14 pins  xtal,LC,      8MHz
                                                  cer res,ext
      Z86E08  18 pin   2K     124 bytes  14 pins  xtal,LC,      12MHz
                                                  cer res,ext
      Z86E30  28 pin   4K     237 bytes  24 pins  xtal,LC,RC,   12MHz
                                                  cer res,ext
      Z86E31  28 pin   2K     124 bytes  24 pins  xtal,LC,RC,   8MHz
                                                  cer res,ext

      All parts come with real configurable RAM stack and interrupt
      systems, two fully programmable timers with interrupts, ROM
      protect, low-EMI modes, two analog comparator inputs with
      interrupt capability, low-power standby modes (as low as 1 uA) and
      45 easy instruction set.  There are no separate chip versions to
      do each of the oscillator types, one chip does them all.


   HD64180 (Hitachi)

      A powerful microcontroller with full Z80 functionality plus:
      extended memory management, two DMA channels, synchronous and
      asynchronous communications channels, timers, and interrupt
      controller.  Some versions of this chip also include EPROM, RAM,
      and PIO (programmable input/output).  It runs Z80 code in fewer
      clock cycles than the Z80 and adds in hardware multiply and a few
      other instructions.  Available in versions that run up to 18MHz.


   TMS370 (Texas Instruments)

      It is similar to the 8051 in having 256 registers,  A and B
      accumulators, stack in the register page, etc.  It also has a
      host of onboard support devices, some members have all of them
      while others have a subset, the peripherals include:  RAM, ROM
      (mask, OTP, or EEPROM), 2 timers (configurable as timers/
      counters/comparators/PWM output), watchdog timer, SCI (syncronous
      serial port), SPI (asynchronous serial port), A/D (8 bit, 8
      channel), interrupts.

      Instruction set is mostly 8 bit with some 16 bit support.  Has
      several addressing modes, 8x8 multiply, 16/8 divide.  Clock speeds
      are up to 20MHz which gives 5MHz for buss access and instruction
      cycles.  Pins mostly TTL compatible (except clock and reset).

      Packages include:
            28,40 DIP
            28 CLCC
            28,44,68 PLCC
            40,64 SDIP

      A developers/proto board is available.  It is a multi layer PCB
      about 12"x7" with RS-232 serial I/O, and monitor as well as access
      to all processor pins on a patch and proto area.  Support software
      includes IBM-PC monitor & loader, cross assembler (absolute only).
      A pure serial TTY monitor is also supported.  Sole power
      requirement is +5v.  Priced is about $500 or so.

      A relocating assembler and linker, and a C compiler are also
      available.


   1802 (RCA)

      This is a real old-timer.  The 1802 is the successor to the 1801
      (2 chip set) which was the first microprocessor implemented in
      CMOS.  Both products were called microprocessors by RCA, not
      microcontrollers.  However, since the 1801 was implemented in CMOS
      and therefore had low power requirements, it was often used in
      microcontroller applications.  The 1802, with its higher level of
      integration and ease of use, could actually be considered a true
      microcontroller.  The 1802 is radiation hard and used in a lot of
      deep space and satellite applications.

      The 1802 has a fairly clean instruction set, a bunch of
      general-purpose registers (more like a Z80 than an 8051 in that
      regard), and separate data and I/O address spaces.


   MuP21 (Forth chip)

      The MuP21 was designed by Chuck Moore, the inventor of Forth.
      With the MuP21, Forth can compile into machine code and still be
      Forth, because the machine code IS Forth.  The MuP21 freaks out at
      100 MIPS while consuming only 50 milliwatts.  Not only that, the
      chip includes a video generator, has only about 7000 transistors
      (that's right, 7000 and not 7,000,000), and costs about $20.

      The assembler on this chip is a sort of dialect of Forth, as the
      CPU is modeled after the Forth virtual machine.  MuP21 is a
      MINIMAL Forth engine.  In fact MuP21 was designed to run OKAD
      (Chuck Moore's VLSI CAD softare), and OKAD was designed to run on
      MuP21.  OKAD was run on a 486 to design MuP21, and MuP21 was
      designed to have just enough hardware to run OKAD about ten times
      as fast as a 486 on a very cheap chip (the MuP21).  That's the
      reason for the MuP21's on-chip video generator coprocessor.  The
      CPU programs the video generator and then just manipulates the
      video buffer.  It is composite video out, so it only needs one
      pin.  MuP21 is only a 40 pin chip.

      MuP21 chips, boards, software, manuals, and spec sheets are
      available from:
         Offete Enterprises
         1306 South B Street, San Mateo CA 94402
         (415) 574-8250
         Email:  [email protected]
                 [email protected].


   F21 (Next generation Forth chip)

      F21 will be bigger (10k vs 7k transistors for the MuP21!) but
      since it is going to implemented with a smaller geometry (.8
      micron vs 1.2) it will still be extremely small and low power, and
      low cost.  Although the specs on this chip aren't final yet,
      expected performance is in the range of 250 MIPS!!.  It will have
      multiple analog processors and a very high speed serial network
      coprocessor on chip.  F21 will also support a wider range of
      memory chips and have more I/O processors.

      Designed for cheap consumer multimedia and parallel processing,
      the F21 is planned for release some time in 1995.

      For more information on this project, contact: Jeff Fox
      <[email protected]>.


6)  GETTING STARTED WITH MICROCONTROLLERS

   In order to get started with microcontrollers, several factors need
   to be considered.
         - cost
         - convenience
         - availability of development tools
         - intended use

   The hardware described in this section is readily available,
   affordable, and is easy to find software for.

   <Inclusion or exclusion of a product in this section doesn't have any
   real significance.  I've tried to give a good cross-section of
   devices and manufacturers - I'm open for suggestions.>


6.1)  Evaluation Kits/Boards

   Many manufacturers offer assembled evaluation kits or boards which
   usually allow you to use a PC as a host development system.  Among
   some of the more popular evaluations kits/boards are:

   Parallax Basic Stamp

      This is a small single-board controller that runs BASIC, and costs
      only $39.  A SIP version for only $29 is also available.  THE 256
      byte EEPROM can hold a program of up to about 100 instructions.
      The BASIC Stamp Programming Package is a complete development
      package for only $99.
         Parallax, Inc., 3805 Atherton Rd. 102, Rocklin, CA  95765
         (916)624-8333    Fax: (916)624-8003   BBS: (916)624-7101
         email: [email protected]


   Motorola EVBU, EVB, EVM, EVS

      A series of very popular evaluation/development systems based on
      the 68hc11.  Comes complete with the BUFFALO monitor and varying
      types of development software.  Commonly used for university
      courses.


   Motorola 68705 starter kit

      Motorola supplies a complete development system, -- software,
      hardware, simulator, emulator, manuals, etc for just $100.


   Dallas Semiconductor DS5000TK

      The DS5000TK allows evaluation of any DS5000 series device in any
      existing application without circuit changes.  The included
      DS5000T plugs into the supplied serial interface pod which
      provides a connection to a host PC.  A target cable connects the
      pod to the target system.  Programs can be downloaded directly to
      the chip (no EPROM programming!) using the built-in serial loader.
      (With Dunfield's Development System, you end up with a cheap
      "pseudo-ice".  Dunfield also has a circuit if you want to build a
      similar device.)


   Philips/CEIBO DS750
      For $100 (from Philips, from CEIBO the price is $250), you get a
      "pseudo-ice" for testing your code in-circuit.  Based on the
      low-end Philips 87c75x parts.  Allows source-code debugging in
      assembler (included), C, and PL/M, with an interface similar to
      that of Borland's Turbo Debugger.  Very popular with students and
      consultants for experimenting with 80c51 code.  Includes a VERY
      NICE book which describes the theory of operation of the board
      itself, and includes a good number of experiments that you can try
      for yourself.  Philips sold nearly 10,000 of these boards in the
      USA (and 5000 in Europe without even advertising).


   American Educational Systems AES-51, AES-11, AES-88

      If you'd like to start learning about microcontrollers, but the
      thought of finding all the parts and then building one scares you,
      take a look at the line of boards available from American
      Educational Systems. This might be the easiest way to get started.
      For less than $300, you get a complete and professionally designed
      and packaged educational tool.

      AES has three boards: AES-51 (8051), AES-11 (68hc11), and AES-88
      (8088). All three boards are built along the same lines and
      include RAM, ROM, LCD display, keypad, A/D, serial ports, digital
      I/O ports, and logic probe. Also included is a full bookshelf of
      documentation. These boards are ridiculously easy to use and
      program - you can get started experimenting and designing right
      away.

      This is a perfect system for students and hobbyists. Even
      professionals will find this system useful as a prototyping tool
      and test bed. Highly recommended.

      For more information, contact:
            American Educational Systems
            970 West 17th St.
            Santa Ana, CA  92706  USA
            (800)730-3232 or (714)550-8094   Fax: (714)550-9941


6.2)  Easy chips to use

   In addition, several chips provide a similar capability if you are
   willing to spend a bit of time wiring up a simple circuit.  A few
   chips worth looking at are:

   Motorola MC68HC11A8P1
      Contains Motorola's BUFFALO monitor which has the same
      functionality as the one on Motorola's evaluation boards.  A
      working system can be built with this chip and a Maxim MAX-232.
      You can talk to it with a PC or Mac over a 3-wire RS232
      connection.  It is easy to load and run anything you want in the
      on-board RAM and EEPROM.  You can even use subprograms in the
      BUFFALO monitor after getting a listing from Motorola's BBS or ftp
      site.  This BBS/ftp site also has freeware assemblers to make a
      complete development environment cheaply and quickly.

   Intel 8052AH-BASIC
      This popular chip with hobbyists is another easy way to get
      started.  You can download high level code from your host.  The
      disadvantages are that you can't get away from a multi-chip
      solution, the code is noticeably slow, you have to buy an MCS
      BASIC manual, you are detached from the inner workings, there
      aren't many on-chip goodies like A/D, and you can forget about
      running off of a battery.

   Dallas Semiconductor DS5000/DS2250
      These are well suited even for electronics ignoramuses (ignorami?)
      such as myself.  All you need to add is a crystal and two
      capacitors to end up with a working system.  These chips come
      complete with non-volatile RAM in the form of static RAM (at least
      8K) backed up with a lithium battery.  Everything is saved -
      program, data, and bugs ;-).

   MicroChip PIC '5x series
      With only 33 instructions, this chip is definitely easy to use!
      Using Parallax's assembler, the instruction set is ** MUCH ** less
      intimidating than MicroChip's opcodes!  These chips simply need
      power, ground, and 1 of 4 different timing circuits. Doesn't get
      much easier than that!  With I/O pins that are beefy (25mA per pin
      sink, 20mA per pin source) and drive both high and low,
      interfacing is super easy.  It's great to hook LEDs and such
      directly to output pins with only a resister in-line!


6.3)  Software (Cheap and easy)

   Well, it's finally here. A free C compiler for the 8051. Featured in
   Dr. Dobb's August 1997 issue, Andy Yuen's Retargetable Concurrent
   Small C (RCSC) is based on James E. Hendrix' lengendary Small C. A
   previous iteration of RCSC, Concurrent Small C was introduced in the
   August 1996 issue of Dr. Dobbs. With the release of this compiler,
   Andy Yuen is very likely to become a folk hero.

   So, why are you still reading this? The FAQ will wait! First download
   a copy of RCSC. You can get it from: http://www.ddj.com or
   ftp://ftp.mv.com/pub/ddj. Then go out and find a copy of Dr. Dobb's
   August 1997 issue.

   You'll still need to purchase either James E. Hendrix's "A Small C
   Compiler" (ISBN 0-13-814724-8) or the Dr. Dobb's Small C Compiler
   Resource CD. This of course means that the free C compiler isn't
   totally free, but then again, what is?


   A couple free versions of C exist for the 68hc11. One is based on
   Small C and another on the Gnu C package. Neither package is known
   for ease of use or reliability. However, you might find that one of
   these packages fits your needs.


   You can search for free software for development, but you often get
   what you pay for.  What is sorely lacking in freeware is technical
   support.  Several packages are available that provide complete
   development environments for some of the more popular
   microcontrollers.  If you want to be productive right away, think
   about investing $100 or so - it'll be well worth the price!


   I've been playing with the Dunfield Development System lately (on the
   8051), and it's really quite nice.  I've also heard many good things
   about it from others.  It includes a near ANSI-C compiler, run-time
   library with source, assembler, ROM debugger, integrated development
   environment, monitor with source, utilities, and other extras.
   Although not freeware, the low price ($100), the features, all of the
   extra goodies, and the good reviews make this a package worth looking
   at.  Also, if you're interested in working on more than one family of
   microcontroller, Dunfield supports a wide range.  This means only
   needing to learn one system, instead of many.  The following chips
   are supported:  6805, 6809, 68hc11, 68hc16, 8051/52, 8080/85, 8086,
   and 8096.  A package including a simulator and a resident monitor
   debugger are also available for the 8051 for $50.
         Dunfield Development Systems
         P.O. Box 31044, Nepean, Ontario  K2B 8S8   Canada
         (613)256-5820   Fax: (613)256-5821
         Email:  [email protected]


   A decent C compiler for the 68hc11 comes from ImageCraft.  This
   package, which runs under DOS and OS/2, includes a near ANSI C
   compiler, assembler, linker, librarian, ANSI C functions and headers,
   and 90 page manual.  The current release is version 1.02 of their
   compiler.  The price is just $40.  Initial feedback on this compiler
   seems promising.  The pre-release versions are already in use by many
   of you, and will still be available as freeware.
         ImageCraft
         P.O. Box 64226, Sunnyvale, CA 94086-9991
         (Richard Man) [email protected]


   Another low priced ($100) C compiler comes from Micro Computer
   Control.  Cross compilers running under DOS are available for the
   8051 and the Z8 (including Super-8).  This package includes a C
   compiler, assembler, linker, librarian, and extensive printed
   documentation.  A simulator/source code debugger is available for an
   additional $79.95.
         Micro Computer Control Corporation
         PO Box 275, 17 Model Ave., Hopewell, NJ  08525
         (609)466-1751   Fax: (609)466-4116   BBS: (609)466-4117
         Email: [email protected]


   C isn't the only development system available (yeah, I know that's
   hard to believe) - good solid Basic and Forth development systems are
   also available.  Refer to the appropriate FAQ for the microcontroller
   that you are using for more information on free and commercial
   development systems.


   If the Microchip PIC is your game, then check out the Parallax tools
   (available on their ftp and web sites).  All Parallax software is
   available free of charge to all takers!  This includes PSIM (a PIC
   simulator), PASM (an assembler for '5x parts), and PASMX (an
   assembler for 'xx parts).  These are the full commercial versions,
   not hobbled in any way!


7)  MICROCONTROLLER PROGRAMMING LANGUAGES

   Just a bit of an introduction for the beginner.


7.1)  Machine/Assembly language

   Machine language is the program representation as the microcontroller
   understands it.  It is not easy for humans to read and is a common
   cause of migraine headaches.  Assembly language is a human-readable
   form of machine language which makes it much easier for us flesh and
   bone types to deal with.  Each assembly language statement
   corresponds to one machine language statement (not counting macros).

   An assembly/machine language program is fast and small.  This is
   because you are in complete charge of what goes into the program.  Of
   course, if you write a slow, large, stupid program, then it will run
   slowly, be too big, and be stupid.  Assembly language (assembler)
   can't correct stupidity - although sometimes I wish it could ;-).

   If you are starting out learning about microcontrollers, it would be
   worth your while first learning assembler.  By programming in
   assembler, you master the underlying architecture of the chip, which
   is important if you intend to do anything significant with your
   microcontroller.


7.2)  Interpreters

   An interpreter is a high level language translator that is closer to
   natural language.  The interpreter itself is a program that sits
   resident in the microcontroller.  It executes a program by reading
   each language statement one at a time and then doing what the
   statement says to do.  The two most popular interpreters for
   microcontrollers are BASIC and FORTH.

   BASIC's popularity is due to its simplicity, readability, and of
   course just about everyone has at least played with BASIC at one time
   or another.  One common compaint about [interpreted] BASIC is that it
   is slow.  Often this can be solved by using a different technique for
   performing the desired task.  Other times it is just the price paid
   for using an interpreter.

   FORTH has a very loyal following due to its speed (approaching that
   of assembler language) and its incremental approach to building a
   system from reusable parts.  Many FORTH systems come with a host
   system which turns your desktop computer into a development system.
   FORTH can be quite difficult to write in (if you have no experience
   with it) and is probably even harder to read.  However, it is a very
   useful and productive language for control systems and robotics, and
   can be mastered in time.

   JVM - Java(TM) Virtual Machine - was added lately to the list of
   interpreters, after the invention of the language and concepts by Sun
   Microsystems. Java was adopted enthusiastically by programmers all
   over the world and has finally found its way into the embedded
   environment. Java provides a new and revolutionary concept, geared
   towards the use of portable software applications which can be
   dynamically downloaded over a network, rather than kept on the local
   disk or in the local memory of a specific computer.  This way, the
   client computer does not need to keep all the applications, since
   they can be dynamically downloaded from the server whenever required.
   Another Java main feature is its Operating-System independent
   capability. Java is also a language. The Java language is a new
   object-oriented programming language, also developed by Sun
   Microsystems. In its very own architecture it is particularly suited
   to the development of Java's portable application pieces of software,
   called applets.

   The nicest thing about developing a system with an interpreter is
   that you can build your program interactively.  You first write a
   small piece of code and then you can try it out immediately to see
   how it works.  When the results are satisfactory, you can then add
   additional components until the final product is achieved.


7.3)  Compilers

   A compiler is a high level language translator that combines the
   programming ease of an interpreter with greater speed.  This is
   accomplished by translating the program (on a host machine such as a
   desktop PC) directly into machine language.  The machine language
   program is then burned onto an EPROM or downloaded directly to the
   microcontroller.  The microcontroller then executes the translated
   program directly, without having to interpret first.

   The most popular microcontroller compilers are C and BASIC.  PL/M,
   from Intel, also has some popular support due to that company's
   extensive use of that language. Modula-2 has a loyal following due to
   its efficient code and high development productivity. Ada has many
   adherents among those designing on the larger chips (16 bits and
   above).

   Due to both its popularity and its slow speed, it was only logical
   that BASIC would appear as a compiled language.  A few companies
   supply a BASIC compiler for several of the more popular
   microcontrollers.  Execution speed is drastically increased over
   interpreted BASIC since the microcontroller is freed from the task of
   interpreting the statements as the program runs.

   While interpreted Forth approaches (and sometimes surpasses) the
   speed of many compilers, compiled Forth screams along.  Today there
   are many high performance optimizing native code Forth compilers, and
   there are also lots of very cheap or free public domain Forths.  Some
   of them like Tom Almy's ForthCMP produces optimized native code with
   less overhead and better performance than just about anything else
   out there.  Of course it still has compactness and more elegant
   factoring of functionality than in most languages.

   C is now the language of choice for the entire universe.  C is used
   on computers from the tiny microcontroller up to the largest Cray
   supercomputer.  Although a C program can be a bit tedious at times to
   read (due to the terse programming style followed by many C
   programmers), it is a powerful and flexible development tool.
   Although a high level language, it also gives the developer access to
   the underlying machine.  There are several very good and cheap C
   compilers available for the more popular microcontrollers.  It is
   widely used, available, supported, and produces fairly efficient code
   (fast and compact).


7.4)  Fuzzy Logic and Neural Networks

   Fuzzy Logic and neural networks are two design methods that are
   coming into favor in embedded systems.  The two methods are very
   different from each other, from conception to implementation.
   However, the advantages and disadvantages of the two can complement
   each other.

   The advantage of neural networks is that it is possible to design
   them without completely understanding the underlying logical rules by
   which they operate.  The neural network designer applies a set of
   inputs to the network and "trains" it to produce the required output.
   The inputs must represent the behavior of the system that is being
   programmed, and the outputs should match the desired result within
   some margin of error.  If the network's output does not agree with
   the desired result, the structure of the neural network is altered
   until it does.  After training it is assumed that the network will
   also produce the desired output, or something close to it, when it is
   presented with new and unknown data.

   In contrast, a fuzzy-logic system can be precisely described.  Before
   a fuzzy control system is designed, its desired logical operation
   must be analyzed and translated into fuzzy-logic rules.  This is the
   step where neural networks technology can be helpful to the
   fuzzy-logic designer.  The designer can first train a software neural
   network to produce the desired output from a given set of inputs and
   outputs and then use a software tool to extract the underlying rules
   from the neural network.  The extracted rules are translated into
   fuzzy-logic rules.

   Fuzzy logic is not a complete design solution.  It supplements rather
   than replaces traditional event control and PID (proportional,
   integral, and derivate) control techniques.  Fuzzy logic relies on
   grade of membership and artifical intelligence techniques.  It works
   best when it is applied to non-linear systems with many inputs that
   cannot be easily expressed in either mathematical equations used for
   PID control or IF-THEN statements used for event control.

   In an effort to change fuzzy logic from a "buzzword" (as it is in
   most parts of the world) to a well established design method (as it
   is in Japan), most manufacturers of microcontrollers have introduced
   fuzzy logic software.  Most software generates code for specific
   microcontrollers, while other generates C code which can be compiled
   for any microcontroller.


8)  DEVELOPMENT TOOLS

   Having a programming language is usually not enough to develop a
   program for a microcontroller.  Some way of debugging your program is
   needed.  I am only too painfully aware of this fact.


8.1)  Simulators

   A simulator runs your microcontroller program on a host machine (such
   as your PC).  You can step through the code to see exactly what is
   happening as the program runs.  Contents of registers or variables
   can be altered to change the way the program runs.  Eliminates (or at
   least delays) the erase/burn/program EPROM cycle common in
   microcontroller program development.  You can work out ideas or learn
   about microcontrollers by experimenting with small code fragments and
   watching on the screen what happens.  A simulator can't support real
   interrupts or devices, and usually runs much slower than the real
   device the program is intended for.

   Some manufacturers have a cross between a software simulator and the
   hardware emulator - a hardware simulator.  This is a piece of
   equipment that plugs into your target, and the pins will toggle and
   react like they should - just MUCH slower.  Cost of a device like
   this is only about $100.  Two such boards by National Semiconductor
   and Philips are detailed in section 6.2.


8.2)  Resident Debuggers

   A resident debugger runs your program on the microcontroller itself,
   while showing the progress on your host machine (such as a PC).  Has
   many of the same advantages as simulator above, with the additional
   benefit of seeing how the program runs on the real target machine.  A
   resident debugger needs to "steal" some resources from the target
   machine, including: a communications port to communicate with the
   host, an interrupt to handle single stepping, and a certain amount of
   memory for the resident part (on the target) of the debugger.


8.3)  Emulators

   If you've got the money, this is the equipment you want to develop
   your system with (yeah, that's right, a preposition at the end of a
   sentence!).  A [usually] expensive piece of hardware that even for
   the cheaper versions will run you at least $700.  An emulator is a
   sophisticated device that pretends that it is the microprocessor
   itself, while at the same time capturing information.  It provides
   full and total control over your target, while at the same time not
   requiring any resources from the target.  The emulator can either be
   a stand alone device with its own display, or it can be interface to
   a PC.


8.4) Java on Embedded Systems

   <Thanks to Marius Gafen of NSI in Israel for the following discussion
   of Java>

   This is a short discussion about the technology of Java (TM)
   implementation on Embedded Systems and the issues involved. This
   technology implementation can bring to the embedded systems world the
   benefits of Java, enabling the development of  extensible, portable
   and downloadable applications, which dramatically reduce development
   costs and provide fast response to ever changing market demands,
   while keeping all existing advantages.

   Java -  Write once, run everywhere ...
   Java provides a new and revolutionary concept, developed by Sun
   Microsystems and geared towards the use of portable software
   applications which can be dynamically downloaded over a Network,
   rather than kept on the local disk or in the local memory of a
   specific computer. This way, the client computer does not need to
   keep all the applications, since they can be dynamically downloaded
   from the  server whenever required. After the applications are done,
   they can be either kept on the computer or discarded - as required.
   Of course, these applications do not need to exist when the computer
   is built or purchased - they, or their later versions, can be
   developed and added at a later stage. Java enables dynamic
   interaction, where the user receives immediate feedback. Java
   provides Operating-System independent capability. Java provides all
   these features by allowing the execution of code that can be
   distributed across the network in a portable, robust, secure and
   high-performance environment.

   Java - The Language
   The Java language is a new object-oriented programming language, also
   developed by Sun Microsystems. In it's very own architecture it is
   particularly suited to the development of Java's portable application
   pieces of software, called applets.  These are applications which are
   dynamically downloaded over the network and executed on the
   Java-Enabled client computer, normally equipped for this purpose with
   a Java-Enabled Web Browser.

   Java - The Components
   The Java system compiles Java applets into Byte Code. Once compiled,
   the Java Byte Code is placed in a file ready to be downloaded through
   the Network to the client computer that requests it. A Java-Enabled
   Web Browser includes a component called a Java Virtual Machine (or
   JVM, for short). This component is responsible for actually running
   the Java Byte Code and it isolates the Java code from the specifics
   of the underlying hardware  and operating system. Consequently, Java
   applets are developed once but they can run, unchanged, on any client
   computer with a Java Enabled Web Browser, regardless of the specific
   platform.

   Implementation of Java in Embedded Systems
   The use of Java in an embedded environment presents unique
   challenges, due to the fundamental differences between an embedded
   system and a general-purpose computer or work-station. These
   differences should be thoroughly understood in order to better
   appreciate the implications associated with implementing Java to a
   particular application domain.
   a. An embedded system usually lacks secondary storage (e.g. a hard
   disk) making it difficult to keep a library of application code and
   to load a particular routine upon demand. Therefore, the size of the
   application is limited to the size of the existing memory device
   (such as ROM or Flash).
   b. In most cases, an embedded system lacks direct user interface such
   as a monitor. Rather, it communicates with the operator (if at all)
   through some specialized devices or through a front-end station which
   is connected to the embedded application  via a specialized bus or
   network.
   c. The lack of a file-system and traditional user interface devices
   has a special significance for Java-based applications which rely
   heavily on the presence of these components. Often, an embedded
   application has limited resources such as memory and CPU bandwidth.
   Consequently, the scheduling  and sharing of these resources become
   one of the major design challenges when developing such an
   application. Particularly, in Real-Time applications, the performance
   requirements and the constraints on resources lead to lean and
   fine-tuned scheduling disciplines in order to meet the system's
   performance requirements.
   d. Typically, an embedded system is very specialized; it is tightly
   integrated with the surrounding environment and has demanding
   requirements for robustness. Since the protection mechanisms (such as
   address-space boundary protection) that are usually provided by a
   typical operating system are not available in such an environment,
   the mechanism of introducing new software into the application should
   be tightly controlled. This fact has special significance in the
   context of Java where the programming paradigm is based on dynamic
   downloading of applets from various sources. Java was designed (and
   initially implemented) to run on UNIX workstations. It relies on many
   services that are available on such a system (such as files,
   processes, Internet naming services) which do not exist in a typical
   embedded system. Some of these do not make sense in such an
   environment (for example, a network device might have an IP-address,
   but it does not necessarily have a domain name).

   Implementation Architectures
   In order to execute Java code on an embedded system, several key
   components must be developed or ported to this system. These
   components have to be tailored to the specific hardware, to the
   kernel (if one exists) and to some extent to the C compiler being
   used (since part of the JVM and its interface layers are implemented
   in C). The two main possible approaches are:
   a. Developing a dedicated Java-compatible system, exactly fitted to
   the embedded environment.
   b. Porting Sun's original Java to the embedded environment.
   The first approach has the advantage of ending with a product which
   is originally designed to the embedded environment, including all the
   constraints of this special environment. The second approach has the
   advantage of compatibility to the de-facto standard which has been
   already adopted by the industry. Since Java is a live language and
   environment, driven by both the industry needs and the rapid
   technology changes, this factor is considered to be of tremendous
   importance.

   More architectural concepts
   For achieving appropriate compatibility with all Java existing and
   future intrinsics, the only possible approach of porting Java is
   based on Sun's JDK (Java Development Kit) sources as distributed from
   Sun. These sources were analyzed and checked against the requirements
   of the embedded environment, before being carefully restructured.
   The final result is retargetable software which lends itself to be
   easily ported to each unique combination of hardware - kernel - C
   compiler. This software runs on a variety of Real-Time Operating
   Systems and provides a Virtual Machine environment for the execution
   of Java byte code. Special design considerations enable it to coexist
   with other applications, which are running on the same platform,
   either Real-Time or Non-Real Time, while complying with the
   constraints imposed by the Real-Time  Operating System and the
   application tasking architecture.

   JVM Encapsulation
   As mentioned previously, the ideal technique would be the one which
   enables the embedded Java software to run on top of any commercial
   Real-Time kernel or be adapted to any application-specific executive.
   This capability is accomplished by having a well-defined API that
   encapsulates the services that the JVM needs from the underlying
   system.  The Java language supports parallelism in the form of
   threads (light-weight tasking). It includes methods for thread
   management, synchronization and communication. There are two
   approaches for mapping the Java threads to the parallel  entities of
   the underlying kernel (typically, they are called tasks):
   a. Mapping each Java thread to a kernel task and utilizing the kernel
   services to schedule these threads and synchronize between them.
   b. Dedicating one kernel task to run the JVM and then have the Java
   threads be implemented internally by the Java run-time support
   system.
   Again, there are tradeoffs to be considered when choosing the
   appropriate model. In the first model, the services of the Real-Time
   kernel are used directly for managing the Java threads and can, in
   some situations, perform better. In addition, Java threads can
   interact directly with other tasks in the system. However, this
   approach requires that the overall system be fully tested each time a
   new Java thread is introduced or a change to the Java code is
   performed. In the second approach, the JVM acts also as an
   intermediate monitor, which internally manages the Java threads and
   ensures  that the Java code as a whole performs accurately within its
   resource boundary. It therefore ensures that in any circumstances
   the JVM does not exceed the amount of system resources allocated to
   the Java application.  The practical meaning of this implementation
   approach is that once the JVM has been fully tested in a particular
   environment,  the different applets can be downloaded and executed
   with no need to re-test.


8.5)  Good Stereo System

   This is the most important tool for the microcontroller developer, or
   for any computer system developer for that matter.  Don't expect to
   get anywhere unless you have the proper music playing in the
   background(?) at the proper volume.  I find that I do my best work
   with the Rolling Stones (especially Goats Head Soup) or Clapton
   (especially early stuff like Cream - Disraeli Gears is a killer
   album!).  The volume must be set to cause excrutiating pain to be
   most effective.  Trust me on this ;-).

   Tom Mornini of Parallax reports:  "Johnny Cash also has a certain
   effectiveness, as well as the Beatles, Aerosmith, and Rush!  60's
   rock and British invasion bands in particular seem to have a
   particularly productive effect."

   This would be an interesting topic for an in-depth study.
   Particularly intriguing, is if certain types of music work better
   with specific [families of] processors.  Another question in need of
   study would be if it's really true that the smaller the chip (in
   bits), the louder the music needs to be.


9)  FINDING OUT MORE ABOUT MICROCONTROLLERS

   If you are interested in learning more about microcontrollers, there
   are many fine sources of information.  You have your choice of
   printed media (books, periodicals, informative graffiti) or
   interactive (right here on the Internet, or BBSs).


9.1)  Books

   8-bit Microcontroller Instruction Set Performance
       - Digitial Systems Consulting / June 1994
       - compares Motorola's M68HC05, Intel's 80x51,
           Microchip's PIC16C5x, and National's COP8
       - lit number 630008
       - (800)272-9959 call this number for copies

   The 16 bit 8096:  Programming, Interfacing, Applications
       - Ron Katz and Howard Boyet
       - Microprocessor Training Inc
         14 East 8th Street, New York, NY  10003
         212-473-4947
       - Library of Congress Catalog card number:  85-61954
       - According to William Chernoff:  "The book is pretty good -
         mostly software examples.  The one hardware thing I looked
         closely at was wrong - a schematic error.  Oh well."

   The 68hc11 Microcontroller
       - Joseph D. Greenfield (at R.I.T.)
       - Saunders College Publishing, (Harcourt Brace Jovanovich)
       - 1992
       - ISBN 0-03-051588-2
       - A number of the sections make use of the Buffalo monitor.
         This could be useful if you are using the Motorola Trainer EVB.

   The 8051 Family of Microcontrollers
       -Richard H. Barnett
       -Prentice-Hall, 1995 (yeah, that's right, 1995!)
       -ISBN 0-02-306281-9

   8051 Interfacing and Applications
       - Applied Logic Engineering
         13008 93rd Place North, Maple Grove, MN  55369
       - (612)494-3704

   The 8051 Microcontroller
       - I. Scott MacKenzie
       - Prentice Hall
       - 2nd edition, 1995
       - ISBN 0-02-373660-7
       - includes schematics for a single-board computer,
         assembly-language source code for a monitor program, and
         interfaces to a keypad, LEDs, and loudspeaker

   The 8051 Microcontroller
       - James W. Stewart
       - Regents/Prentice-Hall, 1993
       - $27.50, 273 pages
       - includes many interfacing examples (switches, solenoids,
         relays, shaft encoders, displays, motors, and A/D converters)
         and a chapter on top-down design method

   The 8051 Microcontroller: Architecture, Programming and Applications
       - Kenneth J. Ayala
       - 241 pages, soft cover
       - 5.25" diskette with assembler and simulator
       - ISBN 0-314-77278-2, Dewey 004.165-dc20
       - West Publishing Company
         P.O. Box 64526, St. Paul, MN  55164
         (800)328-9352
       - see review in next section

   The Art of Programming Embedded Systems
       - Jack G. Ganssle
       - 1992, 279pp, $55.00
       - ISBN: 0-12-274880-0
       - CONTENTS: Introduction, Initial Considerations.  Elegant
         Structures.  Designs for Debugging.  Design for Test.  Memory
         Management.  Approximations. Interrupt Mamangement.  Real-Time
         Operating Systems.  Signal Sampling and Smoothing.  A Final
         Perspective.  Appendixes: Magazines, File Format.  Serial
         Communications.  Bibliography.  Index.

   Assembly Language Programming (for the MCS-51 family)
       - F. A. Lyn
       - L. S. Electronic Systems Design

   Basic-52 Programmer's Guide
       - Systronix, Inc. (they also sell a Basic compiler)
       - address above

   Beginner's Guide
       - Suncoast Technologies

   A Beginners Guide to the Microchip PIC
       - Nigel Gardner
       - Character Press, Ltd. (UK)
       - ISBN 1 899013 00 8
       - software (on floppy) and hardware guide, debugging techniques
       - suitably titled, for those with no previous microcontroller
         experience
       - 19.95 UK Pounds

   The PIC Source Book:
       - assembly language source code on diskette
       - $39
       - Scott Edwards Electronics
         964 Cactus Wren Lane, Sierra Vista, AZ  85635
         (602)459-4802    Fax: (602)459-0623
         [email protected]

   C and the 8051
       - Thomas W. Schultz
       - Prentice Hall
       - ISBN 0-13-753815-4

   Data Acquisition and Process Control with the M68HC11 Microcontroller
       - Frederick Driscoll, Robert Coughlin, Robert Villanucci of
         Wentworth Institute of Technology.
       - Macmillan Publishing Company
       - 1994
       - ISBN 0-02-33055-X
       - Several Chapters on the 68HC11, instructions, and EVB;
         chapters on interfacing Analog and Digital signals to the
         68HC11;  example applications of interfaces to temperature,
         load cell, pressure and thermocouple sensors.
       - a good companion to Motorola's "pink" books

   Data book / Handbook / Users' Guide
       - Advanced Micro Devices
       - Dallas (User's guide for the DS5000)
       - Intel
       - Siemens

   Design with Microcontrollers
       - John B. Peatman
       - ISBN 0-07-049238-7
       - This book is on a more advanced level.  Uses both the 68hc11
         and Intel 8096 as example systems.
       - Used for a very popular course on microcontroller design at
         Georgia Tech.

   Embedded Controller Forth for the 8051 Family
       - Academic Press
       - William H. Payne
       - uses a Forth development system available on the Internet

   Embedded Controllers Databook 1992 Edition
       - National Semiconductor Corporation
       - literature number: 400049
       - (800)272-9959 call this number for for copies

   Embedded Systems Programming in C and Assembler
       - John Forrest Brown
       - Van Nostrand Reinhold, 1994
       - 304 pages, $49.95
       - ISBN 0-442-01817-7
       - covers Motorola and Intel processors
       - includes diskette with code from the book
       - book review in Dr. Dobb's Journal, November 1994, page 121

   Experimenter's guide
       - Rigel Corporation

   Introduction to Microcontroller Design, Based on the 8051 family of
   Processors
       - Business Data Computers
         P.O. Box 1549, Chester, CA  96020

   Mc68hc11 An Introduction
       - Han-Way Huang
       - Software and Hardware Interfacing, Applications using the
         EVB from Motorola.
       - West Publishing Company
       - ISBN 0-314-06735-3

   M68hc11 Reference Manual
       - Motorola - literature reference M68HC11RM/AD
       - This document is the "bible" of the 6811 and is a must-have
         for any serious 6811 programmer.

   MC68hc811E2 Programming Reference Guide
       - Motorola - literature reference M68HC811E2RG
       - A pocket-sized guide to the version of the 6811 used on the
         Mini Board

   The Microcontroller Idea Book
       - Jan Axelson (of Microcomputer Journal fame)
       - features the 8052-BASIC microcontroller
       - hands-on guide with complete plans (schematics, design theory,
         program listings, construction details, etc)
       - explains how to use sensors, relays, displays, clock/calendars,
         keypads, wireless links, and more
       - 1994, 273 pages, $31.95 + shipping
       - Lakeview Research, 2209 Winnebago St., Madison, WI  53704
         (608)241-5824  Internet: [email protected]
       - contact the author at [email protected]

   Microcomputer Engineering
       - Gene H. Miller
       - Prentice Hall, Englewood Cliffs, NJ  07632
       - 1993
       - ISBN 0-13-584475-4
       - Explains the basics.  Many clear and concise assembly language
         example programs.
       - Written to be used with the Motorola Trainer (EVB).

   Microcontroller Technology, The 68hc11
       - Peter Spasov
       - Prentice Hall
       - ISBN 0-13-583568-2

   Microcontrollers: Architecture, Implementation, and Programming
       - Kenneth Hintz and Daniel Tabak
       - McGraw-Hill Inc.  1992
       - ISBN 0-07-028977-8

   Microprocessor 1995
       - Jack Quinn, Micrologic Research
       - Integrated Circuit Engineering Corporation
         15022 North 75th St., Scottsdale, AZ  85260-2476
         (602)998-9780   Fax: (602)9481925
       - comprehensive study of the microprocessor industry and market,
         current status, trends, and developments
       - $1495
       - Microprocessor 1996 due out in November

   PIC 16Cxx Development Tools instructions manuals
       - Parallax, Inc.
       - Instruction manual for the Parallax PIC assemblers
       - Instruction manual for the Parallax Software Simulator
       - Instruction manual for the Parallax PIC programmer hardware
       - Details the Parallax PIC instruction set

   PIC 16Cxx Applications Handbook
       - Parallax, Inc.
       - Contains condensed data sheets for '5x, '64, '71, and '84
         controllers
       - Contains 14 application notes showing circuits and code for
         common projects using the PIC series of microcontrollers.

   Easy PIC'n, A Beginner's Guide to Using PIC16/17 Microcontrollers"
       - ISBN 0-9654l62-0-8
       - intended to ease the beginner toward understanding and
         application of the PIC16/17 line of microcontrollers from
         microchip Technology Inc.  For the hobbyist or engineer for
         self study or as a text for a college engineering course in the
         application of microcontrollers.
       - examples of assembly language programs
       - in-depth coverage of program writing using flow charts
       - the approach is hands-on with lots of examples, all of which
         may be demonstrated using a very simple demo board (a project)
         described in the beginning of the book
       - For more information, contact the author:
               David Benson, Author (Easy PIC'n)
               Owner, Square 1 Electronics
               [email protected]
               (707)279-8881   Fax: (707)279-8883

   Posix.4:  Programming for the Real World
       - Bill O. Gallmeister
       - O'Reilly and Associates, 1995
       - ISBN 1-56592-074-0
       - Part I of the book describes the Posix standard (what it is,
         what it isn't, and what it's for), and explains the principles
         of real time programming (tasking, messages, scheduling, I/O,
         and performance) and why Unix isn't fit for real-time
         programming.  Part II is a reference on the Posix functions and
         header files.  Part III contains much of the code for the
         exercises in the book.

   Programmer's Guide to the 1802
       - Tom Swan
       - Hayden Book Company, Inc., 1981
       - ISBN 0-8104-5183-2
       - good introduction to assembly language progamming and an
         thorough tutorial on the 1802

   Programming Microcontrollers in C
       - Ted Van Sickle
       - HighText Publications, 1994
       - 394 pages, $29.95
       - ISBN 1-878707-14-0
       - thorough tutorial on C programming, covers aspects of C
         programming specific to embedded systems
       - covers the Motorola line of microcontrollers (small to large)
       - book review in Dr. Dobb's Journal, November 1994, page 121

   The Real-Time Kernel
       - Jean Labrosse
       - R&D Publications, Inc.
         Suite 200 1601 W 23rd St., Lawrence, KS  66046
       - (913)841-1631   Fax: (913)841-2624
       - Based on the article "A Portable Real Time Kernel in C"
         in Embedded Systems Programming (Part 1: vol 5 no 5
         May 1992, Part 2: vol 5 no 6 June 1992)
       - originally written for the Intel 186 but ported to HC11
         source code for UCOS11

   Single- and Multiple-Chip Microcomputer Interfacing
       - G.J. Lipovski
       - Copyright 1988
       - 478 pages
       - ISBN 0-13-810557-X (Prentice-Hall Edition)
         ISBN 0-13-810573-1 (Motorola Edition)
       - Based around the 68HC11 it covers both hardware and
         software at undergraduate level, but the emphasis is on
         interfacing.
       - Chapter titles:
              1  Microcomputer Architecture
              2  Programming Microprocessors
              3  Bus Hardware and Signals
              4  Parallel and Serial I/O
              5  Interrupts and Alternatives
              6  Analog Interfacing
              7  Counters and Timers
              8  Communications Systems
              9  Storage and Display Systems

   Single- and Multiple- Chip Microcomputer Interfacing (Lab Manual)
       - Peter Song and G. Jack Lipovski
       - Prentice-Hall, 1988
       - ISBN 0-13-811605-9
       - Support for the above book.  Examples based around the Motorola
         EVB and the BUFFALO monitor or the EVBU (or 3-chip micro) and
         PC-Bug11.

   User Manual for the CDP1802 COSMAC Microprocessor
       - RCA, 1977
       - contains useful hardware and software techniques


   Using the M68HC11 Microcontroller: A Guide to Interfacing and
   Programming, 1/e
       - John C. Skroder, Texas A & M, Institute of Electronics
       - Prentice Hall, 1996, $77.00
       - Copyright 1997, 627 pp. cloth
       - ISBN 0-13-120676-1
       - Table of Contents
              1.  Introduction to the M68HC11.
              2.  M68HC11 Resets and Interrupts.
              3.  M68HC11 Parallel I/O.
              4.  Parallel I/O Using the Simple-Strobed and
                  Full-Handshake Modes.
              5.  The M68HC11 Serial Communications Interface (SCI).
              6.  The M68HC11 Serial Peripheral Interface (SPI).
              7.  M68HC11 Free-Running Counter and Input Captures.
              8.  M68HC11 Output Compare Functions.
              9.  M68HC11 Forced Output Compares, Real-Time Interrupts
                  and Pulse Accumulator.
              10. M68HC11 Analog-to-Digital Conversions and Fuzzy
                  Inference.
              11. M68HC11 Expanded-Multiplexed Mode.
              Appendix A. M68HC11EVB Board.
              Appendix B. M68HC11EVBU Board.
              Appendix C. Connecting the EVB/EVBU to External Circuits.
              Appendix D. AS11 Assembler.
              Appendix E. M68HC11 Instruction Set.
              Appendix F. Parts/Equipment Listing.


9.2)  Data and Reference Books

   Motorola
       - M68hc11 Reference Manual, ref # M68HC11RM/AD
            this document is the "bible" of the 6811 and is a must-have
              for any serious 6811 programmer
            contact Motorola at 800-521-6274 (in the U.S.) to get a free
              copy of this manual
       - MC68hc811E2 Programming Reference Guide, ref # M68HC811E2RG
            a pocket-sized guide to the version of the 6811 used on the
            Mini Board, "ownership of this handy reference is proof of
            being a true 6811 nerd" - by Fred Martin

   National Semiconductor - (800)272-9959 for copies
       - COP8 Databook, ref # 400007
       - COP8 Selection Guide, ref # 630006
       - COP8 Designers Information Kit, ref # 6300007-005
            contains: - COP8 Databook (1994 Edition)
                      - COP8 Selection Guide (1994 Edition)
                      - Independent 8-bit Instruction Set Analysis
                      - Independently prepared software analysis of
                        National's COP8, Motorola's M68Hc05, Intel's
                        80X51, and Microchip's PIC16C5X
                      - Utility and Overview Disks
                      - Self-lead overview on COP8, includes electronic
                        selection guide and sample application code
       - COP8 Utility Disk, Mac ref # 6300000, Windows ref # 630001
            typical microcontroller applications and sample code
            available by ftp nscmicro.national.com in/pub/COP8
       - COP8 Overview Disk, Mac ref # 630004, Windows ref # 630005
            self-lead COP8 overview, shows product features/benifits
               and includes a electronic selection guide (2 disks)
            available by ftp nscmicro.national.com in /pub/COP8


9.3)  Periodicals

   Various magazines and journals (journals seems to be THE popular name
   for magazines these days) provide articles from time to time on
   microcontrollers.  If you are just starting out learning, pick those
   magazines that feature construction articles.

   The Computer Applications Journal (Circuit Cellar Ink)
       - programming and construction articles
       - POB 7694, Riverton, NJ  08077-8784
       - Fax: (203)872-2204
       - Voice orders: (609) 786-0409
       - On-line orders (BBS): (203) 871-1988
       - Email orders: [email protected]
       - $21.95, $31.95 surface Canada and Mexico,
         $49.95 air all other countries

   Computer Design
       - industry announcements and trends
       - One Technology Park Drive, P.O. Box 990, Westford, MA  01886
       - (508)692-0700

   The Computer Journal
       - programming and construction articles, specializing in old
         computers (S-100, CP/M, TRS-80, Xerox, Adam, etc)
       - P.O. Box 3900, Citrus Heights, CA 95611-3900
       - (800)424-8825 or (916) 722-4970   FAX: (916) 722-7480
       - BBS: (916) 722-5799
       - WWW: http://www.psyber.com/~tcj
       - Email: [email protected]
                Dave Baldwin: [email protected]
                Bill Kibler: [email protected]
       - USENET newsgroup alt.tcj

   Control Engineering
       - industry outlook on control, instrumentation, and automation
         systems
       - Cahners Publishing
       - Circulation:
         8773 S. Ridgeway Blvd., Highlands Ranch, CO  80126-2329
         (303)470-4000
       - Editorial/Executive Offices:
         1350 E. Touhy Ave, P.O. Box 5080, Des Plaines, IL 60017-5080
         (708)635-8800

   Dr. Dobbs Journal
       - programming articles, concepts, and designs
       - 411 Borel Ave., San Mateo, CA  94402
       - (415)358-9500

   EDN
       - Cahners Publishing Company
         8773 South Ridgeline Blvd., Highlands Ranch, CO 80126-2329
       - annual microprocessor and DSP editions
       - http://www.ednmag.com/

   Electronic Engineering Times
       - industry announcements and trends
       - 500-B Bi-County Boulevard, Farmingdale, NY  11735
       - (516)293-3000

   Electronics Now
       - construction articles
       - Box 55115, Boulder, CO  80321-5115
       - $19.97 one year

   Elektor Electronics
       - programming and construction articles
       - World Wide Subscription Service Ltd
         Unit 4, Gibbs Reed Farm, Pashley Road
         Ticehurst TN5 7HE, England
       - 27 UK pounds
    or
       - Old Colony Sound Lab, P.O. Box 243, Peterborough, NH 03458
       - Tel. (603) 924-6371, 924-6526
       - Fax: (603) 924-9467
       - $57 USA and Canada per year

   Embedded Systems Programming
       - programming and systems design articles
       - Miller Freeman Publications
       - 500 Howard St., San Francisco, CA  94105
       - Miller Freeman: (415)905-2200
         Embedded Systems Programming phone: (800)829-5537

   Forth Dimensions
       - monthly magazine on Forth
       - Forth Interest Group, P.O. Box 2154, Oakland, California 94621
       - (510)893-6784   Fax: (510)535-1295
       - Email: [email protected]
       - Forth Interest Group home page:
            http://taygeta.oc.nps.navy.mil/fig_home.html

   Inquisitor Magazine
       - If you're the type that watched Gilligan's Island for its
         socio-political insights, then you'll love a new 'zine that
         just crossed my desk - Inquisitor Magazine.  It's general
         philosophy seems to be ... well, it seems to be ... uh, yeah!
         Technical in nature, bizarre, tongue in cheek, eclectic,
         electric, did I mention bizarre(?), and lots of fun.  Worth
         looking at if you like the out of the ordinary.  The moving
         force behind this magazine is Daniel Drennan, who seems to have
         suffered from an overdose of radiation from his computer
         monitor ;-).
       - Dan is offering issue 1 of Inquisitor for free except for
         postage ($1.00 in the United States; $2.00 for Canada and
         overseas surface mail; and $3.00 for overseas airmail).  This
         issue contains plans, schematics, and troubleshooting tips for
         putting together a 8052-based microcontroller.  If you're
         thinking of putting together an 8051 system, you might want to
         check this out.
       - Planetarium Station, P.O.Box 132
         New York, NY  10024-0132
       - (212)595-8370
       - Email: [email protected]
       - $16 per year (4 issues)

   Microcomputer Journal (formerly Computer Craft)
       - programming and construction articles
       - 76 N. Broadway, Hicksville, NY  11801
       - $18.95 one year, foreign $23.00, foreign air mail $76.00

   Midnight Engineering
       - 1700 Washington Ave., Rocky Road, CO  81067
       - (719)254-4553

   MW Media - Product Directories
       - Motorola Microcontroller Tools Directory
         ('94 edition out in 3 weeks)
       - Motorola 68K Source ('94 edition available now)
       - Intel Development Tools Handbook ('95 edition just beginning)
         (survey of commercial development tools for the 8051, 8096,
         and 80186 lines of Intel microprocessors)
       - Embedded Intel 386 Directory (released in Aug '94)
       - Intel 486/Pentium directory (forthcoming in '95)
       - 8051 Product Directory ('94 edition out in 4 weeks)
         (survey of various 8051 products)
       - Hitachi Microcontroller Development Tools Directory
         (out in '95)
       - AMD FusionE86 Directory (out in '95)
         (186,386,486)
       - AMD 29K Directory (pending in '95)
       - Low Power Product Directory (out in '95)
         (3.3. volts and lower)
       - DSP Directory (released in May '94)
       - Multimedia CD (hopefully out in '95)
       - These documents could very well be a "must" if you're into
         serious development using any of these chips.  If you are
         "just" a hobbyist, see how the "other half" lives.
       - FREE to qualified developers
       - MW Media
       - Fairmont Plaza, 50 W. San Fernando, #675, San Jose, CA  95113
       - (408)288-4721   (408)286-4200   FAX: (408)288-4728

   Nuts & Volts Magazine
       - A National Publication for the Buying and Selling of
         Electronic Equipment
       - 430 Princeland Court, Corona, CA  91719
       - Mailed third class, USA only:  $17.00 one year
                                        $31.00 two years
       - Mailed first class, one year only:  $34.00-USA
                                             $35.00-Canada/Mexico
       - Foreign/Air Mail - $70.00;  Foreign/Surface - $39.00
       - (800)783-4624
       - Email:  [email protected]


9.4)  USENET newsgroups

   Various newsgroups frequently have discussions or information on
   various microcontrollers.  Among some of the more useful (especially
   the first 3 newsgroups):

   comp.robotics
      Microcontrollers figure heavily in robotics projects.  You will
      find a lot of information about the subject in this newsgroup.
      Even if you aren't building a robot, check this newsgroup out.
      Lots of 68hc11 activity, too.

   comp.arch.embedded (great!)
      This is a great newsgroup.  Well targeted discussions on aspects
      of embedded systems and microcontrollers.

   sci.electronics (lots of traffic, but good)
   alt.comp.hardware.homebuilt (too much nonsense on PCs)
      Some good places to find [mostly technical] discussions on
      microcontroller use and implementation.  Most of the participants
      are crazy about "rolling their own", and are eager to share their
      knowledge.  These groups aren't well focused, and many subjects
      that aren't relevant to embedded control are covered here.

   comp.realtime
      Since embedded systems (controllers/processors) are almost always
      used in real time applications, this group could prove to be
      useful.  Occasional discussions about various microcontroller
      topics.

   comp.os.qnx
      QNX is the leading realtime OS for PCs in terms of market share.
      It is used in high-end embedded systems (16 and 32 bit); set-top
      boxes, automotive industry, banking, telecomms, etc.

   comp.sys.m68k
      The full line of Motorola 68000 microprocessors is discussed in
      this newsgroup, including the very powerful and advanced embedded
      processors and microcontrollers based on this family.

   comp.sys.6809
      This newsgroup covers an old-time favorite, the 6809
      microprocessor, which is commonly used for control applications.
      Motorola 8 bit microprocessors and microcontrollers (6805, 6811,
      etc.) are also discussed in this newsgroup.

   comp.sys.intel
      Mostly trends and development are discussed in this newsgroup.
      From time to time you will find a discussion on some technical
      problem or feature.  This newsgroup is usually fairly useless.
      For a while the participants spent most of their time whining
      about the Pentium bug.  Now they're all moaning about Microsoft,
      PowerPCs, and everything else BUT Intel parts.  I propose changing
      the name of this group to alt.crybabies.boo.hoo.hoo.

   comp.lang.misc
      Sometimes questions or discussions on different microcontroller
      topics pop up here.  I guess it's the ".misc" that attracts these
      questions.

   comp.ai.fuzzy
      Fuzzy logic is rapidly becoming an increasingly important aspect
      of [embedded] control systems.  This group might very well become
      an important forum for those involved in developing control
      systems.

   comp.dsp
      Discussions on Digital Signal Processsing

   comp.sys.ti
      Texas Instruments products discussed here

   sci.engr.control
      This forum is for the discussion of control and embedded systems.

   sci.engr.semiconductors


9.5)  Internet sources of information on specific microcontrollers

   If you are interested in finding sources of information on a specific
   microcontroller, check out the really fine FAQs ;-) that have been
   compiled for the more popular microcontrollers.

     Subject:  PIC microcontrollers
     Newsgroups:  <no longer posted to newsgroups>
     Web page:  http://digiserve.com/takdesign
     Maintainer:  Tom Kellett
                  Email: [email protected]

     Subject:  8051 microcontrollers
     Newsgroups:  comp.sys.intel
                  comp.realtime
                  comp.robotics
                  comp.lang.forth
                  sci.electronics
     Archive:  rtfm.mit.edu :  <plus all mirror sites>
               /pub/usenet/comp.answers/microcontroller-faq/8051
               /pub/usenet/sci.answers/microcontroller-faq/8051
               /pub/usenet/news.answers/microcontroller-faq/8051
     Maintainer:  Russ Hersch
                  Email: [email protected]

     Subject:  68hc11 microcontrollers
     Newsgroups:  comp.realtime
                  comp.robotics
                  sci.electronics
     Archive:  rtfm.mit.edu :  <plus all mirror sites>
               /pub/usenet/comp.answers/microcontroller-faq/68hc11
               /pub/usenet/sci.answers/microcontroller-faq/68hc11
               /pub/usenet/news.answers/microcontroller-faq/68hc11
     Maintainer:  Robert Boys - Ontario, Canada
                  Email: [email protected]
                  Russ Hersch (maintainer emeritus :-)

     Subject:  Motorola 68K microprocessor line
     Newsgroups:  comp.sys.m68k
     Archive:  ftp.ee.ualberta.ca : pub/motorola/general
               ftp.luth.se : /pub/misc/motorola/faq
               file name of archive is m68kfaq?.zip (? is version)
     Comments:  - also includes information on the 683xxx and 68hc16
                - without a doubt, one of the finest FAQs ever written
                (well, of course Bob paid me to say this ;-)
     Maintainer:  Robert Boys - Ontario, Canada
                  Email: [email protected]

     Subject:  ST6 microcontroller FAQ
     Newsgroups: sci.electronics
                 comp.arch.embedded
                 comp.robotics
                 comp.realtime
     Maintainer:  Emilio Caggiano - [email protected]
                  Jerry van Kampen - [email protected]
                  Leonhard Schneider - [email protected]


   Several other FAQs have been compiled that address various aspects of
   microcontroller design and implementation.

     Subject:  I2C protocol
     Newsgroups:  sci.electronics
                  alt.hardware.homebuilt
                  comp.robotics
                  comp.protocols.misc.
     Comments:    The I2C bus is a simple 2 wire serial interface
                  developed by Philips.  A number of 8051 variants as
                  well as several peripherals include I2C support.
     Maintainer:  Vincent Himpe
                  Email: [email protected]

     Subject:  Robotics
     Newsgroups:  comp.robotics
     Maintainer:  Kevin Dowling
                  (412)268-8830
                  Email: [email protected]
                  Smail: Carnegie Mellon University
                         The Robotics Institute
                         Pittsburgh, PA 15213

     Subject:  Electronics
     Newsgroups:  sci.electronics
     Comments:  There are a number of FAQs available in this newsgroup
                on various subjects.  Among some of the subjects covered
                are:  LCDs, stepper motors, suppliers, etc.

     Subject:  Real-time
     Newsgroups:  comp.realtime, comp.answers, news.answers
     Archive:  rtfm.mit.edu : pub/usenet/comp.realtime
     Maintainer:  Mark Linimon
                      Lonesome Dove Computing Services
                      Roanoke, Virginia
                  Email: [email protected].

     Subject:  Neural Networks
     Newsgroups:  comp.ai.neural-nets,comp.answers,news.answers
     Archive:  rtfm.mit.edu : pub/usenet/neural-net-faq
     Maintainer:  Lutz Prechelt
                  Email: [email protected]

     Subject:  Fuzzy Logic
     Newsgroups:  comp.ai.fuzzy,comp.answers,news.answers
     Archive:  rtfm.mit.edu : pub/usenet/fuzzy-logic/
     Maintainer:  Mark Kantrowitz
                  Email: [email protected]

     Subject:  alt.comp.hardware.homebuilt FAQ
     Newsgroups:  alt.comp.hardware.homebuilt
     Comments:  This file contains frequently asked questions (FAQ) and
                general information pertaining to the newsgroup
                alt.comp.hardware.homebuilt.
     Maintainer:  Mark Sokos ([email protected])


10)  MICROCONTROLLER FREE SOFTWARE SOURCES

   This section includes descriptions and references to free
   microcontroller software.  FTP sites and BBSs contain many quality
   packages and code samples for free.  For heavy duty use, you might
   prefer the many commercial packages that are available.  With the
   public domain (or free) stuff, you're usually on your own.  The
   commercial packages usually provide extensive documentation and
   support.

   If you are looking for commercial software for the 8051, 68hc11, or
   PIC, then check out the FAQs on these microcontrollers for details on
   what is available.


10.1)  FTP sites

   The following is a list of the anonymous ftp sites that have source
   code and programming languages for various microcontrollers.  There
   are many others that  are not listed here that contains bits and
   pieces.  Usually you can find them using Archie and searching for
   variations on the name of the microntroller you are looking for.

   ftp.pppl.gov (formerly lyman.pppl.gov)
       - this is a great source of 8051 stuff
       /pub/8051
       /pub/incoming - check this out for new untested/unsorted items

   ftp.mcc.ac.uk
       - this is a new 8051 ftp site

   ftp.intel.com
       - good source of stuff the MCS-51 and MCS-96 families
       /pub/mcs51 - various development tools and sample code for the
                    MCS-51 family
       /pub/mcs96 - various development tools and sample code for the
                    MCS-96 family

   nctuccca.edu.tw
       - mirror of ftp.intel.com
       /vendors/Intel

   freeware.aus.sps.mot.com (Motorola)
       - the ftp site version of the freeware BBS
       - lots of free software for the HC05, HC08, HC11, HC16, 680x0,
         683xx, and PowerPC
       - also see the Web pages in the next section

   nscmicro.national.com
       - the authoratative source for COP8 infomation
       /pub/COP8 - various develepment tools and sample code for the
                   COP8 family including most application notes

   ftp.zilker.net
       - /pub/philips
       - Philips "mini ftp site" set up by Phil Wood of Philips
       - lots of 8051 code and programming tools from their BBS

   [email protected]
       - send Email message with the word "help" in the subject line to
         learn how to access the archive

   ftp.ee.ualberta.ca
       - Circuit Cookbook
       - HUGE archive of all sorts of stuff on the 68hc11 (lots of other
         good stuff too!)
       - you'll have fun mucking around this ftp site, there's piles of
         stuff here
       /pub/cookbook
       /pub/motorola
       /pub/motorola/68hc11
       /pub/motorola/mcu11

   cherupakha.media.mit.edu (cher.media.mit.edu)
       - HUMONGOUS archive of all sorts of stuff on the 68hc11 including
         the 6.270 robotics project, Mini Board, F1 board, and more
         (lots of other good stuff too!)
       - you'll lose yourself rooting around this ftp site, there's
         piles of stuff here (assemblers, tools, C compilers, plans and
         schematics, and many other items)
       /pub/projects - tools, docs, schematics, etc. for the MIT 6.270
         robotics project using a 68hc11-based development system
       /pub/6811 - software, schematics, etc. for the 68hc11-based F1
         board
       /pub/incoming - various unsorted or new items
       /pub/miniboard - software, docs, schematics, etc. for the 3"x2",
         68hc11-based Mini Board controller

   ftp.funet.fi (nic.funet.fi)
       - this is a good source for various microcontrollers
       /pub/microprocs/ (subdirectories include: 1802, 6805, 8048,
          8051, 8096, PIC and many other microprocessors)

   ftp.sics.se
       - many assemblers, utilities, and application notes for the PIC
       - Microchip BBS mirror
       - ftp site of Memec Scandinavia, Microchip's Swedish agent.
       /pub/mchipsoft

   ernie.uvic.ca
       - files provided by local Motorola representative
       /pub (subdirectories include: ibm, dsp96k, dsp56100, dsp56k,
         dsptools, develop, mac, mcu302, mcu332, mcu11, pgmr, mcu16,
         mcu, market, qa, general, m68k, evm, dsp)

   wpi.wpi.edu
       - basic stamp information
       - PIC "C" compiler
       /stamp

   ftp.std.com
       /vendors/microchip/

   ftp.luth.se
       /pub/misc/microchip - PIC information
       /pub/misc/microchip/stamp/mirror - mirror of wpi.wpi.edu
       /pub/languages/assembler - various freeware assemblers

   ti.com
       read the 00readme file first or you'll be lost

   asterix.inescn.pt - FORTH archive
       /pub/forth

   hpcsos.col.hp.com
       /mirrors/.hpib0/forth/8051 (mirror of asterix Forth archive)
       /mirrors/.hpib0/forth/eForth
       /misc/ns32k/beowulf

   ftp.netcom.com
       /pub/imagecft - prerelease version of ImageCraft C for 68hc11

   [email protected] - Email (not ftp)
       - send Email to get information file on services available
       - all Circuit Cellar INK and BYTE related files available

   ftp.ultranet.com
       /biz/mchip - PIC information
       - also see the Web page: http://www.ultranet.com/biz/mchip

   ftp.mrc-bbc.ox.ac.uk
       /pub/microchip

   ftp.oak.oakland.edu
       - has information and software for a wide range of
         microprocessors and microcontrollers

   ftp.uni-erlangen.de
       - information on PIC
       /mounts/epix/public/pub/Multimedia/VideoCrypt/
           microcontroller/microchip.bbs

   ftp.armory.com (Steve Walz)
       - /pub/user/rstevew/8051
       - /pub/user/rstevew/TB8051
       - /pub/user/rstevew/incoming

   ftp.cygnus.com (Jeff Fox)
       - source of information and software on the MuP21 Forth
         microcontroller
       /pub/forth - MUP21FTP.ZIP includes a software simulator for
           the MuP21 and and the upcoming F21.
       also see the Web page: http://www.dnai.com/~jfox

   ftp.best.com
       /pub/cera
   ftp.netcom.com
       /pub/ce/cera
       - embedded systems FTP archive

   ftp.parallaxinc.com
       /pub
       - ftp site of Parallax
         "Cool PIC development tools & the BASIC Stamp"

   ftp.std.com - Minds-Online ftp site
       /customers2/nonprofits/minds-online
       - Chock full of compilers, assemblers, code, articles, fuzzy
         logic, and much more.

   evans.ee.adfa.oz.au
       /mirrors/tms340
       - support for Texas Instruments parts

   ftp.ti.com
       /mirrors/tms320bbs
       - mirror of the contents of Texas Instruments BBS

   ftp://iglou.com/members/ITU
       - Microchip PIC and embedded systems

   ftp://ieee.cas.uc.edu
       - electronics archive


10.2)  Web pages

   Advanced Micro Devices, Embedded Processor Division home page
       - http://www.amd.com/html/products/EPD/EPD.html
       - covers both the 29K and E86 embedded processor lines

   Ada language pages
       - http://sw-eng.falls-church.va.us/AdaIC/
       - http://www.adahome.com/



   AM Research, the Embedded Control Experts
       - http://www.amresearch.com

   Automation and Process Control
       - http://www.ba-karlsruhe.de/automation/home.html

   Bo Eriksson's web page (mostly in Swedish :-(
       - http://194.52.151.18/elektronik/internettips/index.html
       - info on tools from IAR, plus interesting links
       - info on H8-series from Hitachi

   Brian Brown's 8051 web page
       - http://www.cit.ac.nz/smac/cbt/hwsys/i8051/default.htm
       - contains Brian Brown's 8051 course
       - lots of other good stuff

   Cera Research web pages
       - Electronic Engineers' Toolbox (home page)
         http://www.cera2.com/ebox.htm
       - MCU/MPU resources
         http://www.cera2.com/micro.htm
       - Navi-GATOR (embedded dev. tools and chip-specific)
         http://www.cera2.com/gator.htm

   Chip Directory and Chip Manufacturers (Jaap van Ganswijk)
       - http://www.hitex.com/chipdir           (USA, California)
       - http://www.civil.mtu.edu/chipdir       (USA, Michigan)
       - http://www.leg.ufrj.br/chipdir         (Brasil)
       - http://www.xs4all.nl/~ganswijk/chipdir (The Netherlands)
       - http://bbs.cc.uniud.it/chipdir         (Italy)

   Chipmakers web page (Gary Creager)
       - http://www.scruznet.com/~gcreager/hello5.htm
       - well over 200 semiconductor manufacturers web pages

   Circuit Cellar Ink
       - http://www.circellar.com

   Dallas Semiconductor
       - http://www.dalsemi.com

   Diamond Chip
       - http://www.dchip.com
       - information on their ST62T25 BASIC chip
       - Stefan Ward, Diamond Chip
         Tel +27 (0)12 803-6287
         Fax +27 (0)12 803-4350
         BBS +27 (0)12 803-5683

   Electronic Laboratory of the DAEC Department of Meudon
       - http://formper1.obspm.fr
       - electronics, embedded systems, FPGA, microncontrollers in
         astronomy projects

   Embedded Systems Information (Cera Research)
       - http://www.cera.com

   Forth Interest Group home page
       - http://taygeta.oc.nps.navy.mil/fig_home.html

   French Forth web site
       - http://ourworld.compuserve.com/homepages/mp7
         maintained by Marc Petremann:
            17, allee de la Noiseraie
            F - 93160 NOISY LE GRAND
            Email: [email protected]
       - http://ourworld.compuserve.com/homepages/bioforth
         maintained by Gerard SOULA

   Gernsback Web page (Electronics Now, Popular Electronics)
       - http://www.gernsback.com
       - current issue information, recent article related files, FTP
         site, subscription information

   Gregory Pugh's homepage
       - http://sleepy.anest.ufl.edu/~glp/8051.html

   High Tech Horizon
       - http://www.hth.com
       - This web page is in Swedish, but the files are available to all
         in the "Hardware Hackers Filelibrary" at the bottom of the
         Web-page.
       - High Tech Horizon, Asbogatan 29 C, S-262 51 Angelholm, SWEDEN
         +46 431 41 00 88   Fax: +46 431 41 00 88
         Email: [email protected]

   Hitachi
       - http://www.hitachi-eu.com/hel/ecg/

   ITU Technologies ([email protected])
       - Microchip PIC and embedded systems
       - http://www.iglou.com/ITU

   Ken Tindell's CAN web pag
       - http://www.nrtt.demon.co.uk/can.html
       - Source code to drive the Intel 82527 CAN controller is
         available: just send e-mail to [email protected], with
         "Request Intel 82527 drivers" (without the quotes) in the
         subject line.

   MCU Survey
       - http://bip.golana.pub.ro/mcu/survey

   Microchip PIC
       - http://www.ultranet.com/biz/mchip

   Motorola's semiconductor WWW page
       - http://motserv.indirect.com
       - on-line searchable Master Selection Guide and OEM Price Book
       - 'MFax' service to request all kinds of data sheets
       - a bunch of other cool stuff

   Motorola's microcontroller WWW page
       - http://freeware.aus.sps.mot.com/index.html
       - the WWW version of the freeware BBS
       - lots of free software for the HC05, HC08, HC11, HC16, 680x0,
         683xx, and PowerPC

   MuP21 Forth microcontroller
       - http://www.dnai.com/~jfox
       - information and software on the MuP21 Forth uC

   Parallax Inc. web page
       - http://www.parallaxinc.com
       - "Cool PIC development tools & the BASIC Stamp"

   Peter H. Anderson's web site
       - http://www.access.digex.net/~pha
       - nice site, lots of PIC stuff and interfacing plans
       - Peter H. Anderson
         Dept of Electrical Engineering
         Morgan State University

   POLIS web site
       - POLIS offers an integrated interactive environment for
         specification, co-simulation, formal verification, and
         synthesis of embedded systems implemented as a mix of hardware
         and software components.
       - http://www-cad.eecs.berkeley.edu/Respep/Research/hsc/abstract.html
         Most of the information about POLIS, including pointers to
         source and object code (for various CPUs and OSes) is available
         at this WEB site
       - If you are interested, but do not have WEB access, contact
         them at: [email protected].

   QNX realtime website
       - http://www.qnx.com

   Scrumpel 68hc11 web page
       - http://www.stack.urc.tue.nl/~hcc6811

   Texas Instruments
       - http://www.ti.com/sc/docs/micro/home.htm

   Zorin
       - http://www.eskimo.com/~zchris
       - 68hc11 information and support for their line of boards


10.3)  BBSs

   The following BBSs have 8051 information:

   Circuit Cellar, Inc.
       - contains code from their magazine articles and from the
         original Circuit Cellar articles in Byte magazine, also
         contains many other interesting items
       - The BBS is mentioned in the masthead of each issue (on the
         table of contents page).  Excerpts from the BBS appear in Ken
         Davidson's ConnecTime column in every issue with a description
         of how to access the system at the end of every column.
       - (203)871-1988
       - Voice: (203)875-2751
       - Fax: (203)872-2204

   Dunfield Development Systems
       - support for their Micro-C C compiler and development tools
       - includes a lot of nice goodies
       - (613) 256-6289

   ED Teck. Pubs BBS
       - run by Fred Eady who writes for hobbyist magazines
       - good source of information on the PIC
       - (407)454-3198

   Electronics Now
       - contains code from their magazine articles
       - (516)293-2283

   Intel American Marketing Applications Support Bulletin Board System
       - 16 lines, hi-speed modems (14.4K)
       - Lots of useful info and files (including design examples)
       - Full ANSI-BBS with color is recommended, but support for just
         about all terminal types is provided
       - 916-356-3600 (24 hours)
         Auto config: 1200 thru 14.4K Baud
         8 data bits, no parity, 1 stop

   Iota Systems, Inc.
       - Support for their line of hardware and software products
       - (702)831-4732

   Jens Holm's electronics BBS:
       - one of a number of BBSs that are networked over most of the
         industrial part of Europe
       - +45-86-510356 (Denmark)
       - distributes all shareware and freeware software which
         relates to electronics
       - system administrator - Jens Holm
         [email protected] or [email protected]

   Don Lekei BBS
       - support for the PIC line of microcontrollers
       - (604)597-3479 (Canada)

   Massilia Underground BBS (Marseille, France)
       - +33-91794120
       - fidonet 2:323/25
       - not a commercial BBS
       - microcontroller related stuff (assemblers, debuggers,
         boards, etc), some 8051 stuff
       - everything coming in is tested

   Microchip BBS
       - support for the PIC line of microcontrollers
       - Contact by dialing the same number you would use to get to
         Compuserve at 19200,n,8,1, except that you press +<CR> at the
         (garbage) prompt, followed by MCHIPBBS as the host (instead of
         CIS).

   Micro Computer Control Corporation
       - (609)466-4117

   Motorola (Austin Texas) BBS
       - terrific, has piles of stuff, only some of which is on
         bode.ee.ualberta.ca
       - (512) 891-3733 (Austin, Texas)
       - V.32 9600 Baud modems w/ MNP-5
       - 8 Data Bits, No Parity, 1 Stop Bit.

   Other Motorola BBSs:
       - Munich, Germany:  49-89-92103-111  (2400 baud)
       - Stuttgart, Germany:  49-7031-275496  (19200 baud)
       - San Diego, California:  (619) 279-3907
       - Toronto, Ontario, Canada:  (416) 497-8989

   National Semiconductor COP8 BBS
       - (800)672-6427
       - worldwide telnet to nscmicro.national.com

   Protel (Microchip PIC software support)
       - (408)243-0125

   Parallax Inc.
       - (916)624-7101

   Philips Semiconductor (parent company of Signetics)
       - support for: standard logic, programmable logic,
         in-car electronics (planned), 8 and 16 bit microcontrollers,
         I2C software, third party software, discrete semiconductors,
         cross assemblers (general), RF (planned)
       - PHIBBS is located in the Netherlands: +31-40-721102
       - maximum 14400 baud / V42bis
       - 24 hours a day available
       - Help desk: +31-40-722749  (9.00 AM - 16.00 PM CET)

   Philips Semiconductors (Signetics)
       - support for their 8051 variants
       - contains many good source code items
       - partially mirrored on ftp.pppl.gov and nic.funet.fi
       - (800)451-6644 or (408)991-2406

   Texas Instruments microcontroller BBS
       - (713)274-3700


10.4)  Mailing Lists

   68hc11
       - for information, send empty message to [email protected]
       - to join, send the message "subscribe mc68hc11 your_real_name"
         to [email protected]

   Basic Stamp
       - to join, send the message "subscribe stamp-list" to
         [email protected]

   GCC compilers for embedded systems
       - to join, send the message "subscribe crossgcc <your address>"
         to [email protected]
       - for those who are building a cross gcc compiler for an
         embedded processor/system

   Imagecraft C
       - to join, send the message "subscribe icc11-list" to
         [email protected]

   Minds-Online
       - One mailing list is for announcing significant postings on the
         Minds-Online ftp site.
       - Another MODERATED mailing list will carry messages from real
         engineers who are working on designs slated for volume
         production.  "No tire-kickers, no students, no academics, no
         sleazy something-for-nothing ripoff artists, no hobbyists, and
         no totally lost people will be able to post e-mail."  (Uh, it
         looks like that sort of leaves out yours truly, I certainly
         belong in several, if not most, of those categories).
       - to join, send the message "subscribe" to the email address:
         [email protected]

   Mini Board and 6.270 board (68hc11)
       - send a message containing the word "help" for directions to
         [email protected]
       - mailing list address:  [email protected]
       - maintainer:  [email protected]

   Parallel Performance Group (PPG)
       - series of monthly newletters on high-tech software topics
       - for information send any e-mail to [email protected]

   Philips Newsletter
       - send Email with "subscribe" in the subject field to
         [email protected]
       - news, views, and articles (contributions welcome)
   Philips Developers Forum
       - send an Email message with the word "subscribe" in the subject
         to [email protected]
       - technical discussions between engineers and developers

   PIC
       - to subscribe, send email to [email protected]
       - send the message "SUB PICLIST" for standard subscription
       - send the message "SUB PICDIGEST" to receive digested mailings
       - list address is: [email protected]


11)  SOURCES FOR PARTS

   Major manufacturers and distributors are the main (and most
   expensive) source for acquiring microcontroller parts.

   A good number of firms have surplus bargains on microcontrollers and
   other parts you might need for your projects. Among some of the
   better ones:

   All Electronics
       - http://www.allcorp.com
       - lots of great surplus items
       - nice catalog available in PDF

   Alltronics
       - http://www.alltronics.com
       - good selection of interesting surplus items
       - large selection of standard chips and components
       - latest advertisements available in PDF
       - update pages from catalog available in PDF

   BG Micro
       - http://www.bgmicro.com
       - large selection of standard chips and components
       - much of their catalog available in PDF

   Debco Electronics
       - http://www.debcom.com
       - piles of chips, parts, components, ham gear, computer stuff
       - Electronics Experimentors Journals (highly recommended!)

   Herbach and Rademan
        - http://www.herbach.com
        - great catalog
        - LOTS of stuff for robotics projects

   Mendelson Electronics
       - http://www.meci.com
       - on-line ordering possible, but IMHO their web site is difficult
         to navigate

   Timeline
       - http://www.timeline.com
       - well-known and reliable source for surplus LCD displays
       - interesting surplus bargains

__________________________________________________________

I disclaim everything.  The contents of this article might be totally
inaccurate, inappropriate, misguided, or otherwise perverse - except for
my name (hopefully I got that right).

Copyright (c) 1997 by Russ Hersch, all rights reserved.
This FAQ may be posted to any USENET newsgroup, on-line service, or BBS
 as long as it is posted in its entirety and includes this copyright
 statement.
This FAQ may not be distributed for financial gain.
This FAQ may not be included in commercial collections or compilations
  without express permission from the author.

-----------------------------------
Russ Hersch - [email protected]