home *** CD-ROM | disk | FTP | other *** search
/ ftp.pasteur.org/FAQ/ / ftp-pasteur-org-FAQ.zip / FAQ / microcontroller-faq / primer < prev   
Encoding:
Internet Message Format  |  1997-09-13  |  181.7 KB

  1. Path: senator-bedfellow.mit.edu!faqserv
  2. From: russ@shani.net (Russ Hersch)
  3. Newsgroups: comp.arch.embedded,comp.robotics.misc,comp.realtime,sci.electronics.design,alt.comp.hardware.homebuilt,comp.answers,sci.answers,alt.answers,news.answers
  4. Subject: Embedded Processor and Microcontroller primer and FAQ
  5. Supersedes: <microcontroller-faq/primer_857391387@rtfm.mit.edu>
  6. Followup-To: poster
  7. Date: 12 Sep 1997 10:51:14 GMT
  8. Organization: none
  9. Lines: 4082
  10. Approved: news-answers-request@MIT.EDU
  11. Expires: 27 Oct 1997 10:50:49 GMT
  12. Message-ID: <microcontroller-faq/primer_874061449@rtfm.mit.edu>
  13. NNTP-Posting-Host: penguin-lust.mit.edu
  14. Summary: This article is a primer and general FAQ about embedded
  15.          processors and microcontrollers.
  16. X-Last-Updated: 1997/09/11
  17. Originator: faqserv@penguin-lust.MIT.EDU
  18. 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
  19.  
  20. Archive-name: microcontroller-faq/primer
  21. Posting-Frequency: monthly
  22. Last-modified: September 11, 1997
  23.  
  24. This article is a primer and general FAQ about embedded processors and
  25. microcontrollers.  Included is a collection of information sources.
  26.  
  27.  
  28. The following topics are addressed:
  29.  
  30.        0)  Rantings and ravings (to make the FAQ zero-based)
  31.  
  32.        1)  ABOUT THIS FAQ
  33.      1.1)  Who put this FAQ together?
  34.      1.2)  How can I contribute to this FAQ?
  35.      1.3)  What newsgroups will this FAQ be posted to?
  36.      1.4)  May I distribute this FAQ or post it somewhere else?
  37.  
  38.        2)  MICROCONTROLLERS
  39.      2.1)  What is a Microcontroller?
  40.      2.2)  Applications
  41.      2.3)  Flavors
  42.  
  43.        3)  THE MICROCONTROLLER MARKET
  44.      3.1)  Shipments
  45.      3.2)  Industrial applications
  46.      3.3)  Deciding whose microcontroller to use
  47.      3.4)  The players
  48.  
  49.        4)  MICROCONTROLLER FEATURES
  50.      4.1)  Fabrication techniques
  51.      4.2)  Architectural features
  52.      4.3)  Advanced Memory options
  53.      4.4)  Power Management and Low Voltage
  54.      4.5)  I/O
  55.      4.6)  Interrupts
  56.      4.7)  Special microcontroller features
  57.  
  58.        5)  SOME POPULAR MICROCONTROLLERS
  59.  
  60.        6)  GETTING STARTED WITH MICROCONTROLLERS
  61.      6.1)  Evaluation Kits/Boards
  62.      6.2)  Easy chips to use
  63.      6.3)  Software (cheap and easy)
  64.  
  65.        7)  MICROCONTROLLER PROGRAMMING LANGUAGES
  66.      7.1)  Machine/Assembly language
  67.      7.2)  Interpreters
  68.      7.3)  Compilers
  69.      7.4)  Fuzzy Logic and Neural Networks
  70.  
  71.        8)  DEVELOPMENT TOOLS
  72.      8.1)  Simulators
  73.      8.2)  Resident Debuggers
  74.      8.3)  Emulators
  75.      8.4)  Good Stereo System
  76.  
  77.        9)  FINDING OUT MORE ABOUT MICROCONTROLLERS
  78.      9.1)  Books
  79.      9.2)  Data and Reference Books
  80.      9.3)  Periodicals
  81.      9.4)  USENET newsgroups
  82.      9.5)  Internet sources of information on specific microcontrollers
  83.  
  84.       10)  MICROCONTROLLER FREE SOFTWARE SOURCES
  85.     10.1)  FTP sites
  86.     10.2)  WEB pages
  87.     10.2)  BBSs
  88.     10.3)  Mailing lists
  89.  
  90.       11)  SOURCES FOR PARTS
  91.  
  92.  
  93. 0)  Rantings and ravings
  94.  
  95.     Disclaimer:  Just so it is understood, the "rantings and ravings" are
  96.     my rantings and ravings.  My readers are refined and sophisticated
  97.     and would never rant or rave.  I, on the other hand, sit in front of
  98.     the TV in torn underwear and drink beer out of the bottle.
  99.  
  100.     =====> OK, I know this FAQ is long. Very long. Well... it's
  101.     ridiculously long. If you are inconvenienced or strenuously object to
  102.     the posting of this FAQ, please DON'T FLAME me or send me nasty mail.
  103.     Just think what I have to go through. This FAQ takes a lot of my
  104.     time, of which I have very little to spare. I'm open for suggestions.
  105.     I've considered the following:
  106.         - splitting it up into smaller parts
  107.         - eliminating certain sections which may no longer be relevant -
  108.           the web and search engines certainly seem to make a lot of this
  109.           FAQ obsolete (or am I mistaken on this?)
  110.         - not posting it to the newsgroups and just turning this
  111.           whole mess into a [large] web page (the problem with this
  112.           is that I don't have a web site)
  113.         - forgetting about it all together and reminding my kids that I'm
  114.           their father (if you all tell me to go packing, I'll gladly
  115.           fold up shop and devote more time to family, friends, and
  116.           personal hygiene)
  117.     I would be happy to hear ideas on how this FAQ could be improved for
  118.     the reader. If it makes MY job easier, then that's even better.
  119.  
  120.  
  121.     OK, with that out of the way, let's get on with it...
  122.  
  123.     Techno-Wimp, has announced the next generation of their wildly
  124.     successful MIL (Mother-In-Law) transducer.  Dubbed the MIL-II, it now
  125.     includes Techno-Wimp's proprietary new breakthrough technology, MMX
  126.     (Mad Mother-in-law Extensions).  Utilizing patented heuristic
  127.     algorithms, the MIL-II achieves a remarkable performance rating of 15
  128.     million MIPS (Mother-In-law Periphery Scans) per second.  The
  129.     previous WOMF ("Whoa, outta my face!") technology has been updated
  130.     and improved, and together with MMX permits the MIL-II to
  131.     concurrently detect multiple stimuli. This provides the designer with
  132.     the necessary safety margin when using the MIL-II in mission critical
  133.     applications.
  134.  
  135.     The MIL-II is implemented in Techno-Wimp's patented new fabrication
  136.     technique, 0.25 micron JMOS (Jello Mold On Silicon). The MIL-II also
  137.     features a new packaging technique called PSC/CEC (Plastic Slip
  138.     Covers with Card Edge Connector). PSC/CEC was designed to allow easy
  139.     upgrading to future products in the MIL transducer line.
  140.  
  141.  
  142.     I hate it when I'm stupid, and well, I really did it this time. I
  143.     omitted an important source of information - EDN magazine. Always
  144.     full of timely features, important design articles, and the popular
  145.     Design Ideas column. In addition, the 24th edition of the EDN
  146.     microprocessor directory is due out this fall. This directory is an
  147.     invaluable aid for designers. The EDN web site also has a lot of
  148.     important information and software, and is improving all the time.
  149.     Worth taking a look at:  http://www.ednmag.com/
  150.  
  151.  
  152.     UMPS (Universal Microcontroller Program Simulator) is a new package
  153.     from Virtual Micro Design in France. It simulates the following
  154.     microcontrollers: 8051, 68HC705, PIC, ST62xx, and the 68HC11. The
  155.     main feature of UMPS is the ability to build a virtual
  156.     microcontroller board on screen by connecting various virtual
  157.     resources (switches, LEDs, displays, A/D, D/A, I2C devices, logic
  158.     functions, etc.) together with the desired processor. Then when
  159.     debugging your software, you can see "real results" without having to
  160.     worry about actually building the hardware.
  161.  
  162.     Processors that are not supported can be added by the user using
  163.     Virtual Micro Design's toolkit. Additional virtual resources can be
  164.     added by writing your own DLL to support the desired device.
  165.  
  166.     UMPS includes an integrated assembler/disassembler and debugger,
  167.     extensive documentation on the supported processors.
  168.  
  169.     This is a very slick package. The English needs a lot of work, but
  170.     the software itself is first class, easy to use, and incredibly
  171.     powerful. For more information:
  172.          Virtual Micro Design
  173.          I.D.L.S.
  174.          Technopole Izarbel
  175.          64210 BIDART
  176.          FRANCE
  177.          ++33-559-438-458   Fax: ++33-559-438-401
  178.          Email: p.techer@idls.izarbel.tm.fr
  179.  
  180.  
  181.     If you'd like to start learning about microcontrollers, but the
  182.     thought of finding all the parts and then building one scares you,
  183.     take a look at the line of boards available from American Educational
  184.     Systems. They have three boards: AES-51 (8051), AES-11 (68hc11), and
  185.     AES-88 (8088). All three boards are built along the same lines and
  186.     include RAM, ROM, LCD display, keypad, A/D, serial ports, digital I/O
  187.     ports, and logic probe. Also included is a full bookshelf of
  188.     documentation. These boards are ridiculously easy to use and program
  189.     - you can get started experimenting right away.
  190.  
  191.     This is a perfect system for students and hobbyists. Even
  192.     professionals will find this system useful as a prototyping tool and
  193.     test bed. Highly recommended.
  194.  
  195.     For more information, contact:
  196.           American Educational Systems
  197.           970 West 17th St.
  198.           Santa Ana, CA  92706  USA
  199.           (800)730-3232 or (714)550-8094   Fax: (714)550-9941
  200.  
  201.  
  202.     Check out Peter H. Anderson's web site. Lots of good microcontroller
  203.     interfacing ideas and plans, PIC projects, and miscellaneous
  204.     electronics.
  205.          http://www.access.digex.net/~pha
  206.  
  207.  
  208.     Barry Kauler, of GOOFEE fame, has done it again. He's written another
  209.     RTOS, called CREEM. (He must stay up weeks thinking up names for this
  210.     stuff. The names probably come to him in nightmares.) As hes says
  211.     about this new system, "It's very unusual and very easy to use. It is
  212.     probably the easiest way yet that anyone has come up with to do
  213.     concurrent (multitasking) programming on a microcontroller." The
  214.     first version is for the 8051 and is only 560 bytes and will run in a
  215.     chip with only the internal RAM.
  216.  
  217.     Read the intro page and download CREEM (with source code) from the
  218.     GOOFEE web site:
  219.          http://www.goofee.com/creem.htm
  220.  
  221.  
  222.     Point your browser at http://www.debco.com/ and take a look at what
  223.     the gang at Debco has to offer. Lots of parts, kits, and assorted
  224.     computer hardware. The best part is the series of Electronic
  225.     Experimentors Journals that they've made available on-line. Chock
  226.     full of project plans, ham radio topics (antennas and QRP), and
  227.     computer questions and answers, these on-line journals are (IMHO) one
  228.     of the highlights of the web. The gang at Debco should be commended.
  229.     Recommended reading.
  230.  
  231.  
  232.     Michael Dolinsky, Ph.D. and his team at Scaryna's Gomel State
  233.     University in Belarus, have been doing research in embedded systems
  234.     development tools. This research proposes methods, tools, and
  235.     application results for integrated design of embedded
  236.     hardware-software systems. Methods include tuning on selected
  237.     hardware and designing hardware in parallel with the software.
  238.  
  239.     For information on this research, entitled, "High-Level Design Of
  240.     Embedded Hardware-Software Systems",  check out the following web
  241.     sites:
  242.          http://alcatraz.gmd.de:9422/castle/inter/inter.htm
  243.          http://www.internet.no/kennethi/belarus/companies/sprl/
  244.     Their Inter Demo Version is available by anonymous ftp at:
  245.          borneo.gmd.de (129.26.12.20)
  246.          cd pub/SYDIS/inter
  247.  
  248.  
  249.     Microtec announces a new quarterly newsletter, "Newbits" as a forum
  250.     for their customers to share ideas:
  251.          http://www.mri.com/newbits/newbits.html
  252.  
  253.  
  254.     Take a peak at Magnus Danielson's collection of CPU stuff at:
  255.          http://www.it.kth.se/~e93_mda/electronics/logic/cpu/
  256.  
  257.  
  258.     Good news... After reading about the 1 bit powerhouse (MC14500) in
  259.     this FAQ, Christian Brunschen checked out Motorola's web site. "lo
  260.     and behold I found,at
  261.     <URL:http://mot-sps.com/books/sg379/pdf/comcomponents3rev6.pdf>, a
  262.     document called 'Commercial Components' with a remark 'Effective
  263.     date: July 5, 1997'. On page 5 (of 10) there is a line stating
  264.           MC14500BCP      CMOS 1-BIT ICU
  265.     plus some codes, stating that this was a Proprietary device, part of
  266.     something called the 'Phoenix Program', and that the $200 order
  267.     minimum was waived -- but nothing about it being out of production.
  268.     Rather, the'effective date' of july 5, 1997, would indicate that the
  269.     chip is actually being produced as I am writing this. Also, the
  270.     'Phoenix Program' sounds like it could be some sort of 'let's revive
  271.     some chips which we took out or production, just because' (Phoenix
  272.     was the bird who died by fire every evening, and reborn from the
  273.     ashes in the morning, if I recall correctly), so this could very well
  274.     mean that production of this chip has been reinstated. Alas, I have
  275.     not been able to find out any more info on Motorola's site as to what
  276.     this 'Phoenix Program'_actually_ is."
  277.  
  278.  
  279.     And you won't believe this, but Scott Finneran ALSO wrote about the
  280.     14500. Looks like we'll have to start a USENET newsgroup on this
  281.     chip.
  282.  
  283.     Scott writes...
  284.  
  285.     "The Motorolla 14500 is alive and well down-under. I recently (about
  286.     a year ago) performed some contract work for an Australian power
  287.     station called Loy-Yang 'B'. They have a system manufactured in the
  288.     early 1980's consisting of amongst other things hundreds of modules
  289.     containing 14500 processors. These little beasts run at a whopping
  290.     speed of 1KHz (liquid nitrogen coolant system was not necessary!!)
  291.     and are used to control the start-up sequencing logic for firing up
  292.     the power station boilers and turbines. The processor module in this
  293.     system contained three 4-bit EPROMs in parallel (the early PICs were
  294.     12-bit I believe... spooky!). The first EPROM contained the op-code
  295.     for the processor while the other two contained an 8-bit operand.
  296.     Note: the operand was never fed into the processor (remember it is a
  297.     single bit device) but directly out onto a parallel bus to select
  298.     from a variety of digital inputs and outputs whose value was fed into
  299.     the 1-bit data-bus of the processor.
  300.  
  301.     "My work involved reverse engineering their compiler to run on an
  302.     MS-DOS platform. The "language" was basically boolean logic equations
  303.     with little features such as software based flip-flops and hardware
  304.     based timers. The compiler produced 14500 assembly language which was
  305.     fed into the assembler that I also wrote as part of the package. With
  306.     only sixteen instructions and 1 addressing mode, the assembler wasn't
  307.     exactly a lot of work to produce.
  308.  
  309.     The system (and my compiler) are still in use today. The only
  310.     problems are apparently the occasional timing capacitor goes dry in
  311.     the 1KHz clock generator circuit (yes it's a 555)."
  312.  
  313.     Well, let's all scrap our '51 and hc11 projects and move to the
  314.     14500. Looks like we've got a trend here. Who knows, maybe Motorola
  315.     will release a new generation 2-bit version? :-))
  316.  
  317.  
  318.     Embedded.com is the on-line union of three embedded information
  319.     sources, Embedded Systems Programming Magazine, Miller Freeman
  320.     Directories, and the Embedded Systems Conferences. There is no charge
  321.     to users of this site, which contains hands-on articles, editorials,
  322.     and code downloads.
  323.          http://www.embedded.com
  324.  
  325.  
  326.     Vasu Srinivasan recommends the book "Using the M68HC11
  327.     Microcontroller: A Guide to Interfacing and Programming" from
  328.     Prentice-Hall. He says this book is useful if you're considering
  329.     using the 68HC11EVB. See section 9.1 in this FAQ more information on
  330.     this book.
  331.  
  332.  
  333.     Take care of yourselves,
  334.  
  335.               Uncle Russ
  336.  
  337.  
  338. 1)  ABOUT THIS FAQ
  339.  
  340. 1.1)  Who put this FAQ together?
  341.  
  342.     From time to time, general questions about microcontrollers and
  343.     embedded processors (from beginners to experienced designers) pop up
  344.     in the newsgroups.  It seemed that a general primer/FAQ might be
  345.     useful.
  346.  
  347.     Much of this document could be considered as a sort of a primer on
  348.     microcontrollers, with some material on embedded processors being
  349.     slowly added.  For those of you with previous experience, sections 9
  350.     and 10 might be of special interest (especially for those of you
  351.     looking for that elusive "free COBOL compiler for the 1802").
  352.  
  353.  
  354. 1.2)  How can I contribute to this list?
  355.  
  356.     I please ask that if you have any suggestions or additions, or you
  357.     would like to correct any of the information contained herein, please
  358.     send me a note.
  359.          My Email address is: russ@shani.net
  360.          My Smail address is:
  361.                Russ Hersch
  362.                HaVradim 11
  363.                Ginot Shomron
  364.                ISRAEL
  365.  
  366.     Thanks to recent contributors:
  367.           Magnus Danielson
  368.           Marius Gafen (NSI, Israel)
  369.           Michael Dolinsky, Ph.D. (Scaryna's Gomel State University,
  370.              Belarus)
  371.           Barry Kauler (the GOOFEE guy)
  372.           Christian Brunschen
  373.           Michael Markowitz (EDN magazine)
  374.           Mark Meyer (American Educational Systems)
  375.           Philippe Techer (Virtual Micro Design)
  376.           Thomas Vegeby
  377.           Ron Fredericks (editor, Software Forum Newsletter)
  378.           Leticia Smith (webmaster, embedded.com)
  379.           Bo Eriksson (Uppsala University, Sweden)
  380.           Henry Spencer
  381.           Mihai-Costin Manolescu
  382.           Vasu Srinivasan
  383.           Scott Finneran
  384.           Tarjei T. Jensen
  385.           John Doe (Techno-Wimp)
  386.  
  387.  
  388.     Very special thanks to Robin L. Getz (National Semiconductor) who
  389.     probably could be considered an honorary co-author of this FAQ. :-)
  390.  
  391.     Also, thanks to those who have posted questions and to those who have
  392.     posted answers.  Thanks to "all my net friends" who send suggestions
  393.     and encouragement, as well as the occasional question.  Special
  394.     thanks to my mother-in-law, who thankfully doesn't know this FAQ
  395.     exists ;-).
  396.  
  397.  
  398. 1.3)  What newsgroups will this FAQ be posted to?
  399.  
  400.     This FAQ will be posted to the following newsgroups:
  401.           comp.arch.embedded
  402.           comp.robotics.misc
  403.           comp.realtime
  404.           sci.electronics.design
  405.           alt.comp.hardware.homebuilt
  406.           comp.answers
  407.           sci.answers
  408.           alt.answers
  409.           news.answers
  410.  
  411.     I will post once a month - on or about the 26th of each month.
  412.  
  413.  
  414. 1.4)  May I distribute this FAQ or post it somewhere else?
  415.  
  416.     I am putting no restrictions on the use of this FAQ except - It must
  417.     be distributed in its entirety with the copyright notice, and no
  418.     financial gain may be realized from it.  After all, I have spent, and
  419.     continue to spend, a lot of time on this.
  420.  
  421.     For this reason I have appended a copyright statement to the end of
  422.     this FAQ.  I feel pretty silly doing this, but I just want to protect
  423.     myself.  The copyright does not limit the use of this list for
  424.     noncommercial purposes.  I hereby give my permission to one and all
  425.     to pass this list around and post it wherever you want - as long as
  426.     it is not for financial gain.
  427.  
  428.         Thank you.
  429.  
  430.  
  431. 2)  MICROCONTROLLERS AND EMBEDDED PROCESSORS
  432.  
  433.  
  434. 2.1)  What is a Microcontroller?
  435.  
  436.     A controller is used to control (makes sense!) some process or aspect
  437.     of the environment.  A typical microcontroller application is the
  438.     monitoring of my house.  As the temperature rises, the controller
  439.     causes the windows to open.  If the temperature goes above a certain
  440.     threshold, the air conditioner is activated.  If the system detects
  441.     my mother-in-law approaching, the doors are locked and the windows
  442.     barred.  In addition, upon detecting that my computer is turned on,
  443.     the stereo turns on at a deafening volume (for more on this, see the
  444.     section on development tools).
  445.  
  446.     At one time, controllers were built exclusively from logic
  447.     components, and were usually large, heavy boxes (before this, they
  448.     were even bigger, more complex analog monstrosities).  Later on,
  449.     microprocessors were used and the entire controller could fit on a
  450.     small circuit board.  This is still common - you can find many [good]
  451.     controllers powered by one of the many common microprocessors
  452.     (including Zilog Z80, Intel 8088, Motorola 6809, and others).
  453.  
  454.     As the process of miniaturization continued, all of the components
  455.     needed for a controller were built right onto one chip.  A one chip
  456.     computer, or microcontroller was born.  A microcontroller is a highly
  457.     integrated chip which includes, on one chip, all or most of the parts
  458.     needed for a controller.  The microcontroller could be called a
  459.     "one-chip solution".  It typically includes:
  460.           CPU (central processing unit)
  461.           RAM (Random Access Memory)
  462.           EPROM/PROM/ROM (Erasable Programmable Read Only Memory)
  463.           I/O (input/output) - serial and parallel
  464.           timers
  465.           interrupt controller
  466.  
  467.     By only including the features specific to the task (control), cost
  468.     is relatively low.  A typical microcontroller has bit manipulation
  469.     instructions, easy and direct access to I/O (input/output), and quick
  470.     and efficient interrupt processing.  Microcontrollers are a "one-chip
  471.     solution" which drastically reduces parts count and design costs.
  472.  
  473.  
  474. 2.2)  What is an embedded controller?
  475.  
  476.     Hah!  Why not ask an easy question like "Did Adam have a navel?" or
  477.     "Did Eve?"  <Can't say about Adam, but well, Eve probably did.  She
  478.     would have looked pretty silly in a fig leaf, without a navel.>
  479.  
  480.     Simply (and naively stated) an embedded controller is a controller
  481.     that is embedded in a greater system.  A rigid definition is
  482.     difficult if not impossible to formulate, since the usual response is
  483.     "most embedded controllers are...".  The problem here is "most".  We
  484.     can't seem to shake that word from the definition.  No matter how
  485.     clever you feel your definition is, some wiseguy will come along and
  486.     find an exception, or two, or 50.
  487.  
  488.     You COULD say that an embedded controller is a controller (or
  489.     computer) that is embedded into some device for some purpose other
  490.     than to provide general purpose computing.  Of course, someone will
  491.     eventually prove you wrong, but who cares?
  492.  
  493.     A common example of a general purpose computer, would be a typical PC
  494.     clone.  The x86 processor in this machine can't really be considered
  495.     an embedded controller, since the machine is typically used for
  496.     general purpose computing.  However, what is general purpose
  497.     computing?  Take this same PC clone, turn it into a multi-media
  498.     machine, and voila!  You have an appliance - much on the order of a
  499.     microwave oven or television.  Is the x86 processor now considered an
  500.     embedded controller  Or, is the PC clone itself now considered an
  501.     embedded controller, controlling the multi-media peripherals?  Hey -
  502.     I don't know about you, but I'm getting too old for this nonsense.
  503.  
  504.     Is a microcontroller an embedded processor?  Is an embedded processor
  505.     a microcontroller?  What's the difference between an embedded
  506.     processor and a microcontroller?  Well, today - not much.  With the
  507.     continuing process of high scale integration continuing at a dizzying
  508.     pace, many standard architecture processors are turning up as
  509.     microcontrollers.  A few such examples are the Motorola 68EC300,
  510.     Intel 386 EX, and the IBM PowerPC 403GB.  These chips could be called
  511.     super-microcontrollers.
  512.  
  513.     So, what's the difference between an embedded processor and a
  514.     microcontroller?  I wouldn't touch that question with a ten foot
  515.     logic probe.
  516.  
  517.     We might be safe by stating that an embedded processor controls
  518.     something (for example controlling a device such as a microwave oven,
  519.     car braking system, or a cruise missile).  Is this always true?
  520.     Maybe.  Maybe not.  You know, it just doesn't end.
  521.  
  522.     The main thing is not to get to hung up on precise definitions.
  523.     Black and white?  Hell no, we've got grey scale, dithering,
  524.     diffusion, you name it!  Same thing goes here with embedded
  525.     controllers, just go with the flow.  It all depends on your point of
  526.     view.
  527.  
  528.     Alright, if you really must insist, we'll take a stab at defining
  529.     what an embedded controller is - realize however that there will be
  530.     many exceptions.  Embedded controllers adhere to a philosophy similar
  531.     to that of microcontrollers, high integration.  By including [many]
  532.     features necessary for the task at hand, an embedded controller
  533.     (processor) can be a powerful yet cost effective solution.  However,
  534.     where a microcontroller [almost by definition] is a computer on a
  535.     chip, an embedded controller might need external components before it
  536.     is considered a "computer."  This is especially true regarding RAM.
  537.     Since including large amounts of RAM (megabytes) on a processor is
  538.     not really practical (due to cost and available silicon real estate)
  539.     and because many embedded controllers are real powerhouses requiring
  540.     large amounts of RAM, the RAM is often external to the processor.
  541.  
  542.  
  543. 2.3)  Applications
  544.  
  545.     In addition to the above home monitoring system, embedded processors
  546.     and microcontrollers are frequently found in: appliances (microwave
  547.     oven, refrigerators, television and VCRs, stereos), computers and
  548.     computer equipment (laser printers, modems, disk drives), automobiles
  549.     (engine control, diagnostics, climate control), environmental control
  550.     (greenhouse, factory, home), instrumentation, aerospace, and
  551.     thousands of other uses.  In many items, more than one processor can
  552.     be found.
  553.  
  554.     Microcontrollers are typically used where processing power isn't so
  555.     important.  Although some of you out there might find a microwave
  556.     oven controlled by a Unix system an attractive idea, controlling a
  557.     microwave oven is easily accomplished with the smallest of
  558.     microcontrollers.  On the other hand, if you're putting together a
  559.     cruise missile to solve the problem of your neighbor's dog barking at
  560.     3 in the morning, you'll probably need to use processors with a bit
  561.     more computing power.
  562.  
  563.     Embedded processors and microcontrollers are used extensively in
  564.     robotics.  In this application, many specific tasks might be
  565.     distributed among a large number of controllers in one system.
  566.     Communications between each controller and a central, possibly more
  567.     powerful controller (or micro/mini/mainframe) would enable
  568.     information to be processed by the central computer, or to be passed
  569.     around to other controllers in the system.
  570.  
  571.     A special application that microcontrollers are well suited for is
  572.     data logging.  Stick one of these chips out in the middle of a corn
  573.     field or up in a ballon, and monitor and record environmental
  574.     parameters (temperature, humidity, rain, etc).  Small size, low power
  575.     consumption, and flexibility make these devices ideal for unattended
  576.     data monitoring and recording.
  577.  
  578.  
  579. 2.4)  Flavors
  580.  
  581.     Embedded processors come in many flavors and varieties.  Depending on
  582.     the power and features that are needed, you might choose a 4, 8, 16,
  583.     or 32 bit microcontroller.  Standard microprocessors (such as the
  584.     Motorola 68000 or National 32032) are frequently used as powerful
  585.     embedded controllers.  In addition, specialized processors are
  586.     available which include features specific for communications,
  587.     keyboard handling, signal processing, video processing, and other
  588.     tasks.
  589.  
  590.  
  591. 3)  THE MICROCONTROLLER MARKET
  592.  
  593.     Thanks to Robin Getz of National Semiconductor for supplying much of
  594.     the material in this section.
  595.  
  596.  
  597. 3.1)  Shipments
  598.  
  599.             WorldWide Microcontroller Shipments (in millions of dollars)
  600.  
  601.             '90   '91   '92   '93   '94   '95   '96   '97   '98   '99   '00
  602.      4-bit 1,393 1,597 1,596 1,698 1,761 1,826 1,849 1,881 1,856 1,816 1,757
  603.      8-bit 2,077 2,615 2,862 3,703 4,689 5,634 6,553 7,529 8,423 9,219 9,715
  604.     16-bit   192   303   340   484   810 1,170 1,628 2,191 2,969 3,678 4,405
  605.  
  606.  
  607.                  WorldWide Microcontroller Shipments (in Millions)
  608.  
  609.              '90   '91   '92   '93   '94   '95   '96   '97   '98   '99   '00
  610.      4-bit   778   906   979  1036  1063  1110  1100  1096  1064  1025   970
  611.      8-bit   588   753   843  1073  1449  1803  2123  2374  2556  2681  2700
  612.     16-bit    22    38    45    59   106   157   227   313   419   501   585
  613.  
  614.  
  615.                                                    Source: WSTS & ICE - 1994
  616.  
  617.     If you were wondering why you should bother learning about
  618.     microcontrollers - well, the tables above should fairly scream the
  619.     answer at you.  Microcontrollers will be *BIG* business - we're
  620.     talking piles of cash - billions!
  621.  
  622.     Notice that even the lowly 4-bit device is holding its own - what use
  623.     is a 16-bit part in a toaster oven?  Also notice that the 8-bit
  624.     market just keeps growing, and will probably continue to grow.  8-bit
  625.     devices account for over half of the market, and will eventually grab
  626.     even more.  Now do you understand why every silicon manufacturer is
  627.     really pushing their 8-bit microcontrollers?
  628.  
  629.  
  630. 3.2)  Industrial applications
  631.  
  632.     Average Semiconductor Content per Passenger Automobile (in Dollars)
  633.  
  634.         '90   '91   '92   '93   '94   '95   '96   '97   '98   '99   '00
  635.      $  595   634   712   905 1,068 1,237 1,339 1,410 1,574 1,852 2,126
  636.  
  637.                                                      Source: ICE - 1994
  638.  
  639.     The automotive market is the most important single driving force in
  640.     the microcontroller market, especially at it's high end.  Several
  641.     microcontroller families were developed specifically for automotive
  642.     applications and were subsequently modified to serve other embedded
  643.     applications.
  644.  
  645.     The automotive market is demanding.  Electronics must operate under
  646.     extreme temperatures and be able to withstand vibration, shock, and
  647.     EMI.  The electronics must be reliable, because a failure that causes
  648.     an accident can (and does) result in multi-million dollar lawsuits.
  649.     Reliability standards are high - but because these electronics also
  650.     compete in the consumer market - they have a low price tag.
  651.  
  652.     Automotive is not the only market that is growing.  DataQuest says
  653.     that in the average North American's home there are 35
  654.     microcontrollers.  By the year 2000 - that number will grow to 240.
  655.     Consumer electronics is a booming business.
  656.  
  657.  
  658. 3.3)  Deciding whose microcontroller to use
  659.  
  660.     When deciding which devices to implement in a design, there are lots
  661.     of things to consider besides who else is using these devices (and
  662.     how many are they using).
  663.       - Can I expect help when I am having problems?
  664.       - What development tools are available and how much do they cost?
  665.       - What sort of documentation is available (reference manuals,
  666.         application notes, books)?
  667.       - Can I work a deal by purchasing more devices at one manufacturer?
  668.         That is, purchasing not only the microcontroller, but also
  669.         peripherals (A/D, memory, voltage regulator, etc.) from one
  670.         company).
  671.       - Do they support OTPs, windowed devices, mask parts?
  672.  
  673.  
  674. 3.4)  The players
  675.  
  676.  
  677.                  MICROPROCESSORS
  678.        Rank                   Sales ($ millions)
  679.     1995  1994   Company        1995      1994
  680.     -----------------------------------------------
  681.       1     1    Intel       $10,800    $8,036
  682.       2     3    AMD             881       992
  683.       3     2    Motorola        781       827
  684.       4    11    IBM             468       297
  685.       5     6    TI              219       202
  686.       6     4    Cyrix           210       240
  687.       7     5    Hitachi         188        66
  688.       8     7    NEC             100        82
  689.       9     8    LSI Logic        58        51
  690.      10    10    IDT              45        25
  691.  
  692.                                         Source: In-Stat Inc.
  693.  
  694.  
  695.                  MICROCONTROLLERS
  696.        Rank                     Sales ($ millions)
  697.     1995  1994   Company          1995      1994
  698.     -----------------------------------------------
  699.       1     1    Motorola       $1,781    $1,511
  700.       2     2    NEC             1,421     1,208
  701.       3     4    Mitsibishi        945       708
  702.       4     3    Hitachi           899       782
  703.       5     5    Intel             835       605
  704.       6     6    TI                807       534
  705.       7     8    Philips           524       345
  706.       8     7    Matsushita        500       413
  707.       9    10    Lucent (AT&T)     492       275
  708.      10     9    Toshiba           400       328
  709.  
  710.                                         Source: In-Stat Inc.
  711.  
  712.  
  713.  
  714. 4)  MICROCONTROLLER FEATURES
  715.  
  716.     Thanks to Robin Getz of National Semiconductor who supplied some of
  717.     the material in this section.
  718.  
  719.  
  720. 4.1)  Fabrication techniques
  721.  
  722.     CMOS - Complementary Metal Oxide Semiconductor
  723.  
  724.        This is the name of a common technique used to fabricate most (if
  725.        not all) of the newer microcontrollers.  CMOS requires much less
  726.        power than older fabrication techniques, which permits battery
  727.        operation.  CMOS chips also can be fully or near fully static,
  728.        which means that the clock can be slowed up (or even stopped)
  729.        putting the chip in sleep mode.  CMOS has a much higher immunity
  730.        to noise (power fluctuations or spikes) than the older fabrication
  731.        techniques.
  732.  
  733.  
  734.     PMP - Post Metal Programming (National Semiconductor)
  735.  
  736.        PMP is a high-energy implantation process that allows
  737.        microcontroller ROM to be programmed AFTER final metalization.
  738.        Usually ROM is implemented in the second layer die, with nine or
  739.        ten other layers then added on top.  That means the ROM pattern
  740.        must be specified early in the production process, and completed
  741.        prototypes devices won't be available typically for six to eight
  742.        weeks.  With PMP, however, dies can be fully manufactured through
  743.        metalization and electrical tests (only the passivation layers
  744.        need to be added), and held in inventory.  This means that ROM can
  745.        be programmed late in production cycle, making prototypes
  746.        available in only two weeks.
  747.  
  748.  
  749. 4.2)  Architectural features
  750.  
  751.     Von-Neuman Architecure
  752.  
  753.        Microcontrollers based on the Von-Neuman architecture have a
  754.        single "data" bus that is used to fetch both instructions and
  755.        data.  Program instructions and data are stored in a common main
  756.        memory.  When such a controller addresses main memory, it first
  757.        fetches an instruction, and then it fetches the data to support
  758.        the instruction.  The two separate fetches slows up the
  759.        controller's operation.
  760.  
  761.  
  762.     Harvard Architecture
  763.  
  764.        Microcontrollers based on the Harvard Architecture have separate
  765.        data bus and an instruction bus.  This allows execution to occur
  766.        in parallel.  As an instruction is being "pre-fetched", the
  767.        current instruction is executing on the data bus.  Once the
  768.        current instruction is complete, the next instruction is ready to
  769.        go.  This pre-fetch theoretically allows for much faster execution
  770.        than a Von-Neuman architecture, but there is some added silicon
  771.        complexity.
  772.  
  773.  
  774.     CISC
  775.  
  776.        Almost all of today's microcontrollers are based on the CISC
  777.        (Complex Instruction Set Computer) concept.  The typical CISC
  778.        microcontroller has well over 80 instructions, many of them very
  779.        powerful and very specialized for specific control tasks.  It is
  780.        quite common for the instructions to all behave quite differently.
  781.        Some might only operate on certain address spaces or registers,
  782.        and others might only recognize certain addressing modes.
  783.  
  784.        The advantages of the CISC architecture is that many of the
  785.        instructions are macro-like, allowing the programmer to use one
  786.        instruction in place of many simpler instructions.
  787.  
  788.  
  789.     RISC
  790.  
  791.        The industry trend for microprocessor design is for Reduced
  792.        Instruction Set Computers (RISC) designs.  This is beginning to
  793.        spill over into the microntroller market.  By implementing fewer
  794.        instructions, the chip designed is able to dedicate some of the
  795.        precious silicon real-estate for performance enhancing features.
  796.        The benefits of RISC design simplicity are a smaller chip, smaller
  797.        pin count, and very low power consumption.
  798.  
  799.        Among some of the typical features of a RISC processor:
  800.           - Harvard architecture (separate buses for instructions and
  801.             data) allows simultaneous access of program and data, and
  802.             overlapping of some operations for increased processing
  803.             performance
  804.           - Instruction pipelining increases execution speed
  805.           - Orthogonal (symmetrical) instruction set for programming
  806.             simplicity; allows each instruction to operate on any
  807.             register or use any addressing mode; instructions have no
  808.             special combinations, exceptions, restrictions, or side
  809.             effects
  810.  
  811.  
  812.     SISC
  813.  
  814.        Actually, a microcontroller is by definition a Reduced Instruction
  815.        Set Computer (at least in my opinion).  It could really be called
  816.        a Specific Instruction Set Computer (SISC).  The [original] idea
  817.        behind the microcontroller was to limit the capabilities of the
  818.        CPU itself, allowing a complete computer (memory, I/O, interrupts,
  819.        etc) to fit on the available real estate.  At the expense of the
  820.        more general purpose instructions that make the standard
  821.        microprocessors (8088, 68000, 32032) so easy to use, the
  822.        instruction set was designed for the specific purpose of control
  823.        (powerful bit manipulation, easy and efficient I/O, and so on).
  824.  
  825.        Microcontrollers now come with a mind boggling array of features
  826.        that aid the control engineer - watchdog timers, sleep/wakeup
  827.        modes, power management, powerful I/O channels, and so on.  By
  828.        keeping the instruction set specific (and reduced), and thus
  829.        saving valuable real estate, more and more of these features can
  830.        be added, while maintaining the economy of the microcontroller.
  831.  
  832.  
  833. 4.3)  Advanced Memory options
  834.  
  835.     EEPROM - Electrically Erasable Programmable Read Only Memory
  836.  
  837.        Many microcontrollers have limited amounts of EEPROM on the chip.
  838.        EEPROM seems more suited (becuase of its economics) for small
  839.        amounts of memory that hold a limited number of parameters that
  840.        may have to be changed from time to time.  This type of memory is
  841.        relatively slow, and the number of erase/write cycles allowed in
  842.        its lifetime is limited.
  843.  
  844.  
  845.     FLASH (EPROM)
  846.  
  847.        Flash provides a better solution than regular EEPROM when there is
  848.        a requirement for large amounts of non-volatile program memory.
  849.        It is both faster and permits more erase/write cycles than EEPROM.
  850.  
  851.  
  852.     Battery backed-up static RAM
  853.  
  854.        Battery backed-up static RAM is useful when a large non-volatile
  855.        program and DATA space is required.  A major advantage of static
  856.        RAM is that it is much faster than other types of non-volatile
  857.        memory so it is well suited for high performance application.
  858.        There also are no limits as to the number of times that it may be
  859.        written to so it is perfect for applications that keep and
  860.        manipulate large amounts of data locally.
  861.  
  862.  
  863.     Field programming/reprogramming
  864.  
  865.        Using nonvolatile memory as a place to store program memory allows
  866.        the device to be reprogrammed in the field without removing the
  867.        microcontroller from the system that it controls.  One such
  868.        application is in automotive engine controllers.  Reprogrammable
  869.        non-volatile program memory on the engine's microcontroller allows
  870.        the engine controller program to be modified during routine
  871.        service to incorporate the latest features or to compensate for
  872.        such factors as engine aging and changing emissions control laws
  873.        (or even to fix bugs!!).  Reprogramming of the microcontroller
  874.        could become a standard part the routine engine tune-up.
  875.  
  876.        Almost every application could benefit from this type of program
  877.        memory - If a modem's hardware supported it, you could remotely
  878.        upgrade your modem from Vfast to V.34, or incorporate new features
  879.        such as voice control or a digital answering machine.
  880.  
  881.  
  882.     OTP - One Time Programmable
  883.  
  884.        An OTP is a PROM (Programmable Read-Only-Memory) device.  Once
  885.        your program is written into the device with a standard EPROM
  886.        programmer, it can not be erased or modified.  This is usually
  887.        used for limited production runs before a ROM mask is done in
  888.        order to test code.
  889.  
  890.        A OTP (One Time Programmable) part uses standard EPROM, but the
  891.        package has no window for erasing.  Once your program is written
  892.        into the device with a standard EPROM programmer, it cannot be
  893.        erased or modified.  (Well, sort of - any bit that is a one can be
  894.        changed to a zero - but a bit that is a zero cannot be changed
  895.        into a one).
  896.  
  897.        As product design cycles get shorter, it is more important for
  898.        micro manufacturers to offer OTPs as an option.  This was commonly
  899.        used for limited production runs before a ROM mask in order to
  900.        test code.  However, one problem with Mask ROM is that
  901.        programming, setup, and engineering charges make it economical
  902.        only when the systems manufacturer purchases large quantities of
  903.        identically programmed micros.  Then when you discover THAT bug
  904.        (and find it and fix your code), you have quantities of *old
  905.        buggy* micros around that you have to throw away.  Not to mention
  906.        that lead time (the time when you submit your code to the micro
  907.        manufacture, to the time you receive your micro with your code on
  908.        it) can be at least 8 weeks, and as bad as 44 weeks.
  909.  
  910.  
  911.     Software protection
  912.  
  913.        Either by encryption or fuse protection, the programmed software
  914.        is protected against unauthorized snooping (reverse engineering,
  915.        modifications, piracy, etc.).
  916.  
  917.        This is only an option on OTPs and Windowed devices.  On Masked
  918.        ROM devices, security is not needed - the only way to read your
  919.        code would be to rip the microcontroller apart with a scanning
  920.        electron microscope - and how many people really have one of
  921.        those?
  922.  
  923.        Although - and this is a manufacturer's little know fact - when a
  924.        silicon manufacturer makes your ROMed microcontroller - they have
  925.        to test it in order to make sure that it is programmed properly.
  926.        (You should see what a spec of dust does on a mask :-)  In order
  927.        to test this, they must be able to read out the ROM and compare it
  928.        to the code you submitted.  This mode is known as test mode.  IN
  929.        TEST MODE YOU CAN READ OUT THE ROM OF ANY DEVICE.  Anybody who
  930.        tells you different, does not know what they are talking about -
  931.        or is lying.  This is usually not a big deal because test mode is
  932.        ***VERY*** confidential, and (usually) only known by that
  933.        manufacturer (i.e. you cannot put a device into test mode by
  934.        accident).  Test mode is ONLY applicable with ROMed devices.
  935.  
  936.  
  937. 4.4)  Power Management and Low Voltage
  938.  
  939.     Low voltage parts
  940.  
  941.        Since automotive applications have been the driving force behind
  942.        most microcontrollers, and 5 Volts is very easy to do in a car,
  943.        most microcontrollers have only supported 4.5 - 5.5 V operation.
  944.        In the recent past, as consumer goods are beginning to drive major
  945.        segments of the microcontroller market, and as consumer goods
  946.        become portable and lightweight, the requirement for 3 volt (and
  947.        lower) microcontrollers has become urgent (3 volts = 2 battery
  948.        solution / lower voltage = longer battery life).  Most low voltage
  949.        parts in the market today are simply 5 volt parts that were
  950.        modified to operate at 3 volts (usually at a performance loss).
  951.        Some micros being released now are designed from the ground up to
  952.        operate properly at 3.0 (and lower) voltages, which offer
  953.        comparable performance of the 5 volt devices.
  954.  
  955.  
  956.        Now, why are voltages REALLY going down on ICs?  Paul K. Johnson
  957.        (of Hewlett-Packard) explains:
  958.  
  959.        There are a few interesting rules of thumb regarding transistors:
  960.        1)  The amount of power they dissipate is proportional to their
  961.            size.  If you make a transistor half as big, it dissipates
  962.            half as much power.
  963.        2)  Their propagation delay is proportional to their size.  If you
  964.            make a transistor half as big, it's twice as fast.
  965.        3)  Their cost is proportional to the square of their size.  If
  966.            you make them half as big, they cost one quarter as much.
  967.  
  968.        If you make a transistor smaller, you improve the power, speed,
  969.        and cost.  The only drawback is that they are harder to make.
  970.        (Hey, how hard can it be for HP, IBM, Motorola, National, etc?
  971.        ed.)  Everybody in the world wants to make transistors smaller and
  972.        smaller, the advantages are enormous.
  973.  
  974.        For years people have been using 5 Volts to power IC's.  Because
  975.        the transistors were large, there was little danger damaging the
  976.        transistor putting this voltage across it.  However, now that the
  977.        transistors are getting so small, 5 Volts will actually fry them.
  978.        The only way around this is to start lowering the voltage.  This
  979.        is why people are now using 3 (actually 3.3) Volt logic, and lower
  980.        in the next few years.  It isn't just because of batteries.
  981.  
  982.  
  983.     Brownout Protection
  984.  
  985.        Brownout protection is usually an on-board protection circuit that
  986.        resets the device when the operating voltage (Vcc) is lower than
  987.        the brownout voltage.  The device is held in reset and will remain
  988.        in reset when Vcc stays below the Brownout voltage.  The device
  989.        will resume execution (from reset) after Vcc has risen above the
  990.        brownout Voltage.
  991.  
  992.  
  993.     Idle/Halt/Wakeup
  994.  
  995.        The device can be placed into IDLE/HALT mode by software control.
  996.        In both Halt and Idle conditions the state of the microcontroller
  997.        remains.  RAM is not cleared and any outputs are not changed.  The
  998.        terms idle and halt often have different definitions, depending on
  999.        the manufacturer.  What some call idle, others may call halt, and
  1000.        vice versa.  It can be confusing, so check the data sheet for the
  1001.        device in question to be sure.
  1002.  
  1003.        In IDLE mode, all activities are stopped except:
  1004.          - associated on-board oscillator circuitry
  1005.          - watchdog logic (if any)
  1006.          - the clock monitor
  1007.          - the idle timer (a free running timer)
  1008.        Power supply requirements on the microcontroller in this mode are
  1009.        typically around 30% of normal power requirements of the
  1010.        microprocessor.  Idle mode is exited by a reset, or some other
  1011.        stimulus (such as timer interrupt, serial port, etc.).  A special
  1012.        timer/counter (the idle timer) causes the chip to wake up at a
  1013.        regular interval to check if things are OK.  The chip then goes
  1014.        back to sleep.
  1015.  
  1016.        IDLE mode is extremely useful for remote, unattended data logging
  1017.        - the microprocessor wakes up at regular intervals, takes its
  1018.        measurements, logs the data, and then goes back to sleep.
  1019.  
  1020.        In Halt mode, all activities are stopped (including timers and
  1021.        counters).  The only way to wake up is by a reset or device
  1022.        interrupt (such as an I/O port).  The power requirements of the
  1023.        device are minimal and the applied voltage (Vcc) can sometimes be
  1024.        decreased below operating voltage without altering the state
  1025.        (RAM/Outputs) of the device.  Current consumption is typically
  1026.        less than 1 uA.
  1027.  
  1028.        A common application of HALT mode is in laptop keyboards.  In
  1029.        order to have maximum power saving, the controller is in halt
  1030.        until it detects a keystroke (via a device interrupt).  It then
  1031.        wakes up, decodes and sends the keystroke to the host, and then
  1032.        goes back into halt mode, waiting either for another keystroke, or
  1033.        information from the host.
  1034.  
  1035.  
  1036.     Multi-Input Wakeup (National Semiconductor)
  1037.  
  1038.        The Multi-Input WakeUp (MIWU) feature is used to return (wakeup)
  1039.        the microcontroller from either HALT or IDLE modes.  Alternately
  1040.        MIWU may also be used to generate up to 8 edge selectible external
  1041.        interrupts.  The user can select whether the trigger condition on
  1042.        the pins is going to be either a positive edge (low to high) or a
  1043.        negative edge (high to low).
  1044.  
  1045.  
  1046. 4.5)  I/O
  1047.  
  1048.     UART
  1049.  
  1050.        A UART (Universal Asynchronous Receiver Transmitter) is a serial
  1051.        port adapter for asynchronous serial communications.
  1052.  
  1053.  
  1054.     USART
  1055.  
  1056.        A USART (Universal Synchronous/Asynchronous Receiver Transmitter)
  1057.        is a serial port adapter for either asynchronous or synchronous
  1058.        serial communications.  Communications using a USART are typically
  1059.        much faster (as much as 16 times) than with a UART.
  1060.  
  1061.  
  1062.     Synchronous serial port
  1063.  
  1064.        A synchronous serial port doesn't require start/stop bits and can
  1065.        operate at much higher clock rates than an asynchronous serial
  1066.        port.  Used to communicate with high speed devices such as memory
  1067.        servers, display drivers, additional A/D ports, etc.  Can also be
  1068.        used to implement a simple microcontroller network.
  1069.  
  1070.  
  1071.     SPI (Motorola)
  1072.  
  1073.        An SPI (serial peripheral interface) is a synchronous serial port.
  1074.  
  1075.  
  1076.     SCI
  1077.  
  1078.        An SCI (serial communications interface) is an enhanced UART
  1079.        (asynchronous serial port).
  1080.  
  1081.  
  1082.     I2C bus - Inter-Integrated Circuit bus (Philips)
  1083.  
  1084.        The I2C bus is a simple 2 wire serial interface developed by
  1085.        Philips.  It was developed for 8 bit applications and is widely
  1086.        used in consumer electronics, automotive and industrial
  1087.        applications.  In addition to microcontrollers, several
  1088.        peripherals also exist that support the I2C bus.
  1089.  
  1090.        The I2C bus is a two line, multi-master, multi-slave network
  1091.        interface with collision detection.  Up to 128 devices can exist
  1092.        on the network and they can be spread out over 10 meters.  Each
  1093.        node (microcontroller or peripheral) may initiate a message, and
  1094.        then transmit or receive data.  The two lines of the network
  1095.        consist of the serial data line and the serial clock line.  Each
  1096.        node on the network has a unique address which accompanies any
  1097.        message passed between nodes.  Since only 2 wires are needed, it
  1098.        is easy to interconnect a number of devices.
  1099.  
  1100.  
  1101.     MICROWIRE/PLUS (National Semiconductor)
  1102.  
  1103.        MICROWIRE/PLUS is a serial synchronous bi-directional
  1104.        communications interface.  This is used on National Semiconductor
  1105.        Corporation's devices (microcontrollers, A/D converters, display
  1106.        drivers, EEPROMS, etc.).
  1107.  
  1108.  
  1109.     CAN & J1850
  1110.  
  1111.        CAN (Controller Area Network) is a mutiplexed wiring scheme that
  1112.        was developed jointly by Bosh and Intel for wiring in automobiles.
  1113.        J1850 is the SAE (Society of Automotive Engineers) multiplexed
  1114.        automotive wiring standard that is currently in use in North
  1115.        America.
  1116.  
  1117.        Both of these groups have the "NOT INVENTED HERE" syndrome and
  1118.        refuse to work with each other's standard. The standards are quite
  1119.        different and are not compatible at all.
  1120.  
  1121.        The CAN specification seems to be the one that is being used in
  1122.        industrial control both in North American and Europe.  With lower
  1123.        cost microcontrollers that support CAN, CAN has a good potential
  1124.        to take off.
  1125.  
  1126.        Ken Tindell points out that although the J1850 and CAN buses are
  1127.        incompatible at an electrical level, they are almost the same at a
  1128.        higher level. They both use short-frame priority arbitration based
  1129.        on 29-bit identifiers. At a software-level there is hope. Isn't
  1130.        there always?
  1131.  
  1132.  
  1133.     Analog to Digital Conversion (A/D)
  1134.  
  1135.        Converts an external analog signal (typically relative to voltage)
  1136.        and converts it to a digital representation.  Microcontrollers
  1137.        that have this feature can be used for instrumention,
  1138.        environmental data logging, or any application that lives in an
  1139.        analog world.
  1140.  
  1141.        The various types of A/D converters that can be found:
  1142.  
  1143.        Succesive Approximation A/D converters -- This the most common
  1144.        type of A/D and is used in the majority of microcontrollers.  In
  1145.        this technique, the converter figures out each bit at a time (most
  1146.        significant first) and finds if the next step is higher or lower.
  1147.        This way has some benefits - it takes exactly the same amount of
  1148.        time for any conversion - it is very common - (and therefore very
  1149.        cheap).  However it also has some disadvantages - it is slow - for
  1150.        every bit it takes at least one clock cycle - the best an 8-bit
  1151.        A/D can do is at least 8 clock cycles (and a couple for
  1152.        housekeeping).  Because it takes so long - it is a power hog as
  1153.        compared to the other types of A/Ds.
  1154.  
  1155.        Single Slope A/D converters -- This is the type of converter that
  1156.        you can build yourself (if the microcontroller has a couple of
  1157.        analog blocks on it).  Your single slope A/D converter would
  1158.        include Analog Mux / comparator / timer (8-bit timer = 8 bit A/D -
  1159.        16-bit timer = 16 bit A/D) with input capture and a constant
  1160.        current source.  The only microcontroller (that I know of) that
  1161.        has all of this on it is National's COP888EK.
  1162.  
  1163.        First Step is to clear the timer to 0000 and then start it.  It is
  1164.        a simple matter to hang an external capacitor, and charge it with
  1165.        the constant current source (linearly because of the current
  1166.        source) when the voltage on the cap exceeds the sampling voltage,
  1167.        the comparitor toggles, stops the timer - and voila - you have the
  1168.        voltage in uSecs - with 16-bit accuracy.  The only drawback is you
  1169.        can't really expect 16 bits (14 yes) - the conversion time varies
  1170.        quite a bit, and it is SLOW.
  1171.  
  1172.        Delta-Sigma A/Ds converters -- This type of A/D converter is found
  1173.        on higher-end DSPs.  These are the hardest to understand of the
  1174.        A/Ds because it just makes a best guess (a little National
  1175.        Semiconductor humor here :-).  Delta sigma A/Ds can be broken down
  1176.        into two main parts.
  1177.  
  1178.        The modulator which does the A/D conversion and the filter, which
  1179.        turns the output of the modulator into a format suitible for the
  1180.        microcontroller (or DSP).
  1181.  
  1182.        The modulator is very simple - it just compares the input voltage
  1183.        to the average of the last 100 (or so) modulator outputs and
  1184.        decides if the input is higher or lower than the average. This
  1185.        happens millions of times a second, resulting in a high speed
  1186.        single-bit datastream of 1s and 0s who's *average* is equal to the
  1187.        input voltage. Becuse the ouput is only a one or a zero, there are
  1188.        very few sources of errors. This is the main reason that
  1189.        delta-sigma A/Ds are **very** accurate.
  1190.  
  1191.        The filter comes after the modulator ... and this filter is
  1192.        essentially a big DSP block.  It must take the very high speed
  1193.        stream of ones and zeros and turn it into a slower speed stream of
  1194.        16-bit (or greater) words to be used by the microcontroller.  This
  1195.        process is called decimation and the filter is often called a
  1196.        "comb filter".  Another digital filter follows this stage and
  1197.        rejects unwanted frequencies.  This filter performs a similar
  1198.        function to the anti-aliasing filter required in many traditional
  1199.        A/D appliactions, but it does it at an unprecedented level of
  1200.        performance and at low cost.  This is the other major benefit of
  1201.        delta-sigma A/Ds.
  1202.  
  1203.        Flash A/D -- This is the basic architecure for the fastest
  1204.        category of A/Ds.  The flash converter involves looking at each
  1205.        level that is possible and instantaneously saying what level the
  1206.        voltage is at.  This is done by setting up comparators as
  1207.        threshold detectors with each detector being set up for a voltage
  1208.        exaclty 1 LSB higher than the detector below it.  The benefit of
  1209.        this architecture is that with a single clock cycle, you can tell
  1210.        exactly what the input voltage is - that is why it is so fast.
  1211.        The disadvantage is that to achieve 8-bit accuracy you need 256
  1212.        comparators and to achieve 10-bit accuracy you need 1024
  1213.        comparators. To make these comparators operate at higher speeds,
  1214.        they have to draw LOTS of current, and beyond 10 bits, the number
  1215.        of comparators required becomes totally unmanageable.
  1216.  
  1217.  
  1218.     D/A (Digital to Analog) Converters
  1219.  
  1220.        This feature takes a Digital number and converts it to a analog
  1221.        output. The number 50 would be changed to the analog output of
  1222.        (50/256 * 5Volts) = .9765625V on a 8-bit / 5 Volt system.
  1223.  
  1224.  
  1225.     Pulse width modulator
  1226.  
  1227.        Often used as a digital-to-analog conversion technique.  A pulse
  1228.        train is generated and regulated with a low-pass filter to
  1229.        generate a voltage proportional to the duty cycle.
  1230.  
  1231.  
  1232.     Pulse accumulator
  1233.  
  1234.        A pulse accumulator is an event counter.  Each pulse increments
  1235.        the pulse accumulator register, recording the number of times this
  1236.        event has occurred.
  1237.  
  1238.  
  1239.     Input Capture
  1240.  
  1241.        Input Capture can measure external frequencies or time intervals
  1242.        by copying the value from a free running timer into a register
  1243.        when an external event occurs.
  1244.  
  1245.  
  1246.     Comparator
  1247.  
  1248.        One or more standard comparators can sometimes be placed on a
  1249.        microcontroller die.  These comparators operate much like standard
  1250.        comparators however the input and output signals are available on
  1251.        the microcontroller bus.
  1252.  
  1253.  
  1254.     Mixed (Analog-Digital) Signal
  1255.  
  1256.        We live in an analog world where the information we see, hear,
  1257.        process, and exchange with each other, and with our mechanical and
  1258.        electronic systems, is always an analog quantity - pressure,
  1259.        temperature, voltage, current, air and water flow are always
  1260.        analog entities.  They can be digitized for more efficient
  1261.        sorting, storage and transmittal, but the interface - the input
  1262.        and output - is almost always analog.  Thus the essence of analog
  1263.        electronics lies in sensing continuously varying information,
  1264.        shaping and converting it for the efficiency of digital processing
  1265.        and transmission, and reshaping the digital data to an analog
  1266.        signal at the other end.
  1267.  
  1268.        Mixed analog-digital devices are being used increasingly to
  1269.        integrate the complex functions of high-speed telecommunications,
  1270.        or the real-time data processing demanded by industrial control
  1271.        systems and automotive systems.  Start looking for
  1272.        microcontrollers that have analog comparators, analog
  1273.        multiplexers, current sources, voltage doublers, PLL (Phase Lock
  1274.        Loops) and all sorts of peripherals that you thought were analog
  1275.        only.
  1276.  
  1277.  
  1278. 4.6)  Interrupts
  1279.  
  1280.  
  1281.     Polling
  1282.  
  1283.        Polling is not really a "feature" - it's what you have to do if
  1284.        your microcontroller of choice does not have interrupts.
  1285.        Polling is a software technique whereby the controller continually
  1286.        asks a peripheral if it needs servicing.  The peripheral sets a
  1287.        flag when it has data ready for transferring to the controller,
  1288.        which the controller notices on its next poll.  Several such
  1289.        peripherals can be polled in succession, with the controller
  1290.        jumping to different software routines, depending on which flags
  1291.        have been set.
  1292.  
  1293.  
  1294.     Interrupts
  1295.  
  1296.        Rather than have the microcontroller continually polling - that
  1297.        is, asking peripherals (timers / UARTS / A/Ds / external
  1298.        components) whether they have any data available (and finding most
  1299.        of the time they do not), a more efficient method is to have the
  1300.        peripherals tell the controller when they have data ready.  The
  1301.        controller can be carrying out its normal function, only
  1302.        responding to peripherals when there is data to respond to.  On
  1303.        receipt of an interrupt, the controller suspends its current
  1304.        operation, identifies the interrupting peripheral, then jumps
  1305.        (vectors) to the appropriate interrupt service routine.
  1306.  
  1307.        The advantage of interrupts, compared with polling, is the speed
  1308.        of response to external events and reduced software overhead (of
  1309.        continually asking peripherals if they have any data ready).
  1310.  
  1311.        Most microcontrollers have at least one external interrupt, which
  1312.        can be edge selectible (rising or falling) or level triggered.
  1313.        Both systems (edge/level) have advantages.  Edge - is not time
  1314.        sensitive, but it is susceptible to gitches.  Level - must be held
  1315.        high (or low) for a specific duration (which can be a pain - but
  1316.        is not susceptible to glitches).
  1317.  
  1318.        Interrupts are critical when you are controlling anything (this is
  1319.        what microcontrollers do).  If you misunderstand any of the terms,
  1320.        and design your systems with the way you *think* it works - not
  1321.        the way it *really* works - it will effect system performance.  It
  1322.        may also work for a very long time with no problems, and then all
  1323.        of a sudden fail.  Check your datasheets - these descriptions are
  1324.        the correct ones (or are at least supposed to be), but that does
  1325.        not mean that they are agreed to by the silicon manufacturers, (or
  1326.        by the marketing guys that they employ, and who write parts of the
  1327.        data sheets.)
  1328.  
  1329.        4 bit microcontrollers usually have either a polling or
  1330.        non-vectored type of interrupt scheme.  8 and 16 bit
  1331.        microcontrollers usually have some type of vectored arbitration
  1332.        type of interrupt scheme.  32 bit microcontrollers usually will
  1333.        have some type of vectored priority type of interrupt scheme.
  1334.        Again, check your data sheet to make sure - or ask a
  1335.        manufacturer's rep if you aren't sure.
  1336.  
  1337.  
  1338.     Maskable Interrupts
  1339.  
  1340.        A maskable interrupt is one that you can disable or enable
  1341.        (masking it out means disabling the interrupt), whereas
  1342.        non-maskable interrupts you can't disable.  The benefit of
  1343.        maskable interrupts is that you can turn off a particular
  1344.        interrupts (for example a UART) during some time critical task.
  1345.        Then, those particular interrupts will be ignored thus allowing
  1346.        the microcontroller to deal with the task at hand.  Most
  1347.        microcontrollers (as well as most microprocessors) have some type
  1348.        of Global Interrupt Enable (GIE) which allows you to turn off (or
  1349.        on) all of the maskable interrupts with one bit.  NOTE:  GIE
  1350.        usually does not effect any NMI (Non-Maskable Interrupts)
  1351.  
  1352.  
  1353.     Vectored Interrupts
  1354.  
  1355.        Simple (non-vectored) interrupts is one of the simplest interrupt
  1356.        schemes there is (Simple = less silicon = more software = slower).
  1357.        Whenever there is an interrupt, the program counter (PC) branches
  1358.        to one specific address.  At this address, the system designer
  1359.        needs to check the interrupts (one at a time) to see which
  1360.        peripheral has caused the interrupt to occur.  Code for this may
  1361.        look like (on a COP8):
  1362.  
  1363.          IFBIT  UART,PSW      ; If the UART bit has been set
  1364.          JP     UART_Recieve  ;  Jump to the UART receive service routine
  1365.  
  1366.          IFBIT  T1,PSW        ; If the timer has underflowed
  1367.          JP     Underflow     ;  Jump to the underflow service routine
  1368.  
  1369.          ...   and so on
  1370.  
  1371.        This can be *very* slow - and the time between the interrupt
  1372.        happening and the time the service routine is entered, depends on
  1373.        how the system designer sets up their ranking.  The peripheral
  1374.        that is checked last takes the longest to process.  Most
  1375.        microcontrollers that have fewer than 3 - 5 interrupts use this
  1376.        method.  The benefit of this is that the system designer can set
  1377.        the priority - The most important peripheral gets checked first -
  1378.        and you get to decide which peripheral that is.
  1379.  
  1380.        Vectored interrupts are a little easier to set up, but the system
  1381.        designer has less control of the system (i.e. is dependent on the
  1382.        silicon manufacture to make the proper decisions during design of
  1383.        the chip).  When an interrupt occurs, the hardware interrupt
  1384.        handler automatically branches to a specific address depending on
  1385.        what interrupt occurred.  This is much faster than the
  1386.        non-vectored approach described above, however the system designer
  1387.        does not get to decide what peripheral gets checked first.
  1388.        Example (on a National Semiconductor COP888CG):
  1389.  
  1390.           Rank         Source          Description        Vector Address
  1391.        ------------------------------------------------------------------
  1392.             1 (highest) Software       INTR Instruction    01FE - 01FF
  1393.             2           External       Pin G0 Edge         01FA - 01FB
  1394.             3           Timer T0       Underflow           01F8 - 01F9
  1395.             4           Timer T1       T1A / Underflow     01F6 - 01F7
  1396.             5           Timer T1       T1B                 01F4 - 01F5
  1397.             6           MICROWIRE/PLUS BUSY Goes Low       01F2 - 01F3
  1398.             7           UART           Receive             01EE - 01EF
  1399.             8           UART           Transmit            01EC - 01ED
  1400.             9           Timer T2       T2A / Underflow     01EA - 01EB
  1401.            10           Timer T2       T2B                 01E8 - 01E9
  1402.            11           Timer T3       T3A / Underflow     01E6 - 01E7
  1403.            12           Timer T3       T3B                 01E4 - 01E5
  1404.            13           Port L / MIWU  Port L Edge         01E2 - 01E3
  1405.            14 (lowest)  Default        VIS Interaction     01E0 - 01E1
  1406.  
  1407.        In ROM location 01F8 - 01F9 (2bytes x 8 bits = 16bit address) the
  1408.        system designer enters the ROM location of where they want the
  1409.        service routine (of the Timer T0 underflow) to be. And so on for
  1410.        the rest of the addresses.
  1411.  
  1412.  
  1413.     Interrupt arbitration and priority
  1414.  
  1415.        Interrupt arbitration and priority - These are two of the most
  1416.        misused words when it comes to microcontrollers (microprocessors
  1417.        too for that matter) and it's generally because no one knows the
  1418.        difference between them.  Priority is not Arbitration.
  1419.        Arbitration is not Priority.  Lets see if we can sort out the
  1420.        differences.
  1421.  
  1422.        Arbitration - If you look at the above chart of the COP888CG, you
  1423.        may think the interrupts are prioritized because they have some
  1424.        ranking.  They do have rank, but they are not prioritized.  What
  1425.        happens is that (in an arbitration scheme) when an interrupt
  1426.        occurs, the GIE (Global Interrupt Enable) is cleared.  This
  1427.        effectively means that all future interrupts will be delayed until
  1428.        the GIE is set.  The GIE becomes set only if the system designer
  1429.        sets it in a service routines, or on a RETI (Return from
  1430.        Interrupt).
  1431.  
  1432.        Quick Example 1 - Timer 1 underflows - the hardware clears the
  1433.        GIE, looks at ROM locations 01F6 and 01F7 and jumps to the ROM
  1434.        location pointed to by those addresses.  The program does a couple
  1435.        things, and then sets the GIE (because the user wants to recognize
  1436.        an external interrupt during this service routine).  However while
  1437.        in the service routine, Timer 3 underflows.  Although a timer 3
  1438.        underflow is lower in rank than a timer 1 underflow, the interrupt
  1439.        handler does not care - it simply looks at the GIE, and because it
  1440.        is set - handles the interrupt (now we have nested interrupts).
  1441.        The Timer 1 underflow service routine will not be completed until
  1442.        the Timer 3 underflow is complete.
  1443.  
  1444.        Quick Example 2 - Timer 3 underflows at the same time as an
  1445.        External interrupt occur.  The one to be handled first is the
  1446.        External Interrupt.  If the user sets the GIE, the interrupt
  1447.        handler will jump down to the Timer 3 underflow handler.  If the
  1448.        user does not set the GIE, the microcontroller handles the
  1449.        External interrupt, does a RETI, and the Timer 3 underflow can now
  1450.        be handled.
  1451.  
  1452.  
  1453.        Priority - In a priority scheme, things are prioritized (well,
  1454.        what'd you expect?).  If Timer T0 underflows, the only thing that
  1455.        can interrupt that is an external or software interrupt.  If a
  1456.        external or software interrupt occurs, the interrupt handler will
  1457.        branch to these service routines.  When they are complete, it will
  1458.        return to the Timer T0 underflow.
  1459.  
  1460.        Quick Example - In the below timing diagram, the following
  1461.        happens:
  1462.          1) Timer T0 underflows
  1463.          2) Timer T2 underflows
  1464.          3) An External Interrupt occurs.
  1465.  
  1466.  
  1467.        In a priority scheme, the following would happen:
  1468.  
  1469.         External Interrupt             |---------|
  1470.                                        |         |
  1471.         Timer T0 Underflow     |-------|         |------|
  1472.                                |                        |
  1473.         Timer T2 Underflow     |                        |------|
  1474.                                |                               |
  1475.         Normal Execution    ---|                               |-------
  1476.  
  1477.                                ^   ^   ^         ^      ^       ^
  1478.                                |   |   |         |      |       |
  1479.         Time ->                |   |   |         |      |       \-T2 Done
  1480.                                |   |   |         |      \-------- T0 Done
  1481.                                |   |   |         \-------------- Ext Done
  1482.                                |   |   \------------------------ Ext Edge
  1483.                                |   \----------------------- T2 Underflows
  1484.                                \--------------------------- T0 Underflows
  1485.  
  1486.        This is what RTOS (Real Timer Operating Systems) do - prioritize
  1487.        and handle interrupts.
  1488.  
  1489.  
  1490. 4.7)  Special microcontroller features
  1491.  
  1492.  
  1493.     Watchdog timer
  1494.  
  1495.        A watchdog timer provides a means of graceful recovery from a
  1496.        system problem.  This could be a program that goes into an endless
  1497.        loop, or a hardware problem that prevents the program from
  1498.        operating correctly.  If the program fails to reset the watchdog
  1499.        at some predetermined interval, a hardware reset will be
  1500.        initiated.  The bug may still exist, but at least the system has a
  1501.        way to recover.  This is especially useful for unattended systems.
  1502.  
  1503.  
  1504.     Digital Signal Processors (DSP)
  1505.  
  1506.        Microcontrollers react to and control events - DSPs execute
  1507.        repetitive math-intensive algorithms.  Today many embedded
  1508.        applications require both types of processors, and semiconductor
  1509.        manufacturers have responded by introducing microcontrollers with
  1510.        on-chip DSP capability and DSPs with on-chip microcontrollers.
  1511.  
  1512.        The most basic thing a DSP will do is a MACC (Multiply and
  1513.        ACCumulate).  The number of data bits a DSP can Multiply and
  1514.        ACCumulate will determine the dynamic range (and therefore the
  1515.        application).
  1516.  
  1517.         Bits Fixed/Floating  Dynamic Range   Typical Application
  1518.  
  1519.           8     Fixed           48 dB         Telephone-quality voice
  1520.          16     Fixed           96 dB         Compact disk (marginal)
  1521.          24     Fixed          144 dB         Compact disk
  1522.                                                   (room for error)
  1523.  
  1524.  
  1525.     Clock Monitor
  1526.  
  1527.        A clock monitor can shut the microcontroller down (by holding the
  1528.        microcontroller in reset) if the input clock is too slow.  This
  1529.        can usually be turned on or off under software control.
  1530.  
  1531.  
  1532.     Resident program loader
  1533.  
  1534.        Loads a program by Initializing program/data memory from either a
  1535.        serial or parallel port.  Convenient for prototyping or trying out
  1536.        new features, eliminates the erase/burn/program cycle typical with
  1537.        EPROMs, and allows convenient updating of a system even from an
  1538.        offsite location.
  1539.  
  1540.  
  1541.     Monitor
  1542.  
  1543.        A monitor is a program installed in the microcontroller which
  1544.        provides basic development and debug capabilities.  Typical
  1545.        capabilities of a microcontroller monitor include:  loading object
  1546.        files into system RAM, executing programs, examining and modifying
  1547.        memory and registers, code disassembly, setting breakpoints, and
  1548.        single-stepping through code.  Some simple monitors only allow
  1549.        basic functions such as memory inspection, and the more
  1550.        sophisticated monitors are capable of a full range of debug
  1551.        functions.
  1552.  
  1553.        Monitors can either communicate with a dumb terminal or with a
  1554.        host computer such as a PC.  Much of the work of the monitor (such
  1555.        as user interface) can be offloaded to the host PC running a
  1556.        program designed to work with the monitor.  This makes it possible
  1557.        to reduce the size and complexity of the code that must be
  1558.        installed in the target system.
  1559.  
  1560.  
  1561.     MIL transducer
  1562.  
  1563.        An MIL transducer is a sophisticated and expensive device that
  1564.        detects the presence of your mother-in-law.  Sensitivity settings
  1565.        are possible for a full range of stimuli such as:  snarling,
  1566.        stomping, nasty faces, and others.  Techno-Wimp (address withheld
  1567.        upon request), the sole manufacturer of the MIL transducer, has
  1568.        recently announced a major new version which is sensitive enough
  1569.        to detect less-tangible stimuli.  This breakthrough product is
  1570.        dubbed the MIL-WOMF ("Whoa, outta my face!") transducer.  Both the
  1571.        original MIL and the new MIL-WOMF transducers are programmable and
  1572.        easy to interface to most microcontrollers.
  1573.  
  1574.  
  1575. 5)  Some popular microcontrollers
  1576.  
  1577.     Some common microcontrollers are described below.  A common question
  1578.     is "what microcontroller should I use for...?"  Well, that's a tough
  1579.     one.  The best advice would be to choose a chip that has a full set
  1580.     of development tools at the price you can afford, and good
  1581.     documentation.  For the hobbyist, the Intel 8051, Motorola 68hc11, or
  1582.     Microchip PIC would all make suitable choices.
  1583.  
  1584.  
  1585.     8048 (Intel)
  1586.  
  1587.        The grandaddy of 'em all, the first microcontroller, it all
  1588.        started here!  Although a bit long in the tooth and a bit kludgey
  1589.        in design (at least by today's standards), it is still very
  1590.        popular due to its very low cost, availability, and wide range of
  1591.        development tools.
  1592.  
  1593.        Modified Harvard architecture with program ROM on chip with an
  1594.        additional 64 to 256 bytes of RAM also on chip.  I/O is mapped in
  1595.        its own space.
  1596.  
  1597.  
  1598.     8051 (Intel and others)
  1599.  
  1600.        The 8051, Intel's second generation of microcontrollers, rules the
  1601.        microcontroller market at the present time.  Although featuring a
  1602.        somewhat bizarre design, it is a very powerful and easy to program
  1603.        chip (once you get used to it).
  1604.  
  1605.        Modified Harvard architecture with separate address spaces for
  1606.        program memory and data memory.  The program memory can be up to
  1607.        64K.  The lower portion (4K or 8K depending on type) may reside on
  1608.        chip.  The 8051 can address up to 64K of external data memory, and
  1609.        is accessed only by indirect addressing.  The 8051 has 128 bytes
  1610.        (256 bytes for the 8052) of on-chip RAM, plus a number of special
  1611.        function registers (SFRs).  I/O is mapped in its own space.
  1612.  
  1613.        The 8051 features the so-called "boolean processor".  This refers
  1614.        to the way instructions can single out bits just about anywhere
  1615.        (RAM, accumulators, I/O registers, etc.), perform complex bit
  1616.        tests and comparisons, and then execute relative jumps based on
  1617.        the results.
  1618.  
  1619.        Piles of software, both commercial and free, are available for the
  1620.        8051 line.  Many manufacturers supply what must be a hundred
  1621.        different variants of this chip for any requirement.  Often
  1622.        featured in construction projects in the popular hobbyist
  1623.        magazines.
  1624.  
  1625.  
  1626.     80c196 (MCS-96)
  1627.  
  1628.        The third generation of Intel microprocessors, the 80c196 is a 16
  1629.        bit processor.  Originally fabricated in NMOS (8096), it is now
  1630.        mainly available in CMOS.  Intel Corp. has recently introduced a
  1631.        clock-doubled (50MHz) version of the 80c196.
  1632.  
  1633.        Among the many features it includes are: hardware multiply and
  1634.        divide, 6 addressing modes, high speed I/O, A/D, serial
  1635.        communications channel, up to 40 I/O ports, 8 source priority
  1636.        interrupt controller, PWM generator, and watchdog timer.
  1637.  
  1638.  
  1639.     80186,80188 (Intel)
  1640.  
  1641.        These chips are, in essence, microcontroller versions of the 8086
  1642.        and 8088 (of IBM/PC fame).  Included on the chip are: 2 channels
  1643.        of DMA, 2 counter/timers, programmable interrupt controller, and
  1644.        dynamic RAM refresh.  There are several variations including:  low
  1645.        power versions, variations with serial ports, and so on.
  1646.  
  1647.        One major advantage you gain by using one of these parts is that
  1648.        you can use standard PC development tools (compilers, assemblers,
  1649.        etc) for developing you applications.  If you are already familiar
  1650.        with PC software development, the learning curve will be short,
  1651.        since these chips have the same basic architecture as the original
  1652.        8088 (as used in the IBM/PC).
  1653.  
  1654.        Other advantages include high speed processing, a full megabyte
  1655.        addressing space, and powerful interrupt processing.
  1656.  
  1657.  
  1658.     80386 EX (Intel)
  1659.  
  1660.        The 80386 EX is of course a 386 in microcontroller clothing.
  1661.        Included on the chip are: serial I/O, power management, DMA,
  1662.        counter/timers, programmable interrupt controller, and dynamic RAM
  1663.        refresh.  And of course, all of the power of the 386
  1664.        microprocessor.
  1665.  
  1666.        One major advantage you gain by using one of these parts is that
  1667.        you can use standard PC development tools (compilers, assemblers,
  1668.        etc) for developing your applications.  If you are already
  1669.        familiar with PC software development, the learning curve will be
  1670.        short, since these chips have the same basic architecture as the
  1671.        original 8088 (as used in the IBM/PC).
  1672.  
  1673.        We're talking power here gang.  Now let's all wait for Microsoft
  1674.        to release a version of Windows for embedded and real-time
  1675.        applications (Windows ET?  Windows RT?  Windows 2000? :-).
  1676.  
  1677.  
  1678.     65C02/W65C816S/W65C134S (Western Design Center)
  1679.  
  1680.        The Western Design Center, Inc. is the original owner and designer
  1681.        of the 65C02 8-bit microprocessor, used in the original Apple,
  1682.        Commodore, and Atari computers. WDC has subsequently developed a
  1683.        16-bit MPU (W65C816S), an 8-bit microcontroller (with 65C02 as the
  1684.        core) named W65C134S, and a 16-bit microcontroller (with 65C816 as
  1685.        core).  These are sold off-the-shelf and the the module technology
  1686.        is licensed for use in ASIC designs.
  1687.  
  1688.        WDC has recently come out with their .8u 134S and 265S.  There are
  1689.        many companies who have or are designing in these parts into their
  1690.        board-level system design.  It is expected that this new version's
  1691.        performance to be greatly enhanced over the previous 1.2u. They
  1692.        are also working with their foundry to add EE and Flash versions
  1693.        to their standard product offering.
  1694.  
  1695.           The Western Design Center
  1696.           2166 East Brown Rd.
  1697.           Mesa, AZ  85213
  1698.           (602)962-4545  Fax: (602)835-6442
  1699.           Email: wdesignc@wdesignc.com
  1700.           Web: http://www.wdesignc.com
  1701.  
  1702.  
  1703.     MC14500 (Motorola)
  1704.  
  1705.        According to Magnus Danielson, "This is an awesome chip that
  1706.        everyone should know by heart... why?  It's so weird compared to
  1707.        most other chips... it is really worth reading up on the details.
  1708.        It lives its life inside a 16 pin DIP and has 16 instructions."
  1709.  
  1710.        Motorola was the manufacturer of this 1 bit powerhouse, which is
  1711.        now out of production.  And no, there isn't a C compiler for it.
  1712.        Maybe Dave Dunfield (hi Dave ;-) wouldn't mind adding this to his
  1713.        C compiler suite.
  1714.  
  1715.        Although the MC14500 is a bit bizarre (one bit's worth) and may be
  1716.        somewhat limited, it does have a few noteworthy features:
  1717.            - RISC processor with 16 instructions (well, what did you
  1718.              expect from a 1 bit processor) and one addressing mode
  1719.            - no memory boundary (an infinite amount of memory)
  1720.            - small package (16 pin)
  1721.  
  1722.        Find a copy of the data sheet on this chip and give it a careful
  1723.        going over.  I'm sure you'll agree that this was an interesting
  1724.        chip and I imagine was probably quite useful.  Seems to me that
  1725.        the new wave of scaled-down micros such as the Atmel 2051,
  1726.        MicroChip PIC, and Philips 752 probably caused its demise.
  1727.  
  1728.  
  1729.     68HC05 (Motorola)
  1730.  
  1731.        The 68HC05 (and the earlier 6805) is based loosely on the
  1732.        manufacturer's earlier 6800, with some similarities to the 6502.
  1733.        It has a Von-Neuman architecture in which instructions, data, I/O,
  1734.        and timers all share the same space.  Stack pointer is 5 bits wide
  1735.        which limits the stack to 32 bytes deep.  Some members of this
  1736.        family include on chip A/D, PLL frequency synthesizer, serial I/O,
  1737.        and software security.
  1738.  
  1739.  
  1740.     68hc11 (Motorola and Toshiba)
  1741.  
  1742.        The popular 68hc11 is a powerful 8-bit data, 16-bit address
  1743.        microcontroller from Motorola (the sole supplier) with an
  1744.        instruction set that is similar to the older 68xx parts (6801,
  1745.        6805, 6809).  The 68hc11 has a common memory architecture in which
  1746.        instructions, data, I/O, and timers all share the same memory
  1747.        space.
  1748.  
  1749.        Depending on the variety, the 68hc11 has built-in EEPROM/OTPROM,
  1750.        RAM, digital I/O, timers, A/D converter, PWM generator, pulse
  1751.        accumulator, and synchronous and ansynchronous communications
  1752.        channels.  Typical current draw is less than 20ma.
  1753.  
  1754.  
  1755.     683xx (Motorola)
  1756.  
  1757.        The MC68EC300 series incorporates various peripherals into various
  1758.        68k family core processors.  These can be called "integrated
  1759.        processors".  They are really super-microcontrollers, very high
  1760.        performance, capable of high processing speeds, and able to
  1761.        address large amounts of memory.  A typical example from this line
  1762.        would be the 68331.  It is based on a 68020-like core and has
  1763.        about the same processing power as an Intel 80386.
  1764.  
  1765.  
  1766.     PIC (MicroChip)
  1767.  
  1768.        While watching my 8 year old daughter play with her Barbie Dolls
  1769.        (she has about 7 or so, including two that used to belong to Roz,
  1770.        my wife, when she was a girl) I noticed an interesting difference
  1771.        between the old dolls and the new dolls.  The old Barbies could
  1772.        only move their heads sideways, while the new Barbies not only can
  1773.        move their heads sideways, but also up and down.  AMAZING - the
  1774.        old Barbies were good girls - they could only say no.  The new
  1775.        Barbies however can also say yes.  Progress - isn't it wonderful!
  1776.        (Not to mention the gymnast Barbie that Dave Perry's daughter got
  1777.        for Christmas - "wait'll you see what *she* can do ;-)"
  1778.  
  1779.        Which leads me to an amazing fact.  Most everyone thinks of the
  1780.        PIC microcontroller line as being a recent introduction.  However,
  1781.        they've been popular for over 20 years.  What's the difference?
  1782.        Microchip (which was originally [owned by] General Instruments),
  1783.        seems to have recreated this microcontroller into a product
  1784.        universally regarded as a powerful and cost effective solution.
  1785.        The new chips are fabricated in CMOS, some features have been
  1786.        added, and new family lines have been introduced.
  1787.  
  1788.        The PIC microcontrollers were the first RISC microcontrollers.
  1789.        RISC generally implies that simplicity of design allows more
  1790.        features to be added at lower cost, and the PIC line is no
  1791.        exception.  Although having few instructions (eg. 33 instructions
  1792.        for the 16C5X line versus over 90 for the Intel 8048), the PIC
  1793.        line has a wealth of features included as part of the chip.
  1794.        Separate buses for instructions and data (Harvard architecture)
  1795.        allows simultaneous access of program and data, and overlapping of
  1796.        some operations for increased processing performance.  The
  1797.        benefits of design simplicity are a very small chip, small pin
  1798.        count, and very low power consumption.
  1799.  
  1800.        PIC microcontrollers are rapidly gaining in popularity.  They are
  1801.        being featured more and more often in construction projects in
  1802.        popular hobbyist magazines, and are chalking up a good number of
  1803.        design wins.  Due to their low cost, small size, and low power
  1804.        consumption, these microcontrollers can now be used in areas that
  1805.        previously wouldn't have been appropriate (such as logic
  1806.        circuits).  They are currently available in three lines:  the
  1807.        PIC16C5x, PIC16Cxx, and PIC17Cxx families.
  1808.  
  1809.        PSST!  Hey kid!  Want a naked Barbie Doll?!
  1810.  
  1811.        Henry Spencer adds the following information:
  1812.  
  1813.        The 16C5x line is the descendant of the original PIC design; they
  1814.        are a bit limited and clumsy, and have essentially been made
  1815.        obsolete by the 16Cxx. The 16Cxx line is the heart of the PIC
  1816.        family today, an improved design benefitting from hindsight:
  1817.        tidier and more flexible than the 16C5x while retaining its
  1818.        simplicity and speed, and providing a wide spread of prices and
  1819.        capabilities, including quite a few choices of on-chip
  1820.        peripherals.  The 17Cxx line is more ambitious, arguably pushing
  1821.        the PIC architecture rather farther than God intended :-) it to
  1822.        go; they can do things the 16Cxx line can't, but they're not where
  1823.        most of the action is.
  1824.  
  1825.        Unusually for microcontrollers, the Microchip PIC databooks
  1826.        include complete documentation on how to program the chips --
  1827.        information that other manufacturers often will give out only to
  1828.        programmer manufacturers, only under nondisclosure, or only at
  1829.        gunpoint.
  1830.  
  1831.  
  1832.     COP400 Family (National Semiconductor)
  1833.  
  1834.        The COP400 Family is a P2CMOS 4-bit microcontroller which offers
  1835.        512 bytes to 2K ROM and 32x4 to 160x4 RAM.  Packages are varied
  1836.        from  20 to 28 pin (DIP/SO/PLCC).  Functions include Microwire,
  1837.        timers counters, 2.3 to 6.0 Volt operation, ROMless modes, and OTP
  1838.        support.
  1839.  
  1840.        Far from being "old" technology - 4-bit microcontrollers are
  1841.        meeting significant market needs in more applications than ever
  1842.        before.  The reason for the continuing strength of the COP400
  1843.        family is its versatility.  Over 60 different, compatible devices
  1844.        are available for a wide range of requirements.  The first under
  1845.        $.50 microcontroller set a new standard of value for
  1846.        cost/performance.
  1847.  
  1848.  
  1849.     COP800 Family (National Semiconductor)
  1850.  
  1851.        The COP800 Basic Family is a fully static 8-bit microcontroller,
  1852.        fabricated using double metal silicon gate microCMOS technology.
  1853.        This low cost microcontroller contains all system timing,
  1854.        interrupt logic, ROM, RAM, and I/O necessary to implement
  1855.        dedicated control functions in a variety of applications.
  1856.  
  1857.        Depending on the device, features include:  8-bit memory mapped
  1858.        architect, MICROWIRE serial I/O, UART, memory mapped I/O, many 16
  1859.        bit timer/counters with capture registers, a multi-sourced
  1860.        vectored interrupt, comparator, WATCHDOG Timer and Clock monitor,
  1861.        Modulator/Timer (high speed PWM timer for IR transmission),
  1862.        8-channel A/D converter with prescaler and both differential and
  1863.        single-ended modes, brownout protection, halt mode, idle mode,
  1864.        high current I/O pins with 15mA sink capability, Schmitt trigger
  1865.        inputs and Multi-Input-Wake-Up.  Most devices operate over a
  1866.        voltage range from 2.5V to 6V.
  1867.  
  1868.        High throughput is achieved with an efficient, powerful
  1869.        instruction set operating at a 1uS per instruction rate (most
  1870.        instructions are single byte/single cycle) including true bit
  1871.        manipulation and BCD arithmetic instructions.  Most devices have
  1872.        military versions for -55C to +125C.
  1873.  
  1874.  
  1875.     HPC Family (National Semiconductor)
  1876.  
  1877.        The HPC Family of High Performance microControllers is a 16-bit
  1878.        controller fabricated using National's advanced microCMOS
  1879.        technology.  This process combined with an advanced architecture
  1880.        provides fast, flexible I/O control, efficient data manipulation,
  1881.        and high speed computation.
  1882.  
  1883.        With its 16x16 bit multiply and 32x16 bit divide, the HPC is
  1884.        appropriate for compute-intensive environments that used to be the
  1885.        sole domain of the microprocessor.  The architecture is a
  1886.        Von-Neuman architecture where the program and data memory share
  1887.        the same address space.
  1888.  
  1889.        Depending on the family member, features include: 16-bit
  1890.        memory-mapped architecture with software configurable external
  1891.        address/data bus, Microwire/Plus serial I/O, UART, 16-bit
  1892.        timer/counters with input capture capability, High-Level Data Link
  1893.        Control (HDLC) for ISO-standard data communications, 8-channel A/D
  1894.        converter with prescaler and both differential and single-ended
  1895.        modes, power-saving modes, Multiply/Accumulate Unit with built-in
  1896.        circular buffer management for low to medium DSP applications,
  1897.        software configurable chip-select outputs, 64KB address space
  1898.        directly addressable, low-voltage (3.3V) operation.
  1899.  
  1900.        High throughput is achieved with an efficient, powerful
  1901.        instruction set operating at a 50ns per instruction cycle (most
  1902.        instructions are single byte/single cycle) including true bit
  1903.        manipulation.  Key applications currently using the HPC family
  1904.        include: Anti-lock Braking Systems, Hard Disk drives for mass
  1905.        storage, telecommunications, security systems, laser printers, and
  1906.        some military applications.
  1907.  
  1908.  
  1909.     Project Piranha (National Semiconductor)
  1910.  
  1911.        Project Piranha is an internal code name for National
  1912.        Semiconductor's embedded RISC processor technology. The Piranha
  1913.        technology represents the first RISC processor specifically
  1914.        designed for the needs of embedded applications.  This was
  1915.        accomplished through examination of the needs of typical embedded
  1916.        applications, resulting in a technology which maintains the
  1917.        benefits of CISC while providing the performance of RISC.
  1918.  
  1919.        Specifically, some of these benefits are:
  1920.          compact code density     -->  smaller memory usage/
  1921.                                           lower system cost
  1922.          small core size          -->  more room for add-on system design
  1923.          scalable architecture    -->  a range of performance solutions
  1924.        from 8 to 64 bits             with a common architecture
  1925.          common instruction set   -->  you only face the learning curve
  1926.             and development tools         once
  1927.          modular design           -->  designed for easy integration of
  1928.                                           specialized functions into
  1929.                                           single chip
  1930.  
  1931.        This technology is initially being implemented in application
  1932.        specific products from National Semiconductor, with the first
  1933.        product being available in Q1, 1995.  For further information on
  1934.        this technology, please contact Mark Throndson at
  1935.        tmetsc@esd.nsc.com, or (408) 721-4957.
  1936.  
  1937.  
  1938.     Z8 (Zilog)
  1939.  
  1940.        A "loose" derivative of the Zilog Z80, the Z8 is actually a
  1941.        composite of several different achitectures.  Not really
  1942.        compatible with the Z80 peripherals.  Has a unique architecture
  1943.        with three memory spaces:  program memory, data memory, and a CPU
  1944.        register file.  On-chip features include UART, timers, DMA, up to
  1945.        40 I/O lines.  Some versions include a synchronous/asynchronous
  1946.        serial channel.  Features fast interrupt response with 37
  1947.        interrupt sources.  The Z8671 has Tiny Basic in ROM.  The Super-8
  1948.        is just that, a super version of the Z8 with more of everything.
  1949.  
  1950.        There seem to be quite a few new members of the zilog Z8 family
  1951.        arriving recently, including chips such as the Z86C95 which
  1952.        contains a fairly "normal" Z8 but with lots of registers (not the
  1953.        normal 128, but 236), and an internal 16 bit harvard architecture
  1954.        DSP with two data memory systems and one program memory system,
  1955.        and with a 24 bit accumulator.  The DSP unit has its memory
  1956.        systems accessible as additional banks of Z8 registers (the exact
  1957.        mechanism is very poorly explained in the documentation!) so the
  1958.        Z8 can be used to write the data and code for the DSP into the
  1959.        DSP's storage and then start the DSP running, etc.  There are the
  1960.        usual Z8 peripherals plus A/D and D/A (single channel, accessible
  1961.        by the Z8 and DSP CPUs).
  1962.  
  1963.        Zilog has also recently come out with some new OTP parts:
  1964.                                                     osc
  1965.        part#    PDIP   EPROM      RAM       I/O     type         freq
  1966.        ---------------------------------------------------------------
  1967.        Z86E04  18 pin   1K     124 bytes  14 pins  xtal,LC,      8MHz
  1968.                                                    cer res,ext
  1969.        Z86E08  18 pin   2K     124 bytes  14 pins  xtal,LC,      12MHz
  1970.                                                    cer res,ext
  1971.        Z86E30  28 pin   4K     237 bytes  24 pins  xtal,LC,RC,   12MHz
  1972.                                                    cer res,ext
  1973.        Z86E31  28 pin   2K     124 bytes  24 pins  xtal,LC,RC,   8MHz
  1974.                                                    cer res,ext
  1975.  
  1976.        All parts come with real configurable RAM stack and interrupt
  1977.        systems, two fully programmable timers with interrupts, ROM
  1978.        protect, low-EMI modes, two analog comparator inputs with
  1979.        interrupt capability, low-power standby modes (as low as 1 uA) and
  1980.        45 easy instruction set.  There are no separate chip versions to
  1981.        do each of the oscillator types, one chip does them all.
  1982.  
  1983.  
  1984.     HD64180 (Hitachi)
  1985.  
  1986.        A powerful microcontroller with full Z80 functionality plus:
  1987.        extended memory management, two DMA channels, synchronous and
  1988.        asynchronous communications channels, timers, and interrupt
  1989.        controller.  Some versions of this chip also include EPROM, RAM,
  1990.        and PIO (programmable input/output).  It runs Z80 code in fewer
  1991.        clock cycles than the Z80 and adds in hardware multiply and a few
  1992.        other instructions.  Available in versions that run up to 18MHz.
  1993.  
  1994.  
  1995.     TMS370 (Texas Instruments)
  1996.  
  1997.        It is similar to the 8051 in having 256 registers,  A and B
  1998.        accumulators, stack in the register page, etc.  It also has a
  1999.        host of onboard support devices, some members have all of them
  2000.        while others have a subset, the peripherals include:  RAM, ROM
  2001.        (mask, OTP, or EEPROM), 2 timers (configurable as timers/
  2002.        counters/comparators/PWM output), watchdog timer, SCI (syncronous
  2003.        serial port), SPI (asynchronous serial port), A/D (8 bit, 8
  2004.        channel), interrupts.
  2005.  
  2006.        Instruction set is mostly 8 bit with some 16 bit support.  Has
  2007.        several addressing modes, 8x8 multiply, 16/8 divide.  Clock speeds
  2008.        are up to 20MHz which gives 5MHz for buss access and instruction
  2009.        cycles.  Pins mostly TTL compatible (except clock and reset).
  2010.  
  2011.        Packages include:
  2012.              28,40 DIP
  2013.              28 CLCC
  2014.              28,44,68 PLCC
  2015.              40,64 SDIP
  2016.  
  2017.        A developers/proto board is available.  It is a multi layer PCB
  2018.        about 12"x7" with RS-232 serial I/O, and monitor as well as access
  2019.        to all processor pins on a patch and proto area.  Support software
  2020.        includes IBM-PC monitor & loader, cross assembler (absolute only).
  2021.        A pure serial TTY monitor is also supported.  Sole power
  2022.        requirement is +5v.  Priced is about $500 or so.
  2023.  
  2024.        A relocating assembler and linker, and a C compiler are also
  2025.        available.
  2026.  
  2027.  
  2028.     1802 (RCA)
  2029.  
  2030.        This is a real old-timer.  The 1802 is the successor to the 1801
  2031.        (2 chip set) which was the first microprocessor implemented in
  2032.        CMOS.  Both products were called microprocessors by RCA, not
  2033.        microcontrollers.  However, since the 1801 was implemented in CMOS
  2034.        and therefore had low power requirements, it was often used in
  2035.        microcontroller applications.  The 1802, with its higher level of
  2036.        integration and ease of use, could actually be considered a true
  2037.        microcontroller.  The 1802 is radiation hard and used in a lot of
  2038.        deep space and satellite applications.
  2039.  
  2040.        The 1802 has a fairly clean instruction set, a bunch of
  2041.        general-purpose registers (more like a Z80 than an 8051 in that
  2042.        regard), and separate data and I/O address spaces.
  2043.  
  2044.  
  2045.     MuP21 (Forth chip)
  2046.  
  2047.        The MuP21 was designed by Chuck Moore, the inventor of Forth.
  2048.        With the MuP21, Forth can compile into machine code and still be
  2049.        Forth, because the machine code IS Forth.  The MuP21 freaks out at
  2050.        100 MIPS while consuming only 50 milliwatts.  Not only that, the
  2051.        chip includes a video generator, has only about 7000 transistors
  2052.        (that's right, 7000 and not 7,000,000), and costs about $20.
  2053.  
  2054.        The assembler on this chip is a sort of dialect of Forth, as the
  2055.        CPU is modeled after the Forth virtual machine.  MuP21 is a
  2056.        MINIMAL Forth engine.  In fact MuP21 was designed to run OKAD
  2057.        (Chuck Moore's VLSI CAD softare), and OKAD was designed to run on
  2058.        MuP21.  OKAD was run on a 486 to design MuP21, and MuP21 was
  2059.        designed to have just enough hardware to run OKAD about ten times
  2060.        as fast as a 486 on a very cheap chip (the MuP21).  That's the
  2061.        reason for the MuP21's on-chip video generator coprocessor.  The
  2062.        CPU programs the video generator and then just manipulates the
  2063.        video buffer.  It is composite video out, so it only needs one
  2064.        pin.  MuP21 is only a 40 pin chip.
  2065.  
  2066.        MuP21 chips, boards, software, manuals, and spec sheets are
  2067.        available from:
  2068.           Offete Enterprises
  2069.           1306 South B Street, San Mateo CA 94402
  2070.           (415) 574-8250
  2071.           Email:  tingch@ccmail.apldbio.com
  2072.                   tingch@perkin-elmer.com.
  2073.  
  2074.  
  2075.     F21 (Next generation Forth chip)
  2076.  
  2077.        F21 will be bigger (10k vs 7k transistors for the MuP21!) but
  2078.        since it is going to implemented with a smaller geometry (.8
  2079.        micron vs 1.2) it will still be extremely small and low power, and
  2080.        low cost.  Although the specs on this chip aren't final yet,
  2081.        expected performance is in the range of 250 MIPS!!.  It will have
  2082.        multiple analog processors and a very high speed serial network
  2083.        coprocessor on chip.  F21 will also support a wider range of
  2084.        memory chips and have more I/O processors.
  2085.  
  2086.        Designed for cheap consumer multimedia and parallel processing,
  2087.        the F21 is planned for release some time in 1995.
  2088.  
  2089.        For more information on this project, contact: Jeff Fox
  2090.        <jfox@netcom.com>.
  2091.  
  2092.  
  2093. 6)  GETTING STARTED WITH MICROCONTROLLERS
  2094.  
  2095.     In order to get started with microcontrollers, several factors need
  2096.     to be considered.
  2097.           - cost
  2098.           - convenience
  2099.           - availability of development tools
  2100.           - intended use
  2101.  
  2102.     The hardware described in this section is readily available,
  2103.     affordable, and is easy to find software for.
  2104.  
  2105.     <Inclusion or exclusion of a product in this section doesn't have any
  2106.     real significance.  I've tried to give a good cross-section of
  2107.     devices and manufacturers - I'm open for suggestions.>
  2108.  
  2109.  
  2110. 6.1)  Evaluation Kits/Boards
  2111.  
  2112.     Many manufacturers offer assembled evaluation kits or boards which
  2113.     usually allow you to use a PC as a host development system.  Among
  2114.     some of the more popular evaluations kits/boards are:
  2115.  
  2116.     Parallax Basic Stamp
  2117.  
  2118.        This is a small single-board controller that runs BASIC, and costs
  2119.        only $39.  A SIP version for only $29 is also available.  THE 256
  2120.        byte EEPROM can hold a program of up to about 100 instructions.
  2121.        The BASIC Stamp Programming Package is a complete development
  2122.        package for only $99.
  2123.           Parallax, Inc., 3805 Atherton Rd. 102, Rocklin, CA  95765
  2124.           (916)624-8333    Fax: (916)624-8003   BBS: (916)624-7101
  2125.           email: info@parallaxinc.com
  2126.  
  2127.  
  2128.     Motorola EVBU, EVB, EVM, EVS
  2129.  
  2130.        A series of very popular evaluation/development systems based on
  2131.        the 68hc11.  Comes complete with the BUFFALO monitor and varying
  2132.        types of development software.  Commonly used for university
  2133.        courses.
  2134.  
  2135.  
  2136.     Motorola 68705 starter kit
  2137.  
  2138.        Motorola supplies a complete development system, -- software,
  2139.        hardware, simulator, emulator, manuals, etc for just $100.
  2140.  
  2141.  
  2142.     Dallas Semiconductor DS5000TK
  2143.  
  2144.        The DS5000TK allows evaluation of any DS5000 series device in any
  2145.        existing application without circuit changes.  The included
  2146.        DS5000T plugs into the supplied serial interface pod which
  2147.        provides a connection to a host PC.  A target cable connects the
  2148.        pod to the target system.  Programs can be downloaded directly to
  2149.        the chip (no EPROM programming!) using the built-in serial loader.
  2150.        (With Dunfield's Development System, you end up with a cheap
  2151.        "pseudo-ice".  Dunfield also has a circuit if you want to build a
  2152.        similar device.)
  2153.  
  2154.  
  2155.     Philips/CEIBO DS750
  2156.        For $100 (from Philips, from CEIBO the price is $250), you get a
  2157.        "pseudo-ice" for testing your code in-circuit.  Based on the
  2158.        low-end Philips 87c75x parts.  Allows source-code debugging in
  2159.        assembler (included), C, and PL/M, with an interface similar to
  2160.        that of Borland's Turbo Debugger.  Very popular with students and
  2161.        consultants for experimenting with 80c51 code.  Includes a VERY
  2162.        NICE book which describes the theory of operation of the board
  2163.        itself, and includes a good number of experiments that you can try
  2164.        for yourself.  Philips sold nearly 10,000 of these boards in the
  2165.        USA (and 5000 in Europe without even advertising).
  2166.  
  2167.  
  2168.     American Educational Systems AES-51, AES-11, AES-88
  2169.  
  2170.        If you'd like to start learning about microcontrollers, but the
  2171.        thought of finding all the parts and then building one scares you,
  2172.        take a look at the line of boards available from American
  2173.        Educational Systems. This might be the easiest way to get started.
  2174.        For less than $300, you get a complete and professionally designed
  2175.        and packaged educational tool.
  2176.  
  2177.        AES has three boards: AES-51 (8051), AES-11 (68hc11), and AES-88
  2178.        (8088). All three boards are built along the same lines and
  2179.        include RAM, ROM, LCD display, keypad, A/D, serial ports, digital
  2180.        I/O ports, and logic probe. Also included is a full bookshelf of
  2181.        documentation. These boards are ridiculously easy to use and
  2182.        program - you can get started experimenting and designing right
  2183.        away.
  2184.  
  2185.        This is a perfect system for students and hobbyists. Even
  2186.        professionals will find this system useful as a prototyping tool
  2187.        and test bed. Highly recommended.
  2188.  
  2189.        For more information, contact:
  2190.              American Educational Systems
  2191.              970 West 17th St.
  2192.              Santa Ana, CA  92706  USA
  2193.              (800)730-3232 or (714)550-8094   Fax: (714)550-9941
  2194.  
  2195.  
  2196. 6.2)  Easy chips to use
  2197.  
  2198.     In addition, several chips provide a similar capability if you are
  2199.     willing to spend a bit of time wiring up a simple circuit.  A few
  2200.     chips worth looking at are:
  2201.  
  2202.     Motorola MC68HC11A8P1
  2203.        Contains Motorola's BUFFALO monitor which has the same
  2204.        functionality as the one on Motorola's evaluation boards.  A
  2205.        working system can be built with this chip and a Maxim MAX-232.
  2206.        You can talk to it with a PC or Mac over a 3-wire RS232
  2207.        connection.  It is easy to load and run anything you want in the
  2208.        on-board RAM and EEPROM.  You can even use subprograms in the
  2209.        BUFFALO monitor after getting a listing from Motorola's BBS or ftp
  2210.        site.  This BBS/ftp site also has freeware assemblers to make a
  2211.        complete development environment cheaply and quickly.
  2212.  
  2213.     Intel 8052AH-BASIC
  2214.        This popular chip with hobbyists is another easy way to get
  2215.        started.  You can download high level code from your host.  The
  2216.        disadvantages are that you can't get away from a multi-chip
  2217.        solution, the code is noticeably slow, you have to buy an MCS
  2218.        BASIC manual, you are detached from the inner workings, there
  2219.        aren't many on-chip goodies like A/D, and you can forget about
  2220.        running off of a battery.
  2221.  
  2222.     Dallas Semiconductor DS5000/DS2250
  2223.        These are well suited even for electronics ignoramuses (ignorami?)
  2224.        such as myself.  All you need to add is a crystal and two
  2225.        capacitors to end up with a working system.  These chips come
  2226.        complete with non-volatile RAM in the form of static RAM (at least
  2227.        8K) backed up with a lithium battery.  Everything is saved -
  2228.        program, data, and bugs ;-).
  2229.  
  2230.     MicroChip PIC '5x series
  2231.        With only 33 instructions, this chip is definitely easy to use!
  2232.        Using Parallax's assembler, the instruction set is ** MUCH ** less
  2233.        intimidating than MicroChip's opcodes!  These chips simply need
  2234.        power, ground, and 1 of 4 different timing circuits. Doesn't get
  2235.        much easier than that!  With I/O pins that are beefy (25mA per pin
  2236.        sink, 20mA per pin source) and drive both high and low,
  2237.        interfacing is super easy.  It's great to hook LEDs and such
  2238.        directly to output pins with only a resister in-line!
  2239.  
  2240.  
  2241. 6.3)  Software (Cheap and easy)
  2242.  
  2243.     Well, it's finally here. A free C compiler for the 8051. Featured in
  2244.     Dr. Dobb's August 1997 issue, Andy Yuen's Retargetable Concurrent
  2245.     Small C (RCSC) is based on James E. Hendrix' lengendary Small C. A
  2246.     previous iteration of RCSC, Concurrent Small C was introduced in the
  2247.     August 1996 issue of Dr. Dobbs. With the release of this compiler,
  2248.     Andy Yuen is very likely to become a folk hero.
  2249.  
  2250.     So, why are you still reading this? The FAQ will wait! First download
  2251.     a copy of RCSC. You can get it from: http://www.ddj.com or
  2252.     ftp://ftp.mv.com/pub/ddj. Then go out and find a copy of Dr. Dobb's
  2253.     August 1997 issue.
  2254.  
  2255.     You'll still need to purchase either James E. Hendrix's "A Small C
  2256.     Compiler" (ISBN 0-13-814724-8) or the Dr. Dobb's Small C Compiler
  2257.     Resource CD. This of course means that the free C compiler isn't
  2258.     totally free, but then again, what is?
  2259.  
  2260.  
  2261.     A couple free versions of C exist for the 68hc11. One is based on
  2262.     Small C and another on the Gnu C package. Neither package is known
  2263.     for ease of use or reliability. However, you might find that one of
  2264.     these packages fits your needs.
  2265.  
  2266.  
  2267.     You can search for free software for development, but you often get
  2268.     what you pay for.  What is sorely lacking in freeware is technical
  2269.     support.  Several packages are available that provide complete
  2270.     development environments for some of the more popular
  2271.     microcontrollers.  If you want to be productive right away, think
  2272.     about investing $100 or so - it'll be well worth the price!
  2273.  
  2274.  
  2275.     I've been playing with the Dunfield Development System lately (on the
  2276.     8051), and it's really quite nice.  I've also heard many good things
  2277.     about it from others.  It includes a near ANSI-C compiler, run-time
  2278.     library with source, assembler, ROM debugger, integrated development
  2279.     environment, monitor with source, utilities, and other extras.
  2280.     Although not freeware, the low price ($100), the features, all of the
  2281.     extra goodies, and the good reviews make this a package worth looking
  2282.     at.  Also, if you're interested in working on more than one family of
  2283.     microcontroller, Dunfield supports a wide range.  This means only
  2284.     needing to learn one system, instead of many.  The following chips
  2285.     are supported:  6805, 6809, 68hc11, 68hc16, 8051/52, 8080/85, 8086,
  2286.     and 8096.  A package including a simulator and a resident monitor
  2287.     debugger are also available for the 8051 for $50.
  2288.           Dunfield Development Systems
  2289.           P.O. Box 31044, Nepean, Ontario  K2B 8S8   Canada
  2290.           (613)256-5820   Fax: (613)256-5821
  2291.           Email:  ddunfield@bix.com
  2292.  
  2293.  
  2294.     A decent C compiler for the 68hc11 comes from ImageCraft.  This
  2295.     package, which runs under DOS and OS/2, includes a near ANSI C
  2296.     compiler, assembler, linker, librarian, ANSI C functions and headers,
  2297.     and 90 page manual.  The current release is version 1.02 of their
  2298.     compiler.  The price is just $40.  Initial feedback on this compiler
  2299.     seems promising.  The pre-release versions are already in use by many
  2300.     of you, and will still be available as freeware.
  2301.           ImageCraft
  2302.           P.O. Box 64226, Sunnyvale, CA 94086-9991
  2303.           (Richard Man) imagecft@netcom.com
  2304.  
  2305.  
  2306.     Another low priced ($100) C compiler comes from Micro Computer
  2307.     Control.  Cross compilers running under DOS are available for the
  2308.     8051 and the Z8 (including Super-8).  This package includes a C
  2309.     compiler, assembler, linker, librarian, and extensive printed
  2310.     documentation.  A simulator/source code debugger is available for an
  2311.     additional $79.95.
  2312.           Micro Computer Control Corporation
  2313.           PO Box 275, 17 Model Ave., Hopewell, NJ  08525
  2314.           (609)466-1751   Fax: (609)466-4116   BBS: (609)466-4117
  2315.           Email: 73062.3336@compuserve.com
  2316.  
  2317.  
  2318.     C isn't the only development system available (yeah, I know that's
  2319.     hard to believe) - good solid Basic and Forth development systems are
  2320.     also available.  Refer to the appropriate FAQ for the microcontroller
  2321.     that you are using for more information on free and commercial
  2322.     development systems.
  2323.  
  2324.  
  2325.     If the Microchip PIC is your game, then check out the Parallax tools
  2326.     (available on their ftp and web sites).  All Parallax software is
  2327.     available free of charge to all takers!  This includes PSIM (a PIC
  2328.     simulator), PASM (an assembler for '5x parts), and PASMX (an
  2329.     assembler for 'xx parts).  These are the full commercial versions,
  2330.     not hobbled in any way!
  2331.  
  2332.  
  2333. 7)  MICROCONTROLLER PROGRAMMING LANGUAGES
  2334.  
  2335.     Just a bit of an introduction for the beginner.
  2336.  
  2337.  
  2338. 7.1)  Machine/Assembly language
  2339.  
  2340.     Machine language is the program representation as the microcontroller
  2341.     understands it.  It is not easy for humans to read and is a common
  2342.     cause of migraine headaches.  Assembly language is a human-readable
  2343.     form of machine language which makes it much easier for us flesh and
  2344.     bone types to deal with.  Each assembly language statement
  2345.     corresponds to one machine language statement (not counting macros).
  2346.  
  2347.     An assembly/machine language program is fast and small.  This is
  2348.     because you are in complete charge of what goes into the program.  Of
  2349.     course, if you write a slow, large, stupid program, then it will run
  2350.     slowly, be too big, and be stupid.  Assembly language (assembler)
  2351.     can't correct stupidity - although sometimes I wish it could ;-).
  2352.  
  2353.     If you are starting out learning about microcontrollers, it would be
  2354.     worth your while first learning assembler.  By programming in
  2355.     assembler, you master the underlying architecture of the chip, which
  2356.     is important if you intend to do anything significant with your
  2357.     microcontroller.
  2358.  
  2359.  
  2360. 7.2)  Interpreters
  2361.  
  2362.     An interpreter is a high level language translator that is closer to
  2363.     natural language.  The interpreter itself is a program that sits
  2364.     resident in the microcontroller.  It executes a program by reading
  2365.     each language statement one at a time and then doing what the
  2366.     statement says to do.  The two most popular interpreters for
  2367.     microcontrollers are BASIC and FORTH.
  2368.  
  2369.     BASIC's popularity is due to its simplicity, readability, and of
  2370.     course just about everyone has at least played with BASIC at one time
  2371.     or another.  One common compaint about [interpreted] BASIC is that it
  2372.     is slow.  Often this can be solved by using a different technique for
  2373.     performing the desired task.  Other times it is just the price paid
  2374.     for using an interpreter.
  2375.  
  2376.     FORTH has a very loyal following due to its speed (approaching that
  2377.     of assembler language) and its incremental approach to building a
  2378.     system from reusable parts.  Many FORTH systems come with a host
  2379.     system which turns your desktop computer into a development system.
  2380.     FORTH can be quite difficult to write in (if you have no experience
  2381.     with it) and is probably even harder to read.  However, it is a very
  2382.     useful and productive language for control systems and robotics, and
  2383.     can be mastered in time.
  2384.  
  2385.     JVM - Java(TM) Virtual Machine - was added lately to the list of
  2386.     interpreters, after the invention of the language and concepts by Sun
  2387.     Microsystems. Java was adopted enthusiastically by programmers all
  2388.     over the world and has finally found its way into the embedded
  2389.     environment. Java provides a new and revolutionary concept, geared
  2390.     towards the use of portable software applications which can be
  2391.     dynamically downloaded over a network, rather than kept on the local
  2392.     disk or in the local memory of a specific computer.  This way, the
  2393.     client computer does not need to keep all the applications, since
  2394.     they can be dynamically downloaded from the server whenever required.
  2395.     Another Java main feature is its Operating-System independent
  2396.     capability. Java is also a language. The Java language is a new
  2397.     object-oriented programming language, also developed by Sun
  2398.     Microsystems. In its very own architecture it is particularly suited
  2399.     to the development of Java's portable application pieces of software,
  2400.     called applets.
  2401.  
  2402.     The nicest thing about developing a system with an interpreter is
  2403.     that you can build your program interactively.  You first write a
  2404.     small piece of code and then you can try it out immediately to see
  2405.     how it works.  When the results are satisfactory, you can then add
  2406.     additional components until the final product is achieved.
  2407.  
  2408.  
  2409. 7.3)  Compilers
  2410.  
  2411.     A compiler is a high level language translator that combines the
  2412.     programming ease of an interpreter with greater speed.  This is
  2413.     accomplished by translating the program (on a host machine such as a
  2414.     desktop PC) directly into machine language.  The machine language
  2415.     program is then burned onto an EPROM or downloaded directly to the
  2416.     microcontroller.  The microcontroller then executes the translated
  2417.     program directly, without having to interpret first.
  2418.  
  2419.     The most popular microcontroller compilers are C and BASIC.  PL/M,
  2420.     from Intel, also has some popular support due to that company's
  2421.     extensive use of that language. Modula-2 has a loyal following due to
  2422.     its efficient code and high development productivity. Ada has many
  2423.     adherents among those designing on the larger chips (16 bits and
  2424.     above).
  2425.  
  2426.     Due to both its popularity and its slow speed, it was only logical
  2427.     that BASIC would appear as a compiled language.  A few companies
  2428.     supply a BASIC compiler for several of the more popular
  2429.     microcontrollers.  Execution speed is drastically increased over
  2430.     interpreted BASIC since the microcontroller is freed from the task of
  2431.     interpreting the statements as the program runs.
  2432.  
  2433.     While interpreted Forth approaches (and sometimes surpasses) the
  2434.     speed of many compilers, compiled Forth screams along.  Today there
  2435.     are many high performance optimizing native code Forth compilers, and
  2436.     there are also lots of very cheap or free public domain Forths.  Some
  2437.     of them like Tom Almy's ForthCMP produces optimized native code with
  2438.     less overhead and better performance than just about anything else
  2439.     out there.  Of course it still has compactness and more elegant
  2440.     factoring of functionality than in most languages.
  2441.  
  2442.     C is now the language of choice for the entire universe.  C is used
  2443.     on computers from the tiny microcontroller up to the largest Cray
  2444.     supercomputer.  Although a C program can be a bit tedious at times to
  2445.     read (due to the terse programming style followed by many C
  2446.     programmers), it is a powerful and flexible development tool.
  2447.     Although a high level language, it also gives the developer access to
  2448.     the underlying machine.  There are several very good and cheap C
  2449.     compilers available for the more popular microcontrollers.  It is
  2450.     widely used, available, supported, and produces fairly efficient code
  2451.     (fast and compact).
  2452.  
  2453.  
  2454. 7.4)  Fuzzy Logic and Neural Networks
  2455.  
  2456.     Fuzzy Logic and neural networks are two design methods that are
  2457.     coming into favor in embedded systems.  The two methods are very
  2458.     different from each other, from conception to implementation.
  2459.     However, the advantages and disadvantages of the two can complement
  2460.     each other.
  2461.  
  2462.     The advantage of neural networks is that it is possible to design
  2463.     them without completely understanding the underlying logical rules by
  2464.     which they operate.  The neural network designer applies a set of
  2465.     inputs to the network and "trains" it to produce the required output.
  2466.     The inputs must represent the behavior of the system that is being
  2467.     programmed, and the outputs should match the desired result within
  2468.     some margin of error.  If the network's output does not agree with
  2469.     the desired result, the structure of the neural network is altered
  2470.     until it does.  After training it is assumed that the network will
  2471.     also produce the desired output, or something close to it, when it is
  2472.     presented with new and unknown data.
  2473.  
  2474.     In contrast, a fuzzy-logic system can be precisely described.  Before
  2475.     a fuzzy control system is designed, its desired logical operation
  2476.     must be analyzed and translated into fuzzy-logic rules.  This is the
  2477.     step where neural networks technology can be helpful to the
  2478.     fuzzy-logic designer.  The designer can first train a software neural
  2479.     network to produce the desired output from a given set of inputs and
  2480.     outputs and then use a software tool to extract the underlying rules
  2481.     from the neural network.  The extracted rules are translated into
  2482.     fuzzy-logic rules.
  2483.  
  2484.     Fuzzy logic is not a complete design solution.  It supplements rather
  2485.     than replaces traditional event control and PID (proportional,
  2486.     integral, and derivate) control techniques.  Fuzzy logic relies on
  2487.     grade of membership and artifical intelligence techniques.  It works
  2488.     best when it is applied to non-linear systems with many inputs that
  2489.     cannot be easily expressed in either mathematical equations used for
  2490.     PID control or IF-THEN statements used for event control.
  2491.  
  2492.     In an effort to change fuzzy logic from a "buzzword" (as it is in
  2493.     most parts of the world) to a well established design method (as it
  2494.     is in Japan), most manufacturers of microcontrollers have introduced
  2495.     fuzzy logic software.  Most software generates code for specific
  2496.     microcontrollers, while other generates C code which can be compiled
  2497.     for any microcontroller.
  2498.  
  2499.  
  2500. 8)  DEVELOPMENT TOOLS
  2501.  
  2502.     Having a programming language is usually not enough to develop a
  2503.     program for a microcontroller.  Some way of debugging your program is
  2504.     needed.  I am only too painfully aware of this fact.
  2505.  
  2506.  
  2507. 8.1)  Simulators
  2508.  
  2509.     A simulator runs your microcontroller program on a host machine (such
  2510.     as your PC).  You can step through the code to see exactly what is
  2511.     happening as the program runs.  Contents of registers or variables
  2512.     can be altered to change the way the program runs.  Eliminates (or at
  2513.     least delays) the erase/burn/program EPROM cycle common in
  2514.     microcontroller program development.  You can work out ideas or learn
  2515.     about microcontrollers by experimenting with small code fragments and
  2516.     watching on the screen what happens.  A simulator can't support real
  2517.     interrupts or devices, and usually runs much slower than the real
  2518.     device the program is intended for.
  2519.  
  2520.     Some manufacturers have a cross between a software simulator and the
  2521.     hardware emulator - a hardware simulator.  This is a piece of
  2522.     equipment that plugs into your target, and the pins will toggle and
  2523.     react like they should - just MUCH slower.  Cost of a device like
  2524.     this is only about $100.  Two such boards by National Semiconductor
  2525.     and Philips are detailed in section 6.2.
  2526.  
  2527.  
  2528. 8.2)  Resident Debuggers
  2529.  
  2530.     A resident debugger runs your program on the microcontroller itself,
  2531.     while showing the progress on your host machine (such as a PC).  Has
  2532.     many of the same advantages as simulator above, with the additional
  2533.     benefit of seeing how the program runs on the real target machine.  A
  2534.     resident debugger needs to "steal" some resources from the target
  2535.     machine, including: a communications port to communicate with the
  2536.     host, an interrupt to handle single stepping, and a certain amount of
  2537.     memory for the resident part (on the target) of the debugger.
  2538.  
  2539.  
  2540. 8.3)  Emulators
  2541.  
  2542.     If you've got the money, this is the equipment you want to develop
  2543.     your system with (yeah, that's right, a preposition at the end of a
  2544.     sentence!).  A [usually] expensive piece of hardware that even for
  2545.     the cheaper versions will run you at least $700.  An emulator is a
  2546.     sophisticated device that pretends that it is the microprocessor
  2547.     itself, while at the same time capturing information.  It provides
  2548.     full and total control over your target, while at the same time not
  2549.     requiring any resources from the target.  The emulator can either be
  2550.     a stand alone device with its own display, or it can be interface to
  2551.     a PC.
  2552.  
  2553.  
  2554. 8.4) Java on Embedded Systems
  2555.  
  2556.     <Thanks to Marius Gafen of NSI in Israel for the following discussion
  2557.     of Java>
  2558.  
  2559.     This is a short discussion about the technology of Java (TM)
  2560.     implementation on Embedded Systems and the issues involved. This
  2561.     technology implementation can bring to the embedded systems world the
  2562.     benefits of Java, enabling the development of  extensible, portable
  2563.     and downloadable applications, which dramatically reduce development
  2564.     costs and provide fast response to ever changing market demands,
  2565.     while keeping all existing advantages.
  2566.  
  2567.     Java -  Write once, run everywhere ...
  2568.     Java provides a new and revolutionary concept, developed by Sun
  2569.     Microsystems and geared towards the use of portable software
  2570.     applications which can be dynamically downloaded over a Network,
  2571.     rather than kept on the local disk or in the local memory of a
  2572.     specific computer. This way, the client computer does not need to
  2573.     keep all the applications, since they can be dynamically downloaded
  2574.     from the  server whenever required. After the applications are done,
  2575.     they can be either kept on the computer or discarded - as required.
  2576.     Of course, these applications do not need to exist when the computer
  2577.     is built or purchased - they, or their later versions, can be
  2578.     developed and added at a later stage. Java enables dynamic
  2579.     interaction, where the user receives immediate feedback. Java
  2580.     provides Operating-System independent capability. Java provides all
  2581.     these features by allowing the execution of code that can be
  2582.     distributed across the network in a portable, robust, secure and
  2583.     high-performance environment.
  2584.  
  2585.     Java - The Language
  2586.     The Java language is a new object-oriented programming language, also
  2587.     developed by Sun Microsystems. In it's very own architecture it is
  2588.     particularly suited to the development of Java's portable application
  2589.     pieces of software, called applets.  These are applications which are
  2590.     dynamically downloaded over the network and executed on the
  2591.     Java-Enabled client computer, normally equipped for this purpose with
  2592.     a Java-Enabled Web Browser.
  2593.  
  2594.     Java - The Components
  2595.     The Java system compiles Java applets into Byte Code. Once compiled,
  2596.     the Java Byte Code is placed in a file ready to be downloaded through
  2597.     the Network to the client computer that requests it. A Java-Enabled
  2598.     Web Browser includes a component called a Java Virtual Machine (or
  2599.     JVM, for short). This component is responsible for actually running
  2600.     the Java Byte Code and it isolates the Java code from the specifics
  2601.     of the underlying hardware  and operating system. Consequently, Java
  2602.     applets are developed once but they can run, unchanged, on any client
  2603.     computer with a Java Enabled Web Browser, regardless of the specific
  2604.     platform.
  2605.  
  2606.     Implementation of Java in Embedded Systems
  2607.     The use of Java in an embedded environment presents unique
  2608.     challenges, due to the fundamental differences between an embedded
  2609.     system and a general-purpose computer or work-station. These
  2610.     differences should be thoroughly understood in order to better
  2611.     appreciate the implications associated with implementing Java to a
  2612.     particular application domain.
  2613.     a. An embedded system usually lacks secondary storage (e.g. a hard
  2614.     disk) making it difficult to keep a library of application code and
  2615.     to load a particular routine upon demand. Therefore, the size of the
  2616.     application is limited to the size of the existing memory device
  2617.     (such as ROM or Flash).
  2618.     b. In most cases, an embedded system lacks direct user interface such
  2619.     as a monitor. Rather, it communicates with the operator (if at all)
  2620.     through some specialized devices or through a front-end station which
  2621.     is connected to the embedded application  via a specialized bus or
  2622.     network.
  2623.     c. The lack of a file-system and traditional user interface devices
  2624.     has a special significance for Java-based applications which rely
  2625.     heavily on the presence of these components. Often, an embedded
  2626.     application has limited resources such as memory and CPU bandwidth.
  2627.     Consequently, the scheduling  and sharing of these resources become
  2628.     one of the major design challenges when developing such an
  2629.     application. Particularly, in Real-Time applications, the performance
  2630.     requirements and the constraints on resources lead to lean and
  2631.     fine-tuned scheduling disciplines in order to meet the system's
  2632.     performance requirements.
  2633.     d. Typically, an embedded system is very specialized; it is tightly
  2634.     integrated with the surrounding environment and has demanding
  2635.     requirements for robustness. Since the protection mechanisms (such as
  2636.     address-space boundary protection) that are usually provided by a
  2637.     typical operating system are not available in such an environment,
  2638.     the mechanism of introducing new software into the application should
  2639.     be tightly controlled. This fact has special significance in the
  2640.     context of Java where the programming paradigm is based on dynamic
  2641.     downloading of applets from various sources. Java was designed (and
  2642.     initially implemented) to run on UNIX workstations. It relies on many
  2643.     services that are available on such a system (such as files,
  2644.     processes, Internet naming services) which do not exist in a typical
  2645.     embedded system. Some of these do not make sense in such an
  2646.     environment (for example, a network device might have an IP-address,
  2647.     but it does not necessarily have a domain name).
  2648.  
  2649.     Implementation Architectures
  2650.     In order to execute Java code on an embedded system, several key
  2651.     components must be developed or ported to this system. These
  2652.     components have to be tailored to the specific hardware, to the
  2653.     kernel (if one exists) and to some extent to the C compiler being
  2654.     used (since part of the JVM and its interface layers are implemented
  2655.     in C). The two main possible approaches are:
  2656.     a. Developing a dedicated Java-compatible system, exactly fitted to
  2657.     the embedded environment.
  2658.     b. Porting Sun's original Java to the embedded environment.
  2659.     The first approach has the advantage of ending with a product which
  2660.     is originally designed to the embedded environment, including all the
  2661.     constraints of this special environment. The second approach has the
  2662.     advantage of compatibility to the de-facto standard which has been
  2663.     already adopted by the industry. Since Java is a live language and
  2664.     environment, driven by both the industry needs and the rapid
  2665.     technology changes, this factor is considered to be of tremendous
  2666.     importance.
  2667.  
  2668.     More architectural concepts
  2669.     For achieving appropriate compatibility with all Java existing and
  2670.     future intrinsics, the only possible approach of porting Java is
  2671.     based on Sun's JDK (Java Development Kit) sources as distributed from
  2672.     Sun. These sources were analyzed and checked against the requirements
  2673.     of the embedded environment, before being carefully restructured.
  2674.     The final result is retargetable software which lends itself to be
  2675.     easily ported to each unique combination of hardware - kernel - C
  2676.     compiler. This software runs on a variety of Real-Time Operating
  2677.     Systems and provides a Virtual Machine environment for the execution
  2678.     of Java byte code. Special design considerations enable it to coexist
  2679.     with other applications, which are running on the same platform,
  2680.     either Real-Time or Non-Real Time, while complying with the
  2681.     constraints imposed by the Real-Time  Operating System and the
  2682.     application tasking architecture.
  2683.  
  2684.     JVM Encapsulation
  2685.     As mentioned previously, the ideal technique would be the one which
  2686.     enables the embedded Java software to run on top of any commercial
  2687.     Real-Time kernel or be adapted to any application-specific executive.
  2688.     This capability is accomplished by having a well-defined API that
  2689.     encapsulates the services that the JVM needs from the underlying
  2690.     system.  The Java language supports parallelism in the form of
  2691.     threads (light-weight tasking). It includes methods for thread
  2692.     management, synchronization and communication. There are two
  2693.     approaches for mapping the Java threads to the parallel  entities of
  2694.     the underlying kernel (typically, they are called tasks):
  2695.     a. Mapping each Java thread to a kernel task and utilizing the kernel
  2696.     services to schedule these threads and synchronize between them.
  2697.     b. Dedicating one kernel task to run the JVM and then have the Java
  2698.     threads be implemented internally by the Java run-time support
  2699.     system.
  2700.     Again, there are tradeoffs to be considered when choosing the
  2701.     appropriate model. In the first model, the services of the Real-Time
  2702.     kernel are used directly for managing the Java threads and can, in
  2703.     some situations, perform better. In addition, Java threads can
  2704.     interact directly with other tasks in the system. However, this
  2705.     approach requires that the overall system be fully tested each time a
  2706.     new Java thread is introduced or a change to the Java code is
  2707.     performed. In the second approach, the JVM acts also as an
  2708.     intermediate monitor, which internally manages the Java threads and
  2709.     ensures  that the Java code as a whole performs accurately within its
  2710.     resource boundary. It therefore ensures that in any circumstances
  2711.     the JVM does not exceed the amount of system resources allocated to
  2712.     the Java application.  The practical meaning of this implementation
  2713.     approach is that once the JVM has been fully tested in a particular
  2714.     environment,  the different applets can be downloaded and executed
  2715.     with no need to re-test.
  2716.  
  2717.  
  2718. 8.5)  Good Stereo System
  2719.  
  2720.     This is the most important tool for the microcontroller developer, or
  2721.     for any computer system developer for that matter.  Don't expect to
  2722.     get anywhere unless you have the proper music playing in the
  2723.     background(?) at the proper volume.  I find that I do my best work
  2724.     with the Rolling Stones (especially Goats Head Soup) or Clapton
  2725.     (especially early stuff like Cream - Disraeli Gears is a killer
  2726.     album!).  The volume must be set to cause excrutiating pain to be
  2727.     most effective.  Trust me on this ;-).
  2728.  
  2729.     Tom Mornini of Parallax reports:  "Johnny Cash also has a certain
  2730.     effectiveness, as well as the Beatles, Aerosmith, and Rush!  60's
  2731.     rock and British invasion bands in particular seem to have a
  2732.     particularly productive effect."
  2733.  
  2734.     This would be an interesting topic for an in-depth study.
  2735.     Particularly intriguing, is if certain types of music work better
  2736.     with specific [families of] processors.  Another question in need of
  2737.     study would be if it's really true that the smaller the chip (in
  2738.     bits), the louder the music needs to be.
  2739.  
  2740.  
  2741. 9)  FINDING OUT MORE ABOUT MICROCONTROLLERS
  2742.  
  2743.     If you are interested in learning more about microcontrollers, there
  2744.     are many fine sources of information.  You have your choice of
  2745.     printed media (books, periodicals, informative graffiti) or
  2746.     interactive (right here on the Internet, or BBSs).
  2747.  
  2748.  
  2749. 9.1)  Books
  2750.  
  2751.     8-bit Microcontroller Instruction Set Performance
  2752.         - Digitial Systems Consulting / June 1994
  2753.         - compares Motorola's M68HC05, Intel's 80x51,
  2754.             Microchip's PIC16C5x, and National's COP8
  2755.         - lit number 630008
  2756.         - (800)272-9959 call this number for copies
  2757.  
  2758.     The 16 bit 8096:  Programming, Interfacing, Applications
  2759.         - Ron Katz and Howard Boyet
  2760.         - Microprocessor Training Inc
  2761.           14 East 8th Street, New York, NY  10003
  2762.           212-473-4947
  2763.         - Library of Congress Catalog card number:  85-61954
  2764.         - According to William Chernoff:  "The book is pretty good -
  2765.           mostly software examples.  The one hardware thing I looked
  2766.           closely at was wrong - a schematic error.  Oh well."
  2767.  
  2768.     The 68hc11 Microcontroller
  2769.         - Joseph D. Greenfield (at R.I.T.)
  2770.         - Saunders College Publishing, (Harcourt Brace Jovanovich)
  2771.         - 1992
  2772.         - ISBN 0-03-051588-2
  2773.         - A number of the sections make use of the Buffalo monitor.
  2774.           This could be useful if you are using the Motorola Trainer EVB.
  2775.  
  2776.     The 8051 Family of Microcontrollers
  2777.         -Richard H. Barnett
  2778.         -Prentice-Hall, 1995 (yeah, that's right, 1995!)
  2779.         -ISBN 0-02-306281-9
  2780.  
  2781.     8051 Interfacing and Applications
  2782.         - Applied Logic Engineering
  2783.           13008 93rd Place North, Maple Grove, MN  55369
  2784.         - (612)494-3704
  2785.  
  2786.     The 8051 Microcontroller
  2787.         - I. Scott MacKenzie
  2788.         - Prentice Hall
  2789.         - 2nd edition, 1995
  2790.         - ISBN 0-02-373660-7
  2791.         - includes schematics for a single-board computer,
  2792.           assembly-language source code for a monitor program, and
  2793.           interfaces to a keypad, LEDs, and loudspeaker
  2794.  
  2795.     The 8051 Microcontroller
  2796.         - James W. Stewart
  2797.         - Regents/Prentice-Hall, 1993
  2798.         - $27.50, 273 pages
  2799.         - includes many interfacing examples (switches, solenoids,
  2800.           relays, shaft encoders, displays, motors, and A/D converters)
  2801.           and a chapter on top-down design method
  2802.  
  2803.     The 8051 Microcontroller: Architecture, Programming and Applications
  2804.         - Kenneth J. Ayala
  2805.         - 241 pages, soft cover
  2806.         - 5.25" diskette with assembler and simulator
  2807.         - ISBN 0-314-77278-2, Dewey 004.165-dc20
  2808.         - West Publishing Company
  2809.           P.O. Box 64526, St. Paul, MN  55164
  2810.           (800)328-9352
  2811.         - see review in next section
  2812.  
  2813.     The Art of Programming Embedded Systems
  2814.         - Jack G. Ganssle
  2815.         - 1992, 279pp, $55.00
  2816.         - ISBN: 0-12-274880-0
  2817.         - CONTENTS: Introduction, Initial Considerations.  Elegant
  2818.           Structures.  Designs for Debugging.  Design for Test.  Memory
  2819.           Management.  Approximations. Interrupt Mamangement.  Real-Time
  2820.           Operating Systems.  Signal Sampling and Smoothing.  A Final
  2821.           Perspective.  Appendixes: Magazines, File Format.  Serial
  2822.           Communications.  Bibliography.  Index.
  2823.  
  2824.     Assembly Language Programming (for the MCS-51 family)
  2825.         - F. A. Lyn
  2826.         - L. S. Electronic Systems Design
  2827.  
  2828.     Basic-52 Programmer's Guide
  2829.         - Systronix, Inc. (they also sell a Basic compiler)
  2830.         - address above
  2831.  
  2832.     Beginner's Guide
  2833.         - Suncoast Technologies
  2834.  
  2835.     A Beginners Guide to the Microchip PIC
  2836.         - Nigel Gardner
  2837.         - Character Press, Ltd. (UK)
  2838.         - ISBN 1 899013 00 8
  2839.         - software (on floppy) and hardware guide, debugging techniques
  2840.         - suitably titled, for those with no previous microcontroller
  2841.           experience
  2842.         - 19.95 UK Pounds
  2843.  
  2844.     The PIC Source Book:
  2845.         - assembly language source code on diskette
  2846.         - $39
  2847.         - Scott Edwards Electronics
  2848.           964 Cactus Wren Lane, Sierra Vista, AZ  85635
  2849.           (602)459-4802    Fax: (602)459-0623
  2850.           72037.2612@compuserve.com
  2851.  
  2852.     C and the 8051
  2853.         - Thomas W. Schultz
  2854.         - Prentice Hall
  2855.         - ISBN 0-13-753815-4
  2856.  
  2857.     Data Acquisition and Process Control with the M68HC11 Microcontroller
  2858.         - Frederick Driscoll, Robert Coughlin, Robert Villanucci of
  2859.           Wentworth Institute of Technology.
  2860.         - Macmillan Publishing Company
  2861.         - 1994
  2862.         - ISBN 0-02-33055-X
  2863.         - Several Chapters on the 68HC11, instructions, and EVB;
  2864.           chapters on interfacing Analog and Digital signals to the
  2865.           68HC11;  example applications of interfaces to temperature,
  2866.           load cell, pressure and thermocouple sensors.
  2867.         - a good companion to Motorola's "pink" books
  2868.  
  2869.     Data book / Handbook / Users' Guide
  2870.         - Advanced Micro Devices
  2871.         - Dallas (User's guide for the DS5000)
  2872.         - Intel
  2873.         - Siemens
  2874.  
  2875.     Design with Microcontrollers
  2876.         - John B. Peatman
  2877.         - ISBN 0-07-049238-7
  2878.         - This book is on a more advanced level.  Uses both the 68hc11
  2879.           and Intel 8096 as example systems.
  2880.         - Used for a very popular course on microcontroller design at
  2881.           Georgia Tech.
  2882.  
  2883.     Embedded Controller Forth for the 8051 Family
  2884.         - Academic Press
  2885.         - William H. Payne
  2886.         - uses a Forth development system available on the Internet
  2887.  
  2888.     Embedded Controllers Databook 1992 Edition
  2889.         - National Semiconductor Corporation
  2890.         - literature number: 400049
  2891.         - (800)272-9959 call this number for for copies
  2892.  
  2893.     Embedded Systems Programming in C and Assembler
  2894.         - John Forrest Brown
  2895.         - Van Nostrand Reinhold, 1994
  2896.         - 304 pages, $49.95
  2897.         - ISBN 0-442-01817-7
  2898.         - covers Motorola and Intel processors
  2899.         - includes diskette with code from the book
  2900.         - book review in Dr. Dobb's Journal, November 1994, page 121
  2901.  
  2902.     Experimenter's guide
  2903.         - Rigel Corporation
  2904.  
  2905.     Introduction to Microcontroller Design, Based on the 8051 family of
  2906.     Processors
  2907.         - Business Data Computers
  2908.           P.O. Box 1549, Chester, CA  96020
  2909.  
  2910.     Mc68hc11 An Introduction
  2911.         - Han-Way Huang
  2912.         - Software and Hardware Interfacing, Applications using the
  2913.           EVB from Motorola.
  2914.         - West Publishing Company
  2915.         - ISBN 0-314-06735-3
  2916.  
  2917.     M68hc11 Reference Manual
  2918.         - Motorola - literature reference M68HC11RM/AD
  2919.         - This document is the "bible" of the 6811 and is a must-have
  2920.           for any serious 6811 programmer.
  2921.  
  2922.     MC68hc811E2 Programming Reference Guide
  2923.         - Motorola - literature reference M68HC811E2RG
  2924.         - A pocket-sized guide to the version of the 6811 used on the
  2925.           Mini Board
  2926.  
  2927.     The Microcontroller Idea Book
  2928.         - Jan Axelson (of Microcomputer Journal fame)
  2929.         - features the 8052-BASIC microcontroller
  2930.         - hands-on guide with complete plans (schematics, design theory,
  2931.           program listings, construction details, etc)
  2932.         - explains how to use sensors, relays, displays, clock/calendars,
  2933.           keypads, wireless links, and more
  2934.         - 1994, 273 pages, $31.95 + shipping
  2935.         - Lakeview Research, 2209 Winnebago St., Madison, WI  53704
  2936.           (608)241-5824  Internet: 71163.3555@compuserve.com
  2937.         - contact the author at janaxel@aol.com
  2938.  
  2939.     Microcomputer Engineering
  2940.         - Gene H. Miller
  2941.         - Prentice Hall, Englewood Cliffs, NJ  07632
  2942.         - 1993
  2943.         - ISBN 0-13-584475-4
  2944.         - Explains the basics.  Many clear and concise assembly language
  2945.           example programs.
  2946.         - Written to be used with the Motorola Trainer (EVB).
  2947.  
  2948.     Microcontroller Technology, The 68hc11
  2949.         - Peter Spasov
  2950.         - Prentice Hall
  2951.         - ISBN 0-13-583568-2
  2952.  
  2953.     Microcontrollers: Architecture, Implementation, and Programming
  2954.         - Kenneth Hintz and Daniel Tabak
  2955.         - McGraw-Hill Inc.  1992
  2956.         - ISBN 0-07-028977-8
  2957.  
  2958.     Microprocessor 1995
  2959.         - Jack Quinn, Micrologic Research
  2960.         - Integrated Circuit Engineering Corporation
  2961.           15022 North 75th St., Scottsdale, AZ  85260-2476
  2962.           (602)998-9780   Fax: (602)9481925
  2963.         - comprehensive study of the microprocessor industry and market,
  2964.           current status, trends, and developments
  2965.         - $1495
  2966.         - Microprocessor 1996 due out in November
  2967.  
  2968.     PIC 16Cxx Development Tools instructions manuals
  2969.         - Parallax, Inc.
  2970.         - Instruction manual for the Parallax PIC assemblers
  2971.         - Instruction manual for the Parallax Software Simulator
  2972.         - Instruction manual for the Parallax PIC programmer hardware
  2973.         - Details the Parallax PIC instruction set
  2974.  
  2975.     PIC 16Cxx Applications Handbook
  2976.         - Parallax, Inc.
  2977.         - Contains condensed data sheets for '5x, '64, '71, and '84
  2978.           controllers
  2979.         - Contains 14 application notes showing circuits and code for
  2980.           common projects using the PIC series of microcontrollers.
  2981.  
  2982.     Easy PIC'n, A Beginner's Guide to Using PIC16/17 Microcontrollers"
  2983.         - ISBN 0-9654l62-0-8
  2984.         - intended to ease the beginner toward understanding and
  2985.           application of the PIC16/17 line of microcontrollers from
  2986.           microchip Technology Inc.  For the hobbyist or engineer for
  2987.           self study or as a text for a college engineering course in the
  2988.           application of microcontrollers.
  2989.         - examples of assembly language programs
  2990.         - in-depth coverage of program writing using flow charts
  2991.         - the approach is hands-on with lots of examples, all of which
  2992.           may be demonstrated using a very simple demo board (a project)
  2993.           described in the beginning of the book
  2994.         - For more information, contact the author:
  2995.                 David Benson, Author (Easy PIC'n)
  2996.                 Owner, Square 1 Electronics
  2997.                 squareone@zapcom.net
  2998.                 (707)279-8881   Fax: (707)279-8883
  2999.  
  3000.     Posix.4:  Programming for the Real World
  3001.         - Bill O. Gallmeister
  3002.         - O'Reilly and Associates, 1995
  3003.         - ISBN 1-56592-074-0
  3004.         - Part I of the book describes the Posix standard (what it is,
  3005.           what it isn't, and what it's for), and explains the principles
  3006.           of real time programming (tasking, messages, scheduling, I/O,
  3007.           and performance) and why Unix isn't fit for real-time
  3008.           programming.  Part II is a reference on the Posix functions and
  3009.           header files.  Part III contains much of the code for the
  3010.           exercises in the book.
  3011.  
  3012.     Programmer's Guide to the 1802
  3013.         - Tom Swan
  3014.         - Hayden Book Company, Inc., 1981
  3015.         - ISBN 0-8104-5183-2
  3016.         - good introduction to assembly language progamming and an
  3017.           thorough tutorial on the 1802
  3018.  
  3019.     Programming Microcontrollers in C
  3020.         - Ted Van Sickle
  3021.         - HighText Publications, 1994
  3022.         - 394 pages, $29.95
  3023.         - ISBN 1-878707-14-0
  3024.         - thorough tutorial on C programming, covers aspects of C
  3025.           programming specific to embedded systems
  3026.         - covers the Motorola line of microcontrollers (small to large)
  3027.         - book review in Dr. Dobb's Journal, November 1994, page 121
  3028.  
  3029.     The Real-Time Kernel
  3030.         - Jean Labrosse
  3031.         - R&D Publications, Inc.
  3032.           Suite 200 1601 W 23rd St., Lawrence, KS  66046
  3033.         - (913)841-1631   Fax: (913)841-2624
  3034.         - Based on the article "A Portable Real Time Kernel in C"
  3035.           in Embedded Systems Programming (Part 1: vol 5 no 5
  3036.           May 1992, Part 2: vol 5 no 6 June 1992)
  3037.         - originally written for the Intel 186 but ported to HC11
  3038.           source code for UCOS11
  3039.  
  3040.     Single- and Multiple-Chip Microcomputer Interfacing
  3041.         - G.J. Lipovski
  3042.         - Copyright 1988
  3043.         - 478 pages
  3044.         - ISBN 0-13-810557-X (Prentice-Hall Edition)
  3045.           ISBN 0-13-810573-1 (Motorola Edition)
  3046.         - Based around the 68HC11 it covers both hardware and
  3047.           software at undergraduate level, but the emphasis is on
  3048.           interfacing.
  3049.         - Chapter titles:
  3050.                1  Microcomputer Architecture
  3051.                2  Programming Microprocessors
  3052.                3  Bus Hardware and Signals
  3053.                4  Parallel and Serial I/O
  3054.                5  Interrupts and Alternatives
  3055.                6  Analog Interfacing
  3056.                7  Counters and Timers
  3057.                8  Communications Systems
  3058.                9  Storage and Display Systems
  3059.  
  3060.     Single- and Multiple- Chip Microcomputer Interfacing (Lab Manual)
  3061.         - Peter Song and G. Jack Lipovski
  3062.         - Prentice-Hall, 1988
  3063.         - ISBN 0-13-811605-9
  3064.         - Support for the above book.  Examples based around the Motorola
  3065.           EVB and the BUFFALO monitor or the EVBU (or 3-chip micro) and
  3066.           PC-Bug11.
  3067.  
  3068.     User Manual for the CDP1802 COSMAC Microprocessor
  3069.         - RCA, 1977
  3070.         - contains useful hardware and software techniques
  3071.  
  3072.  
  3073.     Using the M68HC11 Microcontroller: A Guide to Interfacing and
  3074.     Programming, 1/e
  3075.         - John C. Skroder, Texas A & M, Institute of Electronics
  3076.         - Prentice Hall, 1996, $77.00
  3077.         - Copyright 1997, 627 pp. cloth
  3078.         - ISBN 0-13-120676-1
  3079.         - Table of Contents
  3080.                1.  Introduction to the M68HC11.
  3081.                2.  M68HC11 Resets and Interrupts.
  3082.                3.  M68HC11 Parallel I/O.
  3083.                4.  Parallel I/O Using the Simple-Strobed and
  3084.                    Full-Handshake Modes.
  3085.                5.  The M68HC11 Serial Communications Interface (SCI).
  3086.                6.  The M68HC11 Serial Peripheral Interface (SPI).
  3087.                7.  M68HC11 Free-Running Counter and Input Captures.
  3088.                8.  M68HC11 Output Compare Functions.
  3089.                9.  M68HC11 Forced Output Compares, Real-Time Interrupts
  3090.                    and Pulse Accumulator.
  3091.                10. M68HC11 Analog-to-Digital Conversions and Fuzzy
  3092.                    Inference.
  3093.                11. M68HC11 Expanded-Multiplexed Mode.
  3094.                Appendix A. M68HC11EVB Board.
  3095.                Appendix B. M68HC11EVBU Board.
  3096.                Appendix C. Connecting the EVB/EVBU to External Circuits.
  3097.                Appendix D. AS11 Assembler.
  3098.                Appendix E. M68HC11 Instruction Set.
  3099.                Appendix F. Parts/Equipment Listing.
  3100.  
  3101.  
  3102. 9.2)  Data and Reference Books
  3103.  
  3104.     Motorola
  3105.         - M68hc11 Reference Manual, ref # M68HC11RM/AD
  3106.              this document is the "bible" of the 6811 and is a must-have
  3107.                for any serious 6811 programmer
  3108.              contact Motorola at 800-521-6274 (in the U.S.) to get a free
  3109.                copy of this manual
  3110.         - MC68hc811E2 Programming Reference Guide, ref # M68HC811E2RG
  3111.              a pocket-sized guide to the version of the 6811 used on the
  3112.              Mini Board, "ownership of this handy reference is proof of
  3113.              being a true 6811 nerd" - by Fred Martin
  3114.  
  3115.     National Semiconductor - (800)272-9959 for copies
  3116.         - COP8 Databook, ref # 400007
  3117.         - COP8 Selection Guide, ref # 630006
  3118.         - COP8 Designers Information Kit, ref # 6300007-005
  3119.              contains: - COP8 Databook (1994 Edition)
  3120.                        - COP8 Selection Guide (1994 Edition)
  3121.                        - Independent 8-bit Instruction Set Analysis
  3122.                        - Independently prepared software analysis of
  3123.                          National's COP8, Motorola's M68Hc05, Intel's
  3124.                          80X51, and Microchip's PIC16C5X
  3125.                        - Utility and Overview Disks
  3126.                        - Self-lead overview on COP8, includes electronic
  3127.                          selection guide and sample application code
  3128.         - COP8 Utility Disk, Mac ref # 6300000, Windows ref # 630001
  3129.              typical microcontroller applications and sample code
  3130.              available by ftp nscmicro.national.com in/pub/COP8
  3131.         - COP8 Overview Disk, Mac ref # 630004, Windows ref # 630005
  3132.              self-lead COP8 overview, shows product features/benifits
  3133.                 and includes a electronic selection guide (2 disks)
  3134.              available by ftp nscmicro.national.com in /pub/COP8
  3135.  
  3136.  
  3137. 9.3)  Periodicals
  3138.  
  3139.     Various magazines and journals (journals seems to be THE popular name
  3140.     for magazines these days) provide articles from time to time on
  3141.     microcontrollers.  If you are just starting out learning, pick those
  3142.     magazines that feature construction articles.
  3143.  
  3144.     The Computer Applications Journal (Circuit Cellar Ink)
  3145.         - programming and construction articles
  3146.         - POB 7694, Riverton, NJ  08077-8784
  3147.         - Fax: (203)872-2204
  3148.         - Voice orders: (609) 786-0409
  3149.         - On-line orders (BBS): (203) 871-1988
  3150.         - Email orders: ken.davidson@circellar.com
  3151.         - $21.95, $31.95 surface Canada and Mexico,
  3152.           $49.95 air all other countries
  3153.  
  3154.     Computer Design
  3155.         - industry announcements and trends
  3156.         - One Technology Park Drive, P.O. Box 990, Westford, MA  01886
  3157.         - (508)692-0700
  3158.  
  3159.     The Computer Journal
  3160.         - programming and construction articles, specializing in old
  3161.           computers (S-100, CP/M, TRS-80, Xerox, Adam, etc)
  3162.         - P.O. Box 3900, Citrus Heights, CA 95611-3900
  3163.         - (800)424-8825 or (916) 722-4970   FAX: (916) 722-7480
  3164.         - BBS: (916) 722-5799
  3165.         - WWW: http://www.psyber.com/~tcj
  3166.         - Email: tcj@psyber.com
  3167.                  Dave Baldwin: dibald@netcom.com
  3168.                  Bill Kibler: kibler@psyber.com
  3169.         - USENET newsgroup alt.tcj
  3170.  
  3171.     Control Engineering
  3172.         - industry outlook on control, instrumentation, and automation
  3173.           systems
  3174.         - Cahners Publishing
  3175.         - Circulation:
  3176.           8773 S. Ridgeway Blvd., Highlands Ranch, CO  80126-2329
  3177.           (303)470-4000
  3178.         - Editorial/Executive Offices:
  3179.           1350 E. Touhy Ave, P.O. Box 5080, Des Plaines, IL 60017-5080
  3180.           (708)635-8800
  3181.  
  3182.     Dr. Dobbs Journal
  3183.         - programming articles, concepts, and designs
  3184.         - 411 Borel Ave., San Mateo, CA  94402
  3185.         - (415)358-9500
  3186.  
  3187.     EDN
  3188.         - Cahners Publishing Company
  3189.           8773 South Ridgeline Blvd., Highlands Ranch, CO 80126-2329
  3190.         - annual microprocessor and DSP editions
  3191.         - http://www.ednmag.com/
  3192.  
  3193.     Electronic Engineering Times
  3194.         - industry announcements and trends
  3195.         - 500-B Bi-County Boulevard, Farmingdale, NY  11735
  3196.         - (516)293-3000
  3197.  
  3198.     Electronics Now
  3199.         - construction articles
  3200.         - Box 55115, Boulder, CO  80321-5115
  3201.         - $19.97 one year
  3202.  
  3203.     Elektor Electronics
  3204.         - programming and construction articles
  3205.         - World Wide Subscription Service Ltd
  3206.           Unit 4, Gibbs Reed Farm, Pashley Road
  3207.           Ticehurst TN5 7HE, England
  3208.         - 27 UK pounds
  3209.      or
  3210.         - Old Colony Sound Lab, P.O. Box 243, Peterborough, NH 03458
  3211.         - Tel. (603) 924-6371, 924-6526
  3212.         - Fax: (603) 924-9467
  3213.         - $57 USA and Canada per year
  3214.  
  3215.     Embedded Systems Programming
  3216.         - programming and systems design articles
  3217.         - Miller Freeman Publications
  3218.         - 500 Howard St., San Francisco, CA  94105
  3219.         - Miller Freeman: (415)905-2200
  3220.           Embedded Systems Programming phone: (800)829-5537
  3221.  
  3222.     Forth Dimensions
  3223.         - monthly magazine on Forth
  3224.         - Forth Interest Group, P.O. Box 2154, Oakland, California 94621
  3225.         - (510)893-6784   Fax: (510)535-1295
  3226.         - Email: johnhall@aol.com
  3227.         - Forth Interest Group home page:
  3228.              http://taygeta.oc.nps.navy.mil/fig_home.html
  3229.  
  3230.     Inquisitor Magazine
  3231.         - If you're the type that watched Gilligan's Island for its
  3232.           socio-political insights, then you'll love a new 'zine that
  3233.           just crossed my desk - Inquisitor Magazine.  It's general
  3234.           philosophy seems to be ... well, it seems to be ... uh, yeah!
  3235.           Technical in nature, bizarre, tongue in cheek, eclectic,
  3236.           electric, did I mention bizarre(?), and lots of fun.  Worth
  3237.           looking at if you like the out of the ordinary.  The moving
  3238.           force behind this magazine is Daniel Drennan, who seems to have
  3239.           suffered from an overdose of radiation from his computer
  3240.           monitor ;-).
  3241.         - Dan is offering issue 1 of Inquisitor for free except for
  3242.           postage ($1.00 in the United States; $2.00 for Canada and
  3243.           overseas surface mail; and $3.00 for overseas airmail).  This
  3244.           issue contains plans, schematics, and troubleshooting tips for
  3245.           putting together a 8052-based microcontroller.  If you're
  3246.           thinking of putting together an 8051 system, you might want to
  3247.           check this out.
  3248.         - Planetarium Station, P.O.Box 132
  3249.           New York, NY  10024-0132
  3250.         - (212)595-8370
  3251.         - Email: inquisitor@echonyc.com
  3252.         - $16 per year (4 issues)
  3253.  
  3254.     Microcomputer Journal (formerly Computer Craft)
  3255.         - programming and construction articles
  3256.         - 76 N. Broadway, Hicksville, NY  11801
  3257.         - $18.95 one year, foreign $23.00, foreign air mail $76.00
  3258.  
  3259.     Midnight Engineering
  3260.         - 1700 Washington Ave., Rocky Road, CO  81067
  3261.         - (719)254-4553
  3262.  
  3263.     MW Media - Product Directories
  3264.         - Motorola Microcontroller Tools Directory
  3265.           ('94 edition out in 3 weeks)
  3266.         - Motorola 68K Source ('94 edition available now)
  3267.         - Intel Development Tools Handbook ('95 edition just beginning)
  3268.           (survey of commercial development tools for the 8051, 8096,
  3269.           and 80186 lines of Intel microprocessors)
  3270.         - Embedded Intel 386 Directory (released in Aug '94)
  3271.         - Intel 486/Pentium directory (forthcoming in '95)
  3272.         - 8051 Product Directory ('94 edition out in 4 weeks)
  3273.           (survey of various 8051 products)
  3274.         - Hitachi Microcontroller Development Tools Directory
  3275.           (out in '95)
  3276.         - AMD FusionE86 Directory (out in '95)
  3277.           (186,386,486)
  3278.         - AMD 29K Directory (pending in '95)
  3279.         - Low Power Product Directory (out in '95)
  3280.           (3.3. volts and lower)
  3281.         - DSP Directory (released in May '94)
  3282.         - Multimedia CD (hopefully out in '95)
  3283.         - These documents could very well be a "must" if you're into
  3284.           serious development using any of these chips.  If you are
  3285.           "just" a hobbyist, see how the "other half" lives.
  3286.         - FREE to qualified developers
  3287.         - MW Media
  3288.         - Fairmont Plaza, 50 W. San Fernando, #675, San Jose, CA  95113
  3289.         - (408)288-4721   (408)286-4200   FAX: (408)288-4728
  3290.  
  3291.     Nuts & Volts Magazine
  3292.         - A National Publication for the Buying and Selling of
  3293.           Electronic Equipment
  3294.         - 430 Princeland Court, Corona, CA  91719
  3295.         - Mailed third class, USA only:  $17.00 one year
  3296.                                          $31.00 two years
  3297.         - Mailed first class, one year only:  $34.00-USA
  3298.                                               $35.00-Canada/Mexico
  3299.         - Foreign/Air Mail - $70.00;  Foreign/Surface - $39.00
  3300.         - (800)783-4624
  3301.         - Email:  74262.3664@Compuserve.com
  3302.  
  3303.  
  3304. 9.4)  USENET newsgroups
  3305.  
  3306.     Various newsgroups frequently have discussions or information on
  3307.     various microcontrollers.  Among some of the more useful (especially
  3308.     the first 3 newsgroups):
  3309.  
  3310.     comp.robotics
  3311.        Microcontrollers figure heavily in robotics projects.  You will
  3312.        find a lot of information about the subject in this newsgroup.
  3313.        Even if you aren't building a robot, check this newsgroup out.
  3314.        Lots of 68hc11 activity, too.
  3315.  
  3316.     comp.arch.embedded (great!)
  3317.        This is a great newsgroup.  Well targeted discussions on aspects
  3318.        of embedded systems and microcontrollers.
  3319.  
  3320.     sci.electronics (lots of traffic, but good)
  3321.     alt.comp.hardware.homebuilt (too much nonsense on PCs)
  3322.        Some good places to find [mostly technical] discussions on
  3323.        microcontroller use and implementation.  Most of the participants
  3324.        are crazy about "rolling their own", and are eager to share their
  3325.        knowledge.  These groups aren't well focused, and many subjects
  3326.        that aren't relevant to embedded control are covered here.
  3327.  
  3328.     comp.realtime
  3329.        Since embedded systems (controllers/processors) are almost always
  3330.        used in real time applications, this group could prove to be
  3331.        useful.  Occasional discussions about various microcontroller
  3332.        topics.
  3333.  
  3334.     comp.os.qnx
  3335.        QNX is the leading realtime OS for PCs in terms of market share.
  3336.        It is used in high-end embedded systems (16 and 32 bit); set-top
  3337.        boxes, automotive industry, banking, telecomms, etc.
  3338.  
  3339.     comp.sys.m68k
  3340.        The full line of Motorola 68000 microprocessors is discussed in
  3341.        this newsgroup, including the very powerful and advanced embedded
  3342.        processors and microcontrollers based on this family.
  3343.  
  3344.     comp.sys.6809
  3345.        This newsgroup covers an old-time favorite, the 6809
  3346.        microprocessor, which is commonly used for control applications.
  3347.        Motorola 8 bit microprocessors and microcontrollers (6805, 6811,
  3348.        etc.) are also discussed in this newsgroup.
  3349.  
  3350.     comp.sys.intel
  3351.        Mostly trends and development are discussed in this newsgroup.
  3352.        From time to time you will find a discussion on some technical
  3353.        problem or feature.  This newsgroup is usually fairly useless.
  3354.        For a while the participants spent most of their time whining
  3355.        about the Pentium bug.  Now they're all moaning about Microsoft,
  3356.        PowerPCs, and everything else BUT Intel parts.  I propose changing
  3357.        the name of this group to alt.crybabies.boo.hoo.hoo.
  3358.  
  3359.     comp.lang.misc
  3360.        Sometimes questions or discussions on different microcontroller
  3361.        topics pop up here.  I guess it's the ".misc" that attracts these
  3362.        questions.
  3363.  
  3364.     comp.ai.fuzzy
  3365.        Fuzzy logic is rapidly becoming an increasingly important aspect
  3366.        of [embedded] control systems.  This group might very well become
  3367.        an important forum for those involved in developing control
  3368.        systems.
  3369.  
  3370.     comp.dsp
  3371.        Discussions on Digital Signal Processsing
  3372.  
  3373.     comp.sys.ti
  3374.        Texas Instruments products discussed here
  3375.  
  3376.     sci.engr.control
  3377.        This forum is for the discussion of control and embedded systems.
  3378.  
  3379.     sci.engr.semiconductors
  3380.  
  3381.  
  3382. 9.5)  Internet sources of information on specific microcontrollers
  3383.  
  3384.     If you are interested in finding sources of information on a specific
  3385.     microcontroller, check out the really fine FAQs ;-) that have been
  3386.     compiled for the more popular microcontrollers.
  3387.  
  3388.       Subject:  PIC microcontrollers
  3389.       Newsgroups:  <no longer posted to newsgroups>
  3390.       Web page:  http://digiserve.com/takdesign
  3391.       Maintainer:  Tom Kellett
  3392.                    Email: Tom@takdsign.demon.co.uk
  3393.  
  3394.       Subject:  8051 microcontrollers
  3395.       Newsgroups:  comp.sys.intel
  3396.                    comp.realtime
  3397.                    comp.robotics
  3398.                    comp.lang.forth
  3399.                    sci.electronics
  3400.       Archive:  rtfm.mit.edu :  <plus all mirror sites>
  3401.                 /pub/usenet/comp.answers/microcontroller-faq/8051
  3402.                 /pub/usenet/sci.answers/microcontroller-faq/8051
  3403.                 /pub/usenet/news.answers/microcontroller-faq/8051
  3404.       Maintainer:  Russ Hersch
  3405.                    Email: russ@shani.net
  3406.  
  3407.       Subject:  68hc11 microcontrollers
  3408.       Newsgroups:  comp.realtime
  3409.                    comp.robotics
  3410.                    sci.electronics
  3411.       Archive:  rtfm.mit.edu :  <plus all mirror sites>
  3412.                 /pub/usenet/comp.answers/microcontroller-faq/68hc11
  3413.                 /pub/usenet/sci.answers/microcontroller-faq/68hc11
  3414.                 /pub/usenet/news.answers/microcontroller-faq/68hc11
  3415.       Maintainer:  Robert Boys - Ontario, Canada
  3416.                    Email: rboys@best.com
  3417.                    Russ Hersch (maintainer emeritus :-)
  3418.  
  3419.       Subject:  Motorola 68K microprocessor line
  3420.       Newsgroups:  comp.sys.m68k
  3421.       Archive:  ftp.ee.ualberta.ca : pub/motorola/general
  3422.                 ftp.luth.se : /pub/misc/motorola/faq
  3423.                 file name of archive is m68kfaq?.zip (? is version)
  3424.       Comments:  - also includes information on the 683xxx and 68hc16
  3425.                  - without a doubt, one of the finest FAQs ever written
  3426.                  (well, of course Bob paid me to say this ;-)
  3427.       Maintainer:  Robert Boys - Ontario, Canada
  3428.                    Email: rboys@best.com
  3429.  
  3430.       Subject:  ST6 microcontroller FAQ
  3431.       Newsgroups: sci.electronics
  3432.                   comp.arch.embedded
  3433.                   comp.robotics
  3434.                   comp.realtime
  3435.       Maintainer:  Emilio Caggiano - caggiano@vm.csata.it
  3436.                    Jerry van Kampen - ersicjer@er.ele.tue.nl
  3437.                    Leonhard Schneider - ubie@rz.uni-karlsruhe.de
  3438.  
  3439.  
  3440.     Several other FAQs have been compiled that address various aspects of
  3441.     microcontroller design and implementation.
  3442.  
  3443.       Subject:  I2C protocol
  3444.       Newsgroups:  sci.electronics
  3445.                    alt.hardware.homebuilt
  3446.                    comp.robotics
  3447.                    comp.protocols.misc.
  3448.       Comments:    The I2C bus is a simple 2 wire serial interface
  3449.                    developed by Philips.  A number of 8051 variants as
  3450.                    well as several peripherals include I2C support.
  3451.       Maintainer:  Vincent Himpe
  3452.                    Email: Vincent.Himpe@ping.be
  3453.  
  3454.       Subject:  Robotics
  3455.       Newsgroups:  comp.robotics
  3456.       Maintainer:  Kevin Dowling
  3457.                    (412)268-8830
  3458.                    Email: nivek@ri.cmu.edu
  3459.                    Smail: Carnegie Mellon University
  3460.                           The Robotics Institute
  3461.                           Pittsburgh, PA 15213
  3462.  
  3463.       Subject:  Electronics
  3464.       Newsgroups:  sci.electronics
  3465.       Comments:  There are a number of FAQs available in this newsgroup
  3466.                  on various subjects.  Among some of the subjects covered
  3467.                  are:  LCDs, stepper motors, suppliers, etc.
  3468.  
  3469.       Subject:  Real-time
  3470.       Newsgroups:  comp.realtime, comp.answers, news.answers
  3471.       Archive:  rtfm.mit.edu : pub/usenet/comp.realtime
  3472.       Maintainer:  Mark Linimon
  3473.                        Lonesome Dove Computing Services
  3474.                        Roanoke, Virginia
  3475.                    Email: linimon@nominil.lonesome.com.
  3476.  
  3477.       Subject:  Neural Networks
  3478.       Newsgroups:  comp.ai.neural-nets,comp.answers,news.answers
  3479.       Archive:  rtfm.mit.edu : pub/usenet/neural-net-faq
  3480.       Maintainer:  Lutz Prechelt
  3481.                    Email: prechelt@ira.uka.de
  3482.  
  3483.       Subject:  Fuzzy Logic
  3484.       Newsgroups:  comp.ai.fuzzy,comp.answers,news.answers
  3485.       Archive:  rtfm.mit.edu : pub/usenet/fuzzy-logic/
  3486.       Maintainer:  Mark Kantrowitz
  3487.                    Email: mkant+@cs.cmu.edu
  3488.  
  3489.       Subject:  alt.comp.hardware.homebuilt FAQ
  3490.       Newsgroups:  alt.comp.hardware.homebuilt
  3491.       Comments:  This file contains frequently asked questions (FAQ) and
  3492.                  general information pertaining to the newsgroup
  3493.                  alt.comp.hardware.homebuilt.
  3494.       Maintainer:  Mark Sokos (msokos1@gl.umbc.edu)
  3495.  
  3496.  
  3497. 10)  MICROCONTROLLER FREE SOFTWARE SOURCES
  3498.  
  3499.     This section includes descriptions and references to free
  3500.     microcontroller software.  FTP sites and BBSs contain many quality
  3501.     packages and code samples for free.  For heavy duty use, you might
  3502.     prefer the many commercial packages that are available.  With the
  3503.     public domain (or free) stuff, you're usually on your own.  The
  3504.     commercial packages usually provide extensive documentation and
  3505.     support.
  3506.  
  3507.     If you are looking for commercial software for the 8051, 68hc11, or
  3508.     PIC, then check out the FAQs on these microcontrollers for details on
  3509.     what is available.
  3510.  
  3511.  
  3512. 10.1)  FTP sites
  3513.  
  3514.     The following is a list of the anonymous ftp sites that have source
  3515.     code and programming languages for various microcontrollers.  There
  3516.     are many others that  are not listed here that contains bits and
  3517.     pieces.  Usually you can find them using Archie and searching for
  3518.     variations on the name of the microntroller you are looking for.
  3519.  
  3520.     ftp.pppl.gov (formerly lyman.pppl.gov)
  3521.         - this is a great source of 8051 stuff
  3522.         /pub/8051
  3523.         /pub/incoming - check this out for new untested/unsorted items
  3524.  
  3525.     ftp.mcc.ac.uk
  3526.         - this is a new 8051 ftp site
  3527.  
  3528.     ftp.intel.com
  3529.         - good source of stuff the MCS-51 and MCS-96 families
  3530.         /pub/mcs51 - various development tools and sample code for the
  3531.                      MCS-51 family
  3532.         /pub/mcs96 - various development tools and sample code for the
  3533.                      MCS-96 family
  3534.  
  3535.     nctuccca.edu.tw
  3536.         - mirror of ftp.intel.com
  3537.         /vendors/Intel
  3538.  
  3539.     freeware.aus.sps.mot.com (Motorola)
  3540.         - the ftp site version of the freeware BBS
  3541.         - lots of free software for the HC05, HC08, HC11, HC16, 680x0,
  3542.           683xx, and PowerPC
  3543.         - also see the Web pages in the next section
  3544.  
  3545.     nscmicro.national.com
  3546.         - the authoratative source for COP8 infomation
  3547.         /pub/COP8 - various develepment tools and sample code for the
  3548.                     COP8 family including most application notes
  3549.  
  3550.     ftp.zilker.net
  3551.         - /pub/philips
  3552.         - Philips "mini ftp site" set up by Phil Wood of Philips
  3553.         - lots of 8051 code and programming tools from their BBS
  3554.  
  3555.     Philips-archive@InetBSystems.us.com
  3556.         - send Email message with the word "help" in the subject line to
  3557.           learn how to access the archive
  3558.  
  3559.     ftp.ee.ualberta.ca
  3560.         - Circuit Cookbook
  3561.         - HUGE archive of all sorts of stuff on the 68hc11 (lots of other
  3562.           good stuff too!)
  3563.         - you'll have fun mucking around this ftp site, there's piles of
  3564.           stuff here
  3565.         /pub/cookbook
  3566.         /pub/motorola
  3567.         /pub/motorola/68hc11
  3568.         /pub/motorola/mcu11
  3569.  
  3570.     cherupakha.media.mit.edu (cher.media.mit.edu)
  3571.         - HUMONGOUS archive of all sorts of stuff on the 68hc11 including
  3572.           the 6.270 robotics project, Mini Board, F1 board, and more
  3573.           (lots of other good stuff too!)
  3574.         - you'll lose yourself rooting around this ftp site, there's
  3575.           piles of stuff here (assemblers, tools, C compilers, plans and
  3576.           schematics, and many other items)
  3577.         /pub/projects - tools, docs, schematics, etc. for the MIT 6.270
  3578.           robotics project using a 68hc11-based development system
  3579.         /pub/6811 - software, schematics, etc. for the 68hc11-based F1
  3580.           board
  3581.         /pub/incoming - various unsorted or new items
  3582.         /pub/miniboard - software, docs, schematics, etc. for the 3"x2",
  3583.           68hc11-based Mini Board controller
  3584.  
  3585.     ftp.funet.fi (nic.funet.fi)
  3586.         - this is a good source for various microcontrollers
  3587.         /pub/microprocs/ (subdirectories include: 1802, 6805, 8048,
  3588.            8051, 8096, PIC and many other microprocessors)
  3589.  
  3590.     ftp.sics.se
  3591.         - many assemblers, utilities, and application notes for the PIC
  3592.         - Microchip BBS mirror
  3593.         - ftp site of Memec Scandinavia, Microchip's Swedish agent.
  3594.         /pub/mchipsoft
  3595.  
  3596.     ernie.uvic.ca
  3597.         - files provided by local Motorola representative
  3598.         /pub (subdirectories include: ibm, dsp96k, dsp56100, dsp56k,
  3599.           dsptools, develop, mac, mcu302, mcu332, mcu11, pgmr, mcu16,
  3600.           mcu, market, qa, general, m68k, evm, dsp)
  3601.  
  3602.     wpi.wpi.edu
  3603.         - basic stamp information
  3604.         - PIC "C" compiler
  3605.         /stamp
  3606.  
  3607.     ftp.std.com
  3608.         /vendors/microchip/
  3609.  
  3610.     ftp.luth.se
  3611.         /pub/misc/microchip - PIC information
  3612.         /pub/misc/microchip/stamp/mirror - mirror of wpi.wpi.edu
  3613.         /pub/languages/assembler - various freeware assemblers
  3614.  
  3615.     ti.com
  3616.         read the 00readme file first or you'll be lost
  3617.  
  3618.     asterix.inescn.pt - FORTH archive
  3619.         /pub/forth
  3620.  
  3621.     hpcsos.col.hp.com
  3622.         /mirrors/.hpib0/forth/8051 (mirror of asterix Forth archive)
  3623.         /mirrors/.hpib0/forth/eForth
  3624.         /misc/ns32k/beowulf
  3625.  
  3626.     ftp.netcom.com
  3627.         /pub/imagecft - prerelease version of ImageCraft C for 68hc11
  3628.  
  3629.     info@circellar.com - Email (not ftp)
  3630.         - send Email to get information file on services available
  3631.         - all Circuit Cellar INK and BYTE related files available
  3632.  
  3633.     ftp.ultranet.com
  3634.         /biz/mchip - PIC information
  3635.         - also see the Web page: http://www.ultranet.com/biz/mchip
  3636.  
  3637.     ftp.mrc-bbc.ox.ac.uk
  3638.         /pub/microchip
  3639.  
  3640.     ftp.oak.oakland.edu
  3641.         - has information and software for a wide range of
  3642.           microprocessors and microcontrollers
  3643.  
  3644.     ftp.uni-erlangen.de
  3645.         - information on PIC
  3646.         /mounts/epix/public/pub/Multimedia/VideoCrypt/
  3647.             microcontroller/microchip.bbs
  3648.  
  3649.     ftp.armory.com (Steve Walz)
  3650.         - /pub/user/rstevew/8051
  3651.         - /pub/user/rstevew/TB8051
  3652.         - /pub/user/rstevew/incoming
  3653.  
  3654.     ftp.cygnus.com (Jeff Fox)
  3655.         - source of information and software on the MuP21 Forth
  3656.           microcontroller
  3657.         /pub/forth - MUP21FTP.ZIP includes a software simulator for
  3658.             the MuP21 and and the upcoming F21.
  3659.         also see the Web page: http://www.dnai.com/~jfox
  3660.  
  3661.     ftp.best.com
  3662.         /pub/cera
  3663.     ftp.netcom.com
  3664.         /pub/ce/cera
  3665.         - embedded systems FTP archive
  3666.  
  3667.     ftp.parallaxinc.com
  3668.         /pub
  3669.         - ftp site of Parallax
  3670.           "Cool PIC development tools & the BASIC Stamp"
  3671.  
  3672.     ftp.std.com - Minds-Online ftp site
  3673.         /customers2/nonprofits/minds-online
  3674.         - Chock full of compilers, assemblers, code, articles, fuzzy
  3675.           logic, and much more.
  3676.  
  3677.     evans.ee.adfa.oz.au
  3678.         /mirrors/tms340
  3679.         - support for Texas Instruments parts
  3680.  
  3681.     ftp.ti.com
  3682.         /mirrors/tms320bbs
  3683.         - mirror of the contents of Texas Instruments BBS
  3684.  
  3685.     ftp://iglou.com/members/ITU
  3686.         - Microchip PIC and embedded systems
  3687.  
  3688.     ftp://ieee.cas.uc.edu
  3689.         - electronics archive
  3690.  
  3691.  
  3692. 10.2)  Web pages
  3693.  
  3694.     Advanced Micro Devices, Embedded Processor Division home page
  3695.         - http://www.amd.com/html/products/EPD/EPD.html
  3696.         - covers both the 29K and E86 embedded processor lines
  3697.  
  3698.     Ada language pages
  3699.         - http://sw-eng.falls-church.va.us/AdaIC/
  3700.         - http://www.adahome.com/
  3701.  
  3702.  
  3703.  
  3704.     AM Research, the Embedded Control Experts
  3705.         - http://www.amresearch.com
  3706.  
  3707.     Automation and Process Control
  3708.         - http://www.ba-karlsruhe.de/automation/home.html
  3709.  
  3710.     Bo Eriksson's web page (mostly in Swedish :-(
  3711.         - http://194.52.151.18/elektronik/internettips/index.html
  3712.         - info on tools from IAR, plus interesting links
  3713.         - info on H8-series from Hitachi
  3714.  
  3715.     Brian Brown's 8051 web page
  3716.         - http://www.cit.ac.nz/smac/cbt/hwsys/i8051/default.htm
  3717.         - contains Brian Brown's 8051 course
  3718.         - lots of other good stuff
  3719.  
  3720.     Cera Research web pages
  3721.         - Electronic Engineers' Toolbox (home page)
  3722.           http://www.cera2.com/ebox.htm
  3723.         - MCU/MPU resources
  3724.           http://www.cera2.com/micro.htm
  3725.         - Navi-GATOR (embedded dev. tools and chip-specific)
  3726.           http://www.cera2.com/gator.htm
  3727.  
  3728.     Chip Directory and Chip Manufacturers (Jaap van Ganswijk)
  3729.         - http://www.hitex.com/chipdir           (USA, California)
  3730.         - http://www.civil.mtu.edu/chipdir       (USA, Michigan)
  3731.         - http://www.leg.ufrj.br/chipdir         (Brasil)
  3732.         - http://www.xs4all.nl/~ganswijk/chipdir (The Netherlands)
  3733.         - http://bbs.cc.uniud.it/chipdir         (Italy)
  3734.  
  3735.     Chipmakers web page (Gary Creager)
  3736.         - http://www.scruznet.com/~gcreager/hello5.htm
  3737.         - well over 200 semiconductor manufacturers web pages
  3738.  
  3739.     Circuit Cellar Ink
  3740.         - http://www.circellar.com
  3741.  
  3742.     Dallas Semiconductor
  3743.         - http://www.dalsemi.com
  3744.  
  3745.     Diamond Chip
  3746.         - http://www.dchip.com
  3747.         - information on their ST62T25 BASIC chip
  3748.         - Stefan Ward, Diamond Chip
  3749.           Tel +27 (0)12 803-6287
  3750.           Fax +27 (0)12 803-4350
  3751.           BBS +27 (0)12 803-5683
  3752.  
  3753.     Electronic Laboratory of the DAEC Department of Meudon
  3754.         - http://formper1.obspm.fr
  3755.         - electronics, embedded systems, FPGA, microncontrollers in
  3756.           astronomy projects
  3757.  
  3758.     Embedded Systems Information (Cera Research)
  3759.         - http://www.cera.com
  3760.  
  3761.     Forth Interest Group home page
  3762.         - http://taygeta.oc.nps.navy.mil/fig_home.html
  3763.  
  3764.     French Forth web site
  3765.         - http://ourworld.compuserve.com/homepages/mp7
  3766.           maintained by Marc Petremann:
  3767.              17, allee de la Noiseraie
  3768.              F - 93160 NOISY LE GRAND
  3769.              Email: 100647.3306@compuserve.com
  3770.         - http://ourworld.compuserve.com/homepages/bioforth
  3771.           maintained by Gerard SOULA
  3772.  
  3773.     Gernsback Web page (Electronics Now, Popular Electronics)
  3774.         - http://www.gernsback.com
  3775.         - current issue information, recent article related files, FTP
  3776.           site, subscription information
  3777.  
  3778.     Gregory Pugh's homepage
  3779.         - http://sleepy.anest.ufl.edu/~glp/8051.html
  3780.  
  3781.     High Tech Horizon
  3782.         - http://www.hth.com
  3783.         - This web page is in Swedish, but the files are available to all
  3784.           in the "Hardware Hackers Filelibrary" at the bottom of the
  3785.           Web-page.
  3786.         - High Tech Horizon, Asbogatan 29 C, S-262 51 Angelholm, SWEDEN
  3787.           +46 431 41 00 88   Fax: +46 431 41 00 88
  3788.           Email: info@hth.com
  3789.  
  3790.     Hitachi
  3791.         - http://www.hitachi-eu.com/hel/ecg/
  3792.  
  3793.     ITU Technologies (ITUTec@aol.com)
  3794.         - Microchip PIC and embedded systems
  3795.         - http://www.iglou.com/ITU
  3796.  
  3797.     Ken Tindell's CAN web pag
  3798.         - http://www.nrtt.demon.co.uk/can.html
  3799.         - Source code to drive the Intel 82527 CAN controller is
  3800.           available: just send e-mail to info@nrtt.demon.co.uk, with
  3801.           "Request Intel 82527 drivers" (without the quotes) in the
  3802.           subject line.
  3803.  
  3804.     MCU Survey
  3805.         - http://bip.golana.pub.ro/mcu/survey
  3806.  
  3807.     Microchip PIC
  3808.         - http://www.ultranet.com/biz/mchip
  3809.  
  3810.     Motorola's semiconductor WWW page
  3811.         - http://motserv.indirect.com
  3812.         - on-line searchable Master Selection Guide and OEM Price Book
  3813.         - 'MFax' service to request all kinds of data sheets
  3814.         - a bunch of other cool stuff
  3815.  
  3816.     Motorola's microcontroller WWW page
  3817.         - http://freeware.aus.sps.mot.com/index.html
  3818.         - the WWW version of the freeware BBS
  3819.         - lots of free software for the HC05, HC08, HC11, HC16, 680x0,
  3820.           683xx, and PowerPC
  3821.  
  3822.     MuP21 Forth microcontroller
  3823.         - http://www.dnai.com/~jfox
  3824.         - information and software on the MuP21 Forth uC
  3825.  
  3826.     Parallax Inc. web page
  3827.         - http://www.parallaxinc.com
  3828.         - "Cool PIC development tools & the BASIC Stamp"
  3829.  
  3830.     Peter H. Anderson's web site
  3831.         - http://www.access.digex.net/~pha
  3832.         - nice site, lots of PIC stuff and interfacing plans
  3833.         - Peter H. Anderson
  3834.           Dept of Electrical Engineering
  3835.           Morgan State University
  3836.  
  3837.     POLIS web site
  3838.         - POLIS offers an integrated interactive environment for
  3839.           specification, co-simulation, formal verification, and
  3840.           synthesis of embedded systems implemented as a mix of hardware
  3841.           and software components.
  3842.         - http://www-cad.eecs.berkeley.edu/Respep/Research/hsc/abstract.html
  3843.           Most of the information about POLIS, including pointers to
  3844.           source and object code (for various CPUs and OSes) is available
  3845.           at this WEB site
  3846.         - If you are interested, but do not have WEB access, contact
  3847.           them at: polis@ic.eecs.berkeley.edu.
  3848.  
  3849.     QNX realtime website
  3850.         - http://www.qnx.com
  3851.  
  3852.     Scrumpel 68hc11 web page
  3853.         - http://www.stack.urc.tue.nl/~hcc6811
  3854.  
  3855.     Texas Instruments
  3856.         - http://www.ti.com/sc/docs/micro/home.htm
  3857.  
  3858.     Zorin
  3859.         - http://www.eskimo.com/~zchris
  3860.         - 68hc11 information and support for their line of boards
  3861.  
  3862.  
  3863. 10.3)  BBSs
  3864.  
  3865.     The following BBSs have 8051 information:
  3866.  
  3867.     Circuit Cellar, Inc.
  3868.         - contains code from their magazine articles and from the
  3869.           original Circuit Cellar articles in Byte magazine, also
  3870.           contains many other interesting items
  3871.         - The BBS is mentioned in the masthead of each issue (on the
  3872.           table of contents page).  Excerpts from the BBS appear in Ken
  3873.           Davidson's ConnecTime column in every issue with a description
  3874.           of how to access the system at the end of every column.
  3875.         - (203)871-1988
  3876.         - Voice: (203)875-2751
  3877.         - Fax: (203)872-2204
  3878.  
  3879.     Dunfield Development Systems
  3880.         - support for their Micro-C C compiler and development tools
  3881.         - includes a lot of nice goodies
  3882.         - (613) 256-6289
  3883.  
  3884.     ED Teck. Pubs BBS
  3885.         - run by Fred Eady who writes for hobbyist magazines
  3886.         - good source of information on the PIC
  3887.         - (407)454-3198
  3888.  
  3889.     Electronics Now
  3890.         - contains code from their magazine articles
  3891.         - (516)293-2283
  3892.  
  3893.     Intel American Marketing Applications Support Bulletin Board System
  3894.         - 16 lines, hi-speed modems (14.4K)
  3895.         - Lots of useful info and files (including design examples)
  3896.         - Full ANSI-BBS with color is recommended, but support for just
  3897.           about all terminal types is provided
  3898.         - 916-356-3600 (24 hours)
  3899.           Auto config: 1200 thru 14.4K Baud
  3900.           8 data bits, no parity, 1 stop
  3901.  
  3902.     Iota Systems, Inc.
  3903.         - Support for their line of hardware and software products
  3904.         - (702)831-4732
  3905.  
  3906.     Jens Holm's electronics BBS:
  3907.         - one of a number of BBSs that are networked over most of the
  3908.           industrial part of Europe
  3909.         - +45-86-510356 (Denmark)
  3910.         - distributes all shareware and freeware software which
  3911.           relates to electronics
  3912.         - system administrator - Jens Holm
  3913.           jholm@bjarke.nrg.dtu.dk or Jens.holm@asgaard.dk
  3914.  
  3915.     Don Lekei BBS
  3916.         - support for the PIC line of microcontrollers
  3917.         - (604)597-3479 (Canada)
  3918.  
  3919.     Massilia Underground BBS (Marseille, France)
  3920.         - +33-91794120
  3921.         - fidonet 2:323/25
  3922.         - not a commercial BBS
  3923.         - microcontroller related stuff (assemblers, debuggers,
  3924.           boards, etc), some 8051 stuff
  3925.         - everything coming in is tested
  3926.  
  3927.     Microchip BBS
  3928.         - support for the PIC line of microcontrollers
  3929.         - Contact by dialing the same number you would use to get to
  3930.           Compuserve at 19200,n,8,1, except that you press +<CR> at the
  3931.           (garbage) prompt, followed by MCHIPBBS as the host (instead of
  3932.           CIS).
  3933.  
  3934.     Micro Computer Control Corporation
  3935.         - (609)466-4117
  3936.  
  3937.     Motorola (Austin Texas) BBS
  3938.         - terrific, has piles of stuff, only some of which is on
  3939.           bode.ee.ualberta.ca
  3940.         - (512) 891-3733 (Austin, Texas)
  3941.         - V.32 9600 Baud modems w/ MNP-5
  3942.         - 8 Data Bits, No Parity, 1 Stop Bit.
  3943.  
  3944.     Other Motorola BBSs:
  3945.         - Munich, Germany:  49-89-92103-111  (2400 baud)
  3946.         - Stuttgart, Germany:  49-7031-275496  (19200 baud)
  3947.         - San Diego, California:  (619) 279-3907
  3948.         - Toronto, Ontario, Canada:  (416) 497-8989
  3949.  
  3950.     National Semiconductor COP8 BBS
  3951.         - (800)672-6427
  3952.         - worldwide telnet to nscmicro.national.com
  3953.  
  3954.     Protel (Microchip PIC software support)
  3955.         - (408)243-0125
  3956.  
  3957.     Parallax Inc.
  3958.         - (916)624-7101
  3959.  
  3960.     Philips Semiconductor (parent company of Signetics)
  3961.         - support for: standard logic, programmable logic,
  3962.           in-car electronics (planned), 8 and 16 bit microcontrollers,
  3963.           I2C software, third party software, discrete semiconductors,
  3964.           cross assemblers (general), RF (planned)
  3965.         - PHIBBS is located in the Netherlands: +31-40-721102
  3966.         - maximum 14400 baud / V42bis
  3967.         - 24 hours a day available
  3968.         - Help desk: +31-40-722749  (9.00 AM - 16.00 PM CET)
  3969.  
  3970.     Philips Semiconductors (Signetics)
  3971.         - support for their 8051 variants
  3972.         - contains many good source code items
  3973.         - partially mirrored on ftp.pppl.gov and nic.funet.fi
  3974.         - (800)451-6644 or (408)991-2406
  3975.  
  3976.     Texas Instruments microcontroller BBS
  3977.         - (713)274-3700
  3978.  
  3979.  
  3980. 10.4)  Mailing Lists
  3981.  
  3982.     68hc11
  3983.         - for information, send empty message to listserv@hipp.etsu.edu
  3984.         - to join, send the message "subscribe mc68hc11 your_real_name"
  3985.           to listserv@hipp.etsu.edu
  3986.  
  3987.     Basic Stamp
  3988.         - to join, send the message "subscribe stamp-list" to
  3989.           majordomo@cybernetics.net
  3990.  
  3991.     GCC compilers for embedded systems
  3992.         - to join, send the message "subscribe crossgcc <your address>"
  3993.           to majordomo@first.gmd.de
  3994.         - for those who are building a cross gcc compiler for an
  3995.           embedded processor/system
  3996.  
  3997.     Imagecraft C
  3998.         - to join, send the message "subscribe icc11-list" to
  3999.           listserv@netcom.com
  4000.  
  4001.     Minds-Online
  4002.         - One mailing list is for announcing significant postings on the
  4003.           Minds-Online ftp site.
  4004.         - Another MODERATED mailing list will carry messages from real
  4005.           engineers who are working on designs slated for volume
  4006.           production.  "No tire-kickers, no students, no academics, no
  4007.           sleazy something-for-nothing ripoff artists, no hobbyists, and
  4008.           no totally lost people will be able to post e-mail."  (Uh, it
  4009.           looks like that sort of leaves out yours truly, I certainly
  4010.           belong in several, if not most, of those categories).
  4011.         - to join, send the message "subscribe" to the email address:
  4012.           minds-online@world.std.com
  4013.  
  4014.     Mini Board and 6.270 board (68hc11)
  4015.         - send a message containing the word "help" for directions to
  4016.           listserv@oberon.com
  4017.         - mailing list address:  robot-board@oberon.com
  4018.         - maintainer:  gkulosa@oberon.com
  4019.  
  4020.     Parallel Performance Group (PPG)
  4021.         - series of monthly newletters on high-tech software topics
  4022.         - for information send any e-mail to info@ppgsoft.com
  4023.  
  4024.     Philips Newsletter
  4025.         - send Email with "subscribe" in the subject field to
  4026.           Philips-News@InetBSystems.us.com
  4027.         - news, views, and articles (contributions welcome)
  4028.     Philips Developers Forum
  4029.         - send an Email message with the word "subscribe" in the subject
  4030.           to Philips-forum-request@InetBSystems.us.com
  4031.         - technical discussions between engineers and developers
  4032.  
  4033.     PIC
  4034.         - to subscribe, send email to listserv@mitvma.mit.edu
  4035.         - send the message "SUB PICLIST" for standard subscription
  4036.         - send the message "SUB PICDIGEST" to receive digested mailings
  4037.         - list address is: PIC@mitvma.mit.edu
  4038.  
  4039.  
  4040. 11)  SOURCES FOR PARTS
  4041.  
  4042.     Major manufacturers and distributors are the main (and most
  4043.     expensive) source for acquiring microcontroller parts.
  4044.  
  4045.     A good number of firms have surplus bargains on microcontrollers and
  4046.     other parts you might need for your projects. Among some of the
  4047.     better ones:
  4048.  
  4049.     All Electronics
  4050.         - http://www.allcorp.com
  4051.         - lots of great surplus items
  4052.         - nice catalog available in PDF
  4053.  
  4054.     Alltronics
  4055.         - http://www.alltronics.com
  4056.         - good selection of interesting surplus items
  4057.         - large selection of standard chips and components
  4058.         - latest advertisements available in PDF
  4059.         - update pages from catalog available in PDF
  4060.  
  4061.     BG Micro
  4062.         - http://www.bgmicro.com
  4063.         - large selection of standard chips and components
  4064.         - much of their catalog available in PDF
  4065.  
  4066.     Debco Electronics
  4067.         - http://www.debcom.com
  4068.         - piles of chips, parts, components, ham gear, computer stuff
  4069.         - Electronics Experimentors Journals (highly recommended!)
  4070.  
  4071.     Herbach and Rademan
  4072.          - http://www.herbach.com
  4073.          - great catalog
  4074.          - LOTS of stuff for robotics projects
  4075.  
  4076.     Mendelson Electronics
  4077.         - http://www.meci.com
  4078.         - on-line ordering possible, but IMHO their web site is difficult
  4079.           to navigate
  4080.  
  4081.     Timeline
  4082.         - http://www.timeline.com
  4083.         - well-known and reliable source for surplus LCD displays
  4084.         - interesting surplus bargains
  4085.  
  4086. __________________________________________________________
  4087.  
  4088. I disclaim everything.  The contents of this article might be totally
  4089. inaccurate, inappropriate, misguided, or otherwise perverse - except for
  4090. my name (hopefully I got that right).
  4091.  
  4092. Copyright (c) 1997 by Russ Hersch, all rights reserved.
  4093. This FAQ may be posted to any USENET newsgroup, on-line service, or BBS
  4094.   as long as it is posted in its entirety and includes this copyright
  4095.   statement.
  4096. This FAQ may not be distributed for financial gain.
  4097. This FAQ may not be included in commercial collections or compilations
  4098.    without express permission from the author.
  4099.  
  4100. -----------------------------------
  4101. Russ Hersch - russ@shani.net
  4102.