home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #2 / Amiga Plus CD - 1995 - No. 2.iso / internet / faq / englisch / microcontroller < prev    next >
Encoding:
Text File  |  1995-04-11  |  113.7 KB  |  2,655 lines

  1. Archive-name: microcontroller-faq/primer
  2. Posting-Frequency: monthly
  3. Last-modified: Feb. 26, 1994
  4.  
  5. This article is a primer and general FAQ about microcontrollers.
  6. Included is a collection of information sources on various
  7. microcontrollers.
  8.  
  9. The following topics are addressed:
  10.  
  11.       0)  Rantings and ravings (to make the FAQ zero-based)
  12.  
  13.       1)  ABOUT THIS FAQ
  14.     1.1)  Who put this FAQ together?
  15.     1.2)  How can I contribute to this FAQ?
  16.     1.3)  What newsgroups will this FAQ be posted to?
  17.     1.4)  May I distribute this FAQ or post it somewhere else?
  18.  
  19.       2)  MICROCONTROLLERS
  20.     2.1)  What is a Microcontroller?
  21.     2.2)  Applications
  22.     2.3)  Flavors
  23.  
  24.       3)  THE MICROCONTROLLER MARKET
  25.     3.1)  Shipments
  26.     3.2)  Industrial applications
  27.     3.3)  Deciding whose microcontroller to use
  28.     3.4)  The players
  29.  
  30.       4)  MICROCONTROLLER FEATURES
  31.     4.1)  Fabrication techniques
  32.     4.2)  Architectural features
  33.     4.3)  Advanced Memory options
  34.     4.4)  Power Management and Low Voltage
  35.     4.5)  I/O
  36.     4.6)  Special microcontroller features
  37.  
  38.       5)  SOME POPULAR MICROCONTROLLERS
  39.  
  40.       6)  GETTING STARTED WITH MICROCONTROLLERS
  41.     6.1)  Evaluation Kits/Boards
  42.     6.2)  Easy chips to use
  43.     6.3)  Software (cheap and easy)
  44.  
  45.       7)  MICROCONTROLLER PROGRAMMING LANGUAGES
  46.     7.1)  Machine/Assembly language
  47.     7.2)  Interpreters
  48.     7.3)  Compilers
  49.     7.4)  Fuzzy Logic and Neural Networks
  50.  
  51.       8)  DEVELOPMENT TOOLS
  52.     8.1)  Simulators
  53.     8.2)  Resident Debuggers
  54.     8.3)  Emulators
  55.     8.4)  Good Stereo System
  56.  
  57.       9)  FINDING OUT MORE ABOUT MICROCONTROLLERS
  58.     9.1)  Books
  59.     9.2)  Data and Reference Books
  60.     9.3)  Periodicals
  61.     9.4)  Internet newsgroups
  62.     9.5)  Internet sources of information on specific microcontrollers
  63.  
  64.       10)  MICROCONTROLLER FREE SOFTWARE SOURCES
  65.     10.1)  FTP sites
  66.     10.2)  BBSs
  67.     10.3)  Mailing lists
  68.  
  69.  
  70. 0)  Rantings and ravings
  71.  
  72.     Disclaimer:  Just so it is understood, the "rantings and ravings" are
  73.     my rantings and ravings.  My readers are refined and sophisticated
  74.     and would never rant or rave.  I, on the other hand, sit in front of
  75.     the TV in torn underwear and drink beer out of the bottle.
  76.  
  77.     As far as whether this FAQ gets split or not, please send me your
  78.     suggestions and opinions.  Spare time is a rare commodity, and it
  79.     would be ashame for me to go to all the effort of splitting this FAQ,
  80.     only to find out that everyone starts to complain about the
  81.     multi-part format.  So what'll it be - one part or multi-part?
  82.  
  83.     From EETimes magazine:
  84.        Chandler, Ariz. - Intel Corp. has introduced a clock-doubled
  85.        version of its 16-bit 80C196 microcontroller that boosts
  86.        throughput to 50 MHz."
  87.  
  88.  
  89.     Take care of yourselves,
  90.  
  91.               Uncle Russ
  92.  
  93.  
  94. 1)  ABOUT THIS FAQ
  95.  
  96. 1.1)  Who put this FAQ together?
  97.  
  98.     Me again!  This FAQ is just a way to tie up loose ends.  From time to
  99.     time, general questions about microcontrollers (from beginners to
  100.     experienced designers) pop up in the newsgroups.  It seemed that a
  101.     general primer/FAQ on microcontrollers might be useful.
  102.  
  103.     Much of this document could be considered as a sort of a primer on
  104.     microcontrollers.  For those of you with previous experience,
  105.     sections 9 and 10 might be of special interest (especially for those
  106.     of you looking for that elusive "free COBOL compiler for the 1802").
  107.  
  108.  
  109. 1.2)  How can I contribute to this list?
  110.  
  111.     I please ask that if you have any suggestions or additions, or you
  112.     would like to correct any of the information contained herein, please
  113.     send me a note.
  114.          My Email address is:  sibit@datasrv.co.il
  115.          My Smail address is:
  116.                Russ Hersch
  117.                HaVradim 11
  118.                Ginot Shomron
  119.                ISRAEL
  120.  
  121.     Thanks to recent contributors to this document:
  122.             Dave Dunfield (Dunfield Development Systems)
  123.             Cecil Moore (Intel)
  124.             Ed Thompson (Micro Computer Control Corporation)
  125.             Kevin Gardner (Philips Semiconductor)
  126.  
  127.     Special thanks to Robin L. Getz (National Semiconductor) who probably
  128.     could be considered an honorary co-author of this FAQ. :-)
  129.  
  130.     Also, thanks to those who have posted questions and to those who have
  131.     posted answers.  Thanks to "my new friends" who send suggestions and
  132.     encouragement, as well as the occasional question.  Special thanks to
  133.     my mother-in-law, who thankfully will probably never read this
  134.     document ;-).
  135.  
  136.  
  137. 1.3)  What newsgroups will this FAQ be posted to?
  138.  
  139.     This FAQ will be posted to the following newsgroups:
  140.           comp.robotics
  141.           comp.sys.intel
  142.           comp.sys.m68k
  143.           comp.sys.6809
  144.           sci.electronics
  145.           alt.comp.hardware.homebuilt
  146.  
  147.     I will post once a month - on or about the 26th of each month.
  148.  
  149.  
  150. 1.4)  May I distribute this FAQ or post it somewhere else?
  151.  
  152.     I am putting no restrictions on the use of this FAQ except - It must
  153.     be distributed in its entirety with the copyright notice, and no
  154.     financial gain may be realized from it.  After all, I have spent, and
  155.     continue to spend, a lot of time on this.
  156.  
  157.     For this reason I have appended a copyright statement to the end of
  158.     this FAQ.  I feel pretty silly doing this, but I just want to protect
  159.     myself.  The copyright does not limit the use of this list for
  160.     noncommercial purposes.  I hereby give my permission to one and all
  161.     to pass this list around and post it wherever you want - as long as
  162.     it is not for financial gain.
  163.  
  164.         Thank you.
  165.  
  166.  
  167. 2)  MICROCONTROLLERS
  168.  
  169.  
  170. 2.1)  What is a Microcontroller?
  171.  
  172.     A controller is used to control (makes sense!) some process or aspect
  173.     of the environment.  A typical microcontroller application is the
  174.     monitoring of my house.  As the temperature rises, the controller
  175.     causes the windows to open.  If the temperature goes above a certain
  176.     threshold, the air conditioner is activated.  If the system detects
  177.     my mother-in-law approaching, the doors are locked and the windows
  178.     barred.  In addition, upon detecting that my computer is turned on,
  179.     the stereo turns on at a deafening volume (for more on this, see the
  180.     section on development tools).
  181.  
  182.     At one time, controllers were built exclusively from logic
  183.     components, and were usually large, heavy boxes (before this, they
  184.     were even bigger, more complex analog monstrosities).  Later on,
  185.     microprocessors were used and the entire controller could fit on a
  186.     small circuit board.  This is still common - you can find many [good]
  187.     controllers powered by one of the many common microprocessors
  188.     (including Zilog Z80, Intel 8088, Motorola 6809, and others).
  189.  
  190.     As the process of miniaturization continued, all of the components
  191.     needed for a controller were built right onto one chip.  A one chip
  192.     computer, or microcontroller was born.  A microcontroller is a highly
  193.     integrated chip which includes, on one chip, all or most of the parts
  194.     needed for a controller.  The microcontroller could be called a
  195.     "one-chip solution".  It typically includes:
  196.           CPU (central processing unit)
  197.           RAM (Random Access Memory)
  198.           EPROM/PROM/ROM (Erasable Programmable Read Only Memory)
  199.           I/O (input/output) - serial and parallel
  200.           timers
  201.           interrupt controller
  202.  
  203.     By only including the features specific to the task (control), cost
  204.     is relatively low.  A typical microcontroller has bit manipulation
  205.     instructions, easy and direct access to I/O (input/output), and quick
  206.     and efficient interrupt processing.  Microcontrollers are a "one-chip
  207.     solution" which drastically reduces parts count and design costs.
  208.  
  209.  
  210. 2.2)  Applications
  211.  
  212.     In addition to control applications such as the above home monitoring
  213.     system, microcontrollers are frequently found in embedded
  214.     applications.  Among the many uses that you can find one or more
  215.     microcontrollers:  appliances (microwave oven, refrigerators,
  216.     television and VCRs, stereos),  automobiles (engine control,
  217.     diagnostics, climate control), environmental control (greenhouse,
  218.     factory, home), instrumentation, aerospace, and thousands of other
  219.     uses.
  220.  
  221.     Microcontrollers are used extensively in robotics.  In this
  222.     application, many specific tasks might be distributed among a large
  223.     number of microcontrollers in one system.  Communications between
  224.     each microcontroller and a central, more powerful microcontroller (or
  225.     microcomputer, or even large computer) would enable information to be
  226.     processed by the central computer, or to be passed around to other
  227.     microcrontrollers in the system.
  228.  
  229.     A special application that microcontrollers are well suited for is
  230.     data logging.  Stick one of these chips out in the middle of a corn
  231.     field or up in a ballon, and monitor and record environmental
  232.     parameters (temperature, humidity, rain, etc).  Small size, low power
  233.     consumption, and flexibility make these devices ideal for unattended
  234.     data monitoring and recording.
  235.  
  236.  
  237. 2.3)  Flavors
  238.  
  239.     Microcontrollers come in many flavors and varieties.  Depending on
  240.     the power and features that are needed, you might choose a 4 bit, 8
  241.     bit, 16 bit, or 32 bit microcontroller.  In addition, some
  242.     specialized versions are available which include features specific
  243.     for communications, keyboard handling, signal processing, video
  244.     processing, and other tasks.
  245.  
  246.  
  247. 3)  THE MICROCONTROLLER MARKET
  248.  
  249.     Thanks to Robin Getz of National Semiconductor for supplying the
  250.     material in this section.
  251.  
  252.  
  253. 3.1)  Shipments
  254.  
  255.             WorldWide Microcontroller Shipments (in millions of dollars)
  256.  
  257.             '90   '91   '92   '93   '94   '95   '96   '97   '98   '99   '00
  258.      4-bit 1,393 1,597 1,596 1,698 1,761 1,826 1,849 1,881 1,856 1,816 1,757
  259.      8-bit 2,077 2,615 2,862 3,703 4,689 5,634 6,553 7,529 8,423 9,219 9,715
  260.     16-bit   192   303   340   484   810 1,170 1,628 2,191 2,969 3,678 4,405
  261.  
  262.  
  263.                  WorldWide Microcontroller Shipments (in Millions)
  264.  
  265.              '90   '91   '92   '93   '94   '95   '96   '97   '98   '99   '00
  266.      4-bit   778   906   979  1036  1063  1110  1100  1096  1064  1025   970
  267.      8-bit   588   753   843  1073  1449  1803  2123  2374  2556  2681  2700
  268.     16-bit    22    38    45    59   106   157   227   313   419   501   585
  269.  
  270.  
  271.                                                    Source: WSTS & ICE - 1994
  272.  
  273.     If you were wondering why you should bother learning about
  274.     microcontrollers - well, the tables above should fairly scream the
  275.     answer at you.  Microcontrollers will be *BIG* business - we're
  276.     talking piles of cash - billions!
  277.  
  278.     Notice that even the lowly 4-bit device is holding its own - what use
  279.     is a 16-bit part in a toaster oven?  Also notice that the 8-bit
  280.     market just keeps growing, and will probably continue to grow.  8-bit
  281.     devices account for over half of the market, and will eventually grab
  282.     even more.  Now do you understand why every silicon manufacturer is
  283.     really pushing their 8-bit microcontrollers?
  284.  
  285.  
  286. 3.2)  Industrial applications
  287.  
  288.     Average Semiconductor Content per Passenger Automobile (in Dollars)
  289.  
  290.         '90   '91   '92   '93   '94   '95   '96   '97   '98   '99   '00
  291.      $  595   634   712   905 1,068 1,237 1,339 1,410 1,574 1,852 2,126
  292.  
  293.                                                      Source: ICE - 1994
  294.  
  295.  
  296.     The automotive market is the most important single driving force in
  297.     the microcontroller market, especially at it's high end.  Several
  298.     microcontroller families were developed specifically for automotive
  299.     applications and were subsequently modified to serve other embedded
  300.     applications.
  301.  
  302.     The automotive market is demanding.  Electronics must operate under
  303.     extreme temperatures and be able to withstand vibration, shock, and
  304.     EMI.  The electronics must be reliable, because a failure that causes
  305.     an accident can (and does) result in multi-million dollar lawsuits.
  306.     Reliability standards are high - but because these electronics also
  307.     compete in the consumer market - they have a low price tag.
  308.  
  309.     Automotive is not the only market that is growing.  DataQuest says
  310.     that in the average North American's home there are 35
  311.     microcontrollers.  By the year 2000 - that number will grow to 240.
  312.     Consumer electronics is a booming business.
  313.  
  314.  
  315. 3.3)  Deciding whose microcontroller to use
  316.  
  317.     When deciding which devices to implement in a design, there are lots
  318.     of things to consider besides who else is using these devices (and
  319.     how many are they using).
  320.       - Can I expect help when I am having problems?
  321.       - What development tools are available and how much do they cost?
  322.       - What sort of documentation is available (reference manuals,
  323.         application notes, books)?
  324.       - Can I work a deal by purchasing more devices at one manufacturer?
  325.         That is, purchasing not only the microcontrollers, but also
  326.         peripherals (A/D, memory, voltage regulator, etc) from one
  327.         company).
  328.       - Do they support OTPs, windowed devices, mask parts?
  329.  
  330.  
  331. 3.4)  The players
  332.  
  333.     Here is a list of the big guys.  Keep in mind that units does not
  334.     equal dollars.  Since some companies deal primarily in higher end
  335.     devices, they need to sell fewer units to achieve a higher dollar
  336.     total.
  337.  
  338.           Company              Units (k) 1993
  339.  
  340.           Motorola               358,894
  341.           Mitsubishi              71,674
  342.           NEC                     70,180
  343.           Hitachi                 67,873
  344.           Philips                 56,680
  345.           Intel                   46,876
  346.           SGS-Thomson             37,350
  347.           Microchip               35,477
  348.           Matsushitta             34,200
  349.           Toshiba                 32,205
  350.           National Semiconductor  31,634
  351.           Zilog                   31,000
  352.           Texas Instruments       29,725
  353.           Siemens                 20,874
  354.           Sharp                   17,505
  355.  
  356.                                          SOURCE: DataQuest June 1994
  357.  
  358.  
  359.     The above numbers are just somebody's best guess - believe them if
  360.     you want to.  Since they get paid to come up with these numbers, one
  361.     would hope that they would be fairly reliable.  However, one of these
  362.     numbers is wrong for certain (and Robin Getz won't say whether it
  363.     should be higher or lower ;-).
  364.  
  365.  
  366. 4)  MICROCONTROLLER FEATURES
  367.  
  368.     Thanks to Robin Getz of National Semiconductor who supplied some of
  369.     the material in this section.
  370.  
  371.  
  372. 4.1)  Fabrication techniques
  373.  
  374.     CMOS - Complementary Metal Oxide Semiconductor
  375.  
  376.        This is the name of a common technique used to fabricate most (if
  377.        not all) of the newer microcontrollers.  CMOS requires much less
  378.        power than older fabrication techniques, which permits battery
  379.        operation.  CMOS chips also can be fully or near fully static,
  380.        which means that the clock can be slowed up (or even stopped)
  381.        putting the chip in sleep mode.  CMOS has a much higher immunity
  382.        to noise (power fluctuations or spikes) than the older fabrication
  383.        techniques.
  384.  
  385.  
  386.     PMP - Post Metal Programming (National Semiconductor)
  387.  
  388.        PMP is a high-energy implantation process that allows
  389.        microcontroller ROM to be programmed AFTER final metalization.
  390.        Usually ROM is implemented in the second layer die, with nine or
  391.        ten other layers then added on top.  That means the ROM pattern
  392.        must be specified early in the production process, and completed
  393.        prototypes devices won't be available typically for six to eight
  394.        weeks.  With PMP, however, dies can be fully manufactured through
  395.        metalization and electrical tests (only the passivation layers
  396.        need to be added), and held in inventory.  This means that ROM can
  397.        be programmed late in production cycle, making prototypes
  398.        available in only two weeks.
  399.  
  400.  
  401. 4.2)  Architectural features
  402.  
  403.     Von-Neuman Architecure
  404.  
  405.        Microcontrollers based on the Von-Neuman architecture have a
  406.        single "data" bus that is used to fetch both instructions and
  407.        data.  Program instructions and data are stored in a common main
  408.        memory.  When such a controller addresses main memory, it first
  409.        fetches an instruction, and then it fetches the data to support
  410.        the instruction.  The two separate fetchs slow the controllers
  411.        operation.
  412.  
  413.  
  414.     Harvard Architecture
  415.  
  416.        Microcontrollers based on the Harvard Architecture have a separate
  417.        data bus and an instruction bus.  This allows execution to occur
  418.        in parallel.  As an instruction is being "pre-fetched", the
  419.        current instruction is executing on the data bus.  Once the
  420.        current instruction is complete, the next instruction is ready to
  421.        go.  This pre-fetch theoretically allows for much faster execution
  422.        than a Von-Neuman architecture, but there is some added silicon
  423.        complexity.
  424.  
  425.  
  426.     CISC
  427.  
  428.        Almost all of today's microcontrollers are based on the CISC
  429.        (Complex Instruction Set Computer) concept.  The typical CISC
  430.        microcontroller has well over 80 instructions, many of them very
  431.        powerful and very specialized for specific control tasks.  It is
  432.        quite common for the instructions to all behave quite differently.
  433.        Some might only operate on certain address spaces or registers,
  434.        and others might only recognize certain addressing modes.
  435.  
  436.        The advantages of the CISC architecture is that many of the
  437.        instructions are macro-like, allowing the programmer to use one
  438.        instruction in place of many simpler instructions.
  439.  
  440.  
  441.     RISC
  442.  
  443.        The industry trend for microprocessor design is for Reduced
  444.        Instruction Set Computers (RISC) designs.  This is beginning to
  445.        spill over into the microntroller market.  By implementing fewer
  446.        instructions, the chip designed is able to dedicate some of the
  447.        precious silicon real-estate for performance enhancing features.
  448.        The benefits of RISC design simplicity are a smaller chip, smaller
  449.        pin count, and very low power consumption.
  450.  
  451.        Among some of the typical features of a RISC processor:
  452.           - Harvard architecture (separate buses for instructions and
  453.             data allows simultaneous access of program and data, and
  454.             overlapping of some operations for increased processing
  455.             performance
  456.           - Instruction pipelining increases execution speed
  457.           - Orthogonal (symmetrical) instruction set for programming
  458.             simplicity; allows each instruction to operate on any
  459.             register or use any addressing mode; instructions have no
  460.             special combinations, exceptions, restrictions, or side
  461.             effects
  462.  
  463.  
  464.     SISC
  465.  
  466.        Actually, (at least in my opinion) a microcontroller by definition
  467.        is a reduced instruction set computer - or at least a specific
  468.        instruction set computer (SISC).  The [original] idea behind the
  469.        microcontroller was to limit the capabilities of the chip,
  470.        allowing a complete computer (memory, I/O, interrupts, etc) to fit
  471.        on the available real estate.  At the expense of the more general
  472.        purpose instructions that make the standard microprocessors (8088,
  473.        68000, 32032) so easy to use, the instruction set was designed for
  474.        the specific purpose of control (powerful bit manipulation, easy
  475.        and efficient I/O, and so on).
  476.  
  477.        Microcontrollers now come with a mind boggling array of features
  478.        that aid the control engineer - watchdog timers, sleep/wakeup
  479.        modes, power management, powerful I/O channels, and so on.  By
  480.        keeping the instruction set specific (and reduced), and thus
  481.        saving valuable real estate, more and more of these features can
  482.        be added, while maintaining the economy of the microcontroller.
  483.  
  484.  
  485. 4.3)  Advanced Memory options
  486.  
  487.     EEPROM - Electrically Erasable Programmable Read Only Memory
  488.  
  489.        Many microcontrollers have limited amounts of EEPROM on the chip.
  490.        EEPROM seems more suited (becuase of its economics) for small
  491.        amounts of memory that hold a limited number of parameters that
  492.        may have to be changed from time to time.  This type of memory is
  493.        relatively slow, and the number of erase/write cycles allowed in
  494.        its lifetime is limited.
  495.  
  496.  
  497.     FLASH (EPROM)
  498.  
  499.        Flash provides a good better solution than regular EEPROM when
  500.        there is a requirement for large amounts of non-volatile program
  501.        memory.  It is both faster and permits more erase/write cycles
  502.        than EEPROM.
  503.  
  504.  
  505.     Battery backed-up static RAM
  506.  
  507.        Battery backed-up static RAM is useful when a large non-volatile
  508.        program and DATA space is required.  A major advantage of static
  509.        RAM is that it is much faster than other types of non-volatile
  510.        memory so it is well suited for high performance application.
  511.        There also are no limits as to the number of times that it may be
  512.        written to so it is perfect for applications that keep and
  513.        manipulate large amounts of data locally.
  514.  
  515.  
  516.     Field programming/reprogramming
  517.  
  518.        Using nonvolatile memory as a place to store program memory allows
  519.        the device to be reprogrammed in the field without removing the
  520.        microcontroller from the system that it controls.  One such
  521.        application is in automotive engine controllers.  Reprogrammable
  522.        non-volatile program memory on the engine's microcontroller allows
  523.        the engine controller program to be modified during routine
  524.        service to incorporate the latest features or to compensate for
  525.        such factors as engine ageing and changing emissions control laws
  526.        (or even to fix bugs!!).  Reprogramming of the microcontroller
  527.        could become a standard part the routine engine tune-up.
  528.  
  529.        Almost every application could benifit from this type of program
  530.        memory - If a modem's hardware supported it, you could remotely
  531.        upgrade your modem from Vfast to V.34, or incorporate new features
  532.        such as voice control or a digital answering machine.
  533.  
  534.  
  535.     OTP - One Time Programmable
  536.  
  537.        An OTP is a PROM (Programmable Read-Only-Memory) device.  Once
  538.        your program is written into the device with a standard EPROM
  539.        programmer, it can not be erased or modified.  This is usually
  540.        used for limited production runs before a ROM mask is done in
  541.        order to test code.
  542.  
  543.        A OTP (One Time Programmable) part uses standard EPROM, but the
  544.        package has no window for erasing.  Once your program is written
  545.        into the device with a standard EPROM programmer, it cannot be
  546.        erased or modified.  (Well, sort of - any bit that is a zero can
  547.        be changed to a one - but a bit that is a one can not be changed
  548.        into a zero).
  549.  
  550.        As product design cycles get shorter, it is more important for
  551.        micro manufacturers to offer OTPs as an option.  This was commonly
  552.        used for limited production runs before a ROM mask in order to
  553.        test code.  However, one problem with Mask ROM is that
  554.        programming, setup, and engineering charges make it economical
  555.        only when the systems manufacturer purchases large quanties of
  556.        identically programmed micros.  Then when you discover THAT bug
  557.        (and find it and fix your code), you have quanities of *old buggy*
  558.        micros around that you have to throw away.  Not to mention that
  559.        lead time (the time when you submit your code to the micro
  560.        manufacture, to the time you receive your micro with your code on
  561.        it) can be at least 8 weeks, and as bad as 44 weeks.
  562.  
  563.  
  564.     Software protection
  565.  
  566.        Either by encryption or fuse protection, the programmed software
  567.        is protected against unauthorized snooping (reverse engineering,
  568.        modifications, piracy, etc.).
  569.  
  570.        This is ONLY an option on OTPs and Windowed devices.  On Masked
  571.        ROM devices, security in not needed - the only way to read your
  572.        code out be to rip the microcontroller apart with a scanning
  573.        electron microscope - and how many people really have one of
  574.        those?
  575.  
  576.        Although - this is a manufacture's little know fact - when a
  577.        silicon manufacturer makes your ROMed microcontroller - they have
  578.        to test it in order to make sure that it is programmed properly.
  579.        (You should see what a spec of dust does on a mask :-)  In order
  580.        to test this, they must be able to read out the ROM and compare it
  581.        to the code you submitted.  This mode is known as test mode.  IN
  582.        TEST MODE YOU CAN READ OUT THE ROM OF ANY DEVICE.  Anybody who
  583.        tells you different, does not know what they are talking about -
  584.        or is lieing.  This is usually not a big deal because test mode is
  585.        ***VERY*** confidential, and (usually) only known by that
  586.        manufacturer (i.e. you cannot put a device into test mode by
  587.        accident).  Test mode is ONLY applicaible with ROMed devices.
  588.  
  589.  
  590. 4.4)  Power Management and Low Voltage
  591.  
  592.     Low voltage parts
  593.  
  594.        Since automotive applications have been the driving force behind
  595.        most microcontrollers, and 5 Volts is very easy to do in a car,
  596.        most microcontrollers have only supported 4.5 - 5.5 V operation.
  597.        In the recent past, as consumer goods are begining to drive major
  598.        segments of the microcontroller market, and as consumer goods
  599.        become portable and lightweight - the requirement for 3 volt (and
  600.        lower) microcontrollers has become urgent (3 volts = 2 battery
  601.        solution / lower voltage = longer battery life).  Most low voltage
  602.        parts in the market today are simply 5 volt parts that were
  603.        modified to operate at 3 volts (usually at a performance loss).
  604.        Some micros being released now are designed from the ground up to
  605.        operate properly at 3.0 (and lower) voltages, which offer
  606.        comparable performance of the 5 volt devices.
  607.  
  608.  
  609.     Brownout Protection
  610.  
  611.        Brownout protection is usually an on-board protection circuit that
  612.        resets the device when the operating voltage (Vcc) is lower than
  613.        the Brownout voltage.  The device is held in reset and will remain
  614.        in reset when Vcc stays below the Brownout voltage.  The device
  615.        will resume execution (from reset) after Vcc has risen above the
  616.        Brown Out Voltage.
  617.  
  618.  
  619.     Idle/Halt/Wakeup
  620.  
  621.        The device can be placed into IDLE/HALT mode by software control.
  622.        In both Halt and Idle conditions the state of the microcontroller
  623.        remains.  RAM is not cleared and any outputs are not changed.  The
  624.        terms idle and halt often have different definitions, depending on
  625.        the manufacturer.  What some call idle, others may call halt, and
  626.        vice versa.  It can be confusing, so check the data sheet for the
  627.        device in question to be sure.
  628.  
  629.        In IDLE mode, all activities are stopped except:
  630.          - associated on-board oscillator circuitry
  631.          - watchdog logic (if any)
  632.          - the clock monitor
  633.          - the idle timer (a free running timer)
  634.        Power supply requirements on the microcontroller in this mode are
  635.        typically around 30% of normal power requirements of the
  636.        microprocessor.  Idle mode is exited by a reset, or some other
  637.        stimulus (such as timer interrupt, serial port, etc.).  A special
  638.        timer/counter (the idle timer) causes the chip to wake up at a
  639.        regular interval to check if things are OK.  The chip then goes
  640.        back to sleep.
  641.  
  642.        IDLE mode is extremely useful for remote, unattended data logging
  643.        - the microprocessor wakes up at regular intervals, takes its
  644.        measurements, logs the data, and then goes back to sleep.
  645.  
  646.        In Halt mode, all activities are stopped (including timers and
  647.        counters).  The only way to wake up is by a reset or device
  648.        interrupt (such as an I/O port).  The power requirements of the
  649.        device are minimal and the applied voltage (Vcc) can sometimes be
  650.        decreased below operating voltage without altering the state
  651.        (RAM/Outputs) of the device.  Current consumption is typically
  652.        less than 1 uA.
  653.  
  654.        A common application of HALT mode is in laptop keyboards.  In
  655.        order to have maximum power saving, the controller is in halt
  656.        until it detects a keystroke (via a device interrupt).  It then
  657.        wakes up, decodes and sends the keystroke to the host, and then
  658.        goes back into halt mode, waiting either for another keystroke, or
  659.        information from the host.
  660.  
  661.  
  662.     Multi-Input Wakeup (National Semiconductor)
  663.  
  664.        The Multi-Input WakeUp (MIWU) feature is used to return (wakeup)
  665.        the microcontroller from either HALT or IDLE modes.  Alternately
  666.        MIWU may also be used to generate up to 8 edge selectible external
  667.        interrupts.  The user can select whether the trigger condition on
  668.        the pins is going to be either a positive edge (low to high) or a
  669.        negative edge (high to low).
  670.  
  671.  
  672. 4.5)  I/O
  673.  
  674.     UART
  675.  
  676.        A UART (Universal Asynchronous Receiver Transmitter) is a serial
  677.        port adapter for asynchronous serial communications.
  678.  
  679.  
  680.     USART
  681.  
  682.        A USART (Universal Synchronous/Asynchronous Receiver Transmitter)
  683.        is a serial port adapter for either asynchronous or synchronous
  684.        serial communications.  Communications using a USART are typically
  685.        much faster (as much as 16 times) than with a UART.
  686.  
  687.  
  688.     Synchronous serial port
  689.  
  690.        A synchronous serial port doesn't require start/stop bits and can
  691.        operate at much higher clock rates than an asynchronous serial
  692.        port.  Used to communicate with high speed devices such as memory
  693.        servers, display drivers, additional A/D ports, etc.  Can also be
  694.        used to implement a simple microcontroller network.
  695.  
  696.  
  697.     SPI (Motorola)
  698.  
  699.        An SPI (serial peripheral interface) is a synchronous serial port.
  700.  
  701.  
  702.     SCI
  703.  
  704.        An SCI (serial communications interface) is an enhanced UART
  705.        (asynchronous serial port).
  706.  
  707.  
  708.     I2C bus - Inter-Integrated Circuit bus (Philips)
  709.  
  710.        The I2C bus is a simple 2 wire serial interface developed by
  711.        Philips.  It was developed for 8 bit applications and is widely
  712.        used in consumer electronics, automotive and industrial
  713.        applications.  In addition to microcontrollers, several
  714.        peripherals also exist that support the I2C bus.
  715.  
  716.        The I2C bus is a two line, multi-master, multi-slave network
  717.        interface with collision detection.  Up to 128 devices can exist
  718.        on the network and they can be spread out over 10 meters.  Each
  719.        node (microcontroller or peripheral) may initiate a message, and
  720.        then transmit or receive data.  The two lines of the network
  721.        consist of the serial data line and the serial clock line.  Each
  722.        node on the network has a unique address which accompanies any
  723.        message passed between nodes.  Since only 2 wires are needed, it
  724.        is easy to interconnect a number of devices.
  725.  
  726.  
  727.     MICROWIRE/PLUS (National Semiconductor)
  728.  
  729.        MICROWIRE/PLUS is a serial synchronous bi-directional
  730.        communications interface.  This is used on National Semiconductor
  731.        Corporation's devices (microcontrollers, A/D converters, display
  732.        drivers, EEPROMS, etc.).
  733.  
  734.  
  735.     CAN & J1850
  736.  
  737.        CAN (Controller Area Network) is a mutiplexed wiring scheme that
  738.        was developed jointly by Bosh and Intel for wiring in automobiles.
  739.        J1850 is the SAE (Society of Automotive Engineers) multiplexed
  740.        automotive wiring standard that is currently in use in North
  741.        America.
  742.  
  743.        Both of these groups have the "NOT INVENTED HERE" syndrome and
  744.        refuse to work with each other's standard. The standards are quite
  745.        different and are not compatible at all.
  746.  
  747.        The CAN specification seems to be the one that is being used in
  748.        industrial control both in North American and Europe.  With lower
  749.        cost microcontrollers that support CAN, CAN has a good potential
  750.        to take off.
  751.  
  752.  
  753.     Analog to Digital Conversion (A/D)
  754.  
  755.        Converts an external analog signal (typically relative to voltage)
  756.        and converts it to a digital representation.  Microcontrollers
  757.        that have this feature can be used for instrumention,
  758.        environmental data logging, or any application that lives in an
  759.        analog world.
  760.  
  761.        The various types of A/D converters that can be found:
  762.  
  763.        Succesive Approximation A/D converters -- This the most common
  764.        type of A/D and is used in the majority of microcontrollers.  In
  765.        this technique, the converter figures out each bit at a time (most
  766.        significant first) and finds if the next step is higher or lower.
  767.        This way has some benefits - it takes exactly the same amount of
  768.        time for any conversion - it is very common - (and therefore very
  769.        cheap).  However it also has some disadvantages - it is slow - for
  770.        every bit it takes at least one clock cycle - the best an 8-bit
  771.        A/D can do is at least 8 clock cycles (and a couple for
  772.        housekeeping).  Because it takes so long - it is a power hog as
  773.        compared to the other types of A/Ds.
  774.  
  775.        Single Slope A/D converters -- This is the type of converter that
  776.        you can build yourself (if the microcontroller has a couple of
  777.        analog blocks on it).  Your single slope A/D converter would
  778.        include Analog Mux / comparator / timer (8-bit timer = 8 bit A/D -
  779.        16-bit timer = 16 bit A/D) with input capture and a constant
  780.        current source.  The only microcontroller (that I know of) that
  781.        has all of this on it is National's COP888EK.
  782.  
  783.        First Step is to clear the timer to 0000 and then start it.  It is
  784.        a simple matter to hang an external capacitor, and charge it with
  785.        the constant current source (linearly becuase of the current
  786.        source) when the voltage on the cap exceeds the sampling voltage,
  787.        the comparitor toggles, stops the timer - and voila - you have the
  788.        voltage in uSecs - with 16-bit accuracy.  The only drawback is you
  789.        can't really expect 16 bits (14 yes) - the conversion time varies
  790.        quite a bit, and it is SLOW.
  791.  
  792.        Delta-Sigma A/Ds converters -- This type of A/D converter is found
  793.        on higher-end DSPs.  These are the hardest to understand of the
  794.        A/Ds because it just makes a best guess (a little National
  795.        Semiconductor humor here :-).  Delta sigma A/Ds can be broken down
  796.        into two main parts.
  797.  
  798.        The modulator which does the A/D conversion and the filter, which
  799.        turns the output of the modulator into a format suitible for the
  800.        microcontroller (or DSP).
  801.  
  802.        The modulator is very simple - it just compares the input voltage
  803.        to the average of the last 100 (or so) modulator outputs and
  804.        decides if the input is higher or lower than the average. This
  805.        happens millions of times a second, resulting in a high speed
  806.        single-bit datastream of 1s and 0s who's *average* is equal to the
  807.        input voltage. Becuse the ouput is only a one or a zero, there are
  808.        very few sources of errors. This is the main reason that
  809.        delta-sigma A/Ds are **very** accurate.
  810.  
  811.        The filter comes after the modulator ... and this filter is
  812.        essentially a big DSP block.  It must take the very high speed
  813.        stream of ones and zeros and turn it into a slower speed stream of
  814.        16-bit (or greater) words to be used by the microcontroller.  This
  815.        process is called decimation and the filter is often called a
  816.        "comb filter".  Another digital filter follows this stage and
  817.        rejects unwanted frequencies.  This filter performs a similar
  818.        function to the anti-aliasing filter required in many traditional
  819.        A/D appliactions, but it does it at an unprecedented level of
  820.        performance and at low cost.  This is the other major benefit of
  821.        delta-sigma A/Ds.
  822.  
  823.        Flash A/D -- This is the basic architecure for the fastest
  824.        category of A/Ds.  The flash converter involves looking at each
  825.        level that is possible and instantaneously saying what level the
  826.        voltage is at.  This is done by setting up comparators as
  827.        threshold detectors with each detector being set up for a voltage
  828.        exaclty 1 LSB higher than the detector below it.  The benefit of
  829.        this architecture is that with a single clock cycle, you can tell
  830.        exactly what the input voltage is - that is why it is so fast.
  831.        The disadvantage is that to achieve 8-bit accuracy you need 256
  832.        comparators and to achieve 10-bit accuracy you need 1024
  833.        comparators. To make these comparators operate at higher speeds,
  834.        they have to draw LOTS of current, and beyond the 10-bit number
  835.        comparators required becomes totally unmanageable.
  836.  
  837.  
  838.     D/A (Digital to Analog) Converters
  839.  
  840.        This feature takes a Digital number and converts it to a analog
  841.        output. The number 50 would be changed to the analog output of
  842.        (50/256 * 5Volts) = .9765625V on a 8-bit / 5 Volt system.
  843.  
  844.  
  845.     Pulse width modulator
  846.  
  847.        Often used as a digital-to-analog conversion technique.  A pulse
  848.        train is generated and regulated with a low-pass filter to
  849.        generate a voltage proportional to the duty cycle.
  850.  
  851.  
  852.     Pulse accumulator
  853.  
  854.        A pulse accumulator is an event counter.  Each pulse increments
  855.        the pulse accumulator register, recording the number of times this
  856.        event has occured.
  857.  
  858.  
  859.     Input Capture
  860.  
  861.        Input Capture can precisely measure external frequencies or time
  862.        intervals by copying the value from a free running timer into a
  863.        register when an external event occurs.
  864.  
  865.  
  866.     Comparator
  867.  
  868.        One or more standard comparators can sometimes be placed on a
  869.        microcontroller die.  These comparators operate much like standard
  870.        comparators however the input and output signals are available on
  871.        the microcontroller bus.
  872.  
  873.  
  874. 4.6)  Special microcontroller features
  875.  
  876.  
  877.     Polling
  878.  
  879.        Polling is a software technique whereby the controller continually
  880.        asks a peripheral if it needs servicing.  The peripheral sets a
  881.        flag when it has data ready for transferring to the controller,
  882.        which the controller notices on its next poll.  Several such
  883.        peripherals can be polled in succession, with the controller
  884.        jumping to different software routines, depending on which flags
  885.        have been set.  Polling is not really a "feature" - but it's what
  886.        you have to do if your microcontroller of choice does not have
  887.        real interrupts.
  888.  
  889.  
  890.     Interrupts
  891.  
  892.        Rather than have the microcontroller continually asking
  893.        peripherals (timers / UARTS / A/Ds / external components) whether
  894.        they have any data available (and finding most of the time they do
  895.        not), a more efficient method is to have the peripherals tell the
  896.        controller when they have data ready.  The controller can be
  897.        carrying out its normal function, only responding to peripherals
  898.        when there is data to respond to.  On receipt of an interrupt, the
  899.        controller suspends its current operation, identifies the
  900.        interrupting peripheral, then jumps (vectors) to the appropriate
  901.        interrupt service routine.
  902.  
  903.        The advantage of interrupts, compared with polling, is the speed
  904.        of response to external events and reduced software overhead (of
  905.        continually asking peripherals if they have any data ready).
  906.  
  907.        Most microcontrollers have at least one external interrupt, which
  908.        can be edge selectible (rising or falling) or level triggered.
  909.        Both systems (edge/level) have advantages.  Edge - is not time
  910.        sensitive, but it is susceptible to gitches.  Level - must be held
  911.        high (or low) for a specific duration (which can be a pain - but
  912.        is not susceptible to glitches).
  913.  
  914.  
  915.     Watchdog timer
  916.  
  917.        A watchdog timer provides a means of graceful recovery from a
  918.        system problem.  This could be a program that goes into an endless
  919.        loop, or a hardware problem that prevents the program from
  920.        operating correctly.  If the program fails to reset the watchdog
  921.        at some predetermined interval, a hardware reset will be
  922.        initiated.  The bug may still exist, but at least the system has a
  923.        way to recover.  This is especially useful for unattended systems.
  924.  
  925.  
  926.     Digital Signal Processors (DSP)
  927.  
  928.        Microcontrollers react to and control events - DSPs execute
  929.        repetitive math-intensive algorithms.  Today many embedded
  930.        applications require both types of processors, and semiconductor
  931.        manufacturers have responded by introducing microcontrollers with
  932.        on-chip DSP capability and DSPs with on-chip microcontrollers.
  933.  
  934.        The most basic thing a DSP will do is a MACC (Multiply and
  935.        ACCumulate).  The number of data bits a DSP can Multiply and
  936.        ACCumulate will determine the dynamic range (and therefore the
  937.        application).
  938.  
  939.         Bits Fixed/Floating  Dynamic Range   Typical Application
  940.  
  941.           8     Fixed           48 dB         Telephone-quality voice
  942.          16     Fixed           96 dB         Compact disk (marginal)
  943.          24     Fixed          144 dB         Compact disk
  944.                                                   (room for error)
  945.  
  946.  
  947.     Clock Monitor
  948.  
  949.        A clock monitor can shut the microcontroller down (by holding the
  950.        microcontroller in reset) if the input clock is too slow.  This
  951.        can usually be turned on or off under software control.
  952.  
  953.  
  954.     Resident program loader
  955.  
  956.        Loads a program by Initializing program/data memory from either a
  957.        serial or parallel port.  Convenient for prototyping or trying out
  958.        new features, eliminates the erase/burn/program cycle typical with
  959.        EPROMs, and allows convenient updating of a system even from an
  960.        offsite location.
  961.  
  962.  
  963.     Monitor
  964.  
  965.        A monitor is a program installed in the microcontroller which
  966.        provides basic development and debug capabilities.  Typical
  967.        capabilities of a microcontroller monitor include:  loading object
  968.        files into system RAM, executing programs, examining and modifying
  969.        memory and registers, code disassembly, setting breakpoints, and
  970.        single-stepping through code.  Some simple monitors only allow
  971.        basic functions such as memory inspection, and the more
  972.        sophisticated monitors are capable of a full range of debug
  973.        functions.
  974.  
  975.        Monitors can either communicate with a dumb terminal or with a
  976.        host computer such as a PC.  Much of the work of the monitor (such
  977.        as user interface) can be offloaded to the host PC running a
  978.        program designed to work with the monitor.  This makes it possible
  979.        to reduce the size and complexity of the code that must be
  980.        installed in the target system.
  981.  
  982.  
  983.     MIL transducer
  984.  
  985.        An MIL transducer is a sophisticated and expensive device that
  986.        detects the presence of your mother-in-law.  Sensitivity settings
  987.        are possible for a full range of stimuli such as:  snarling,
  988.        stomping, nasty faces, and others.  Techno-Wimp (address withheld
  989.        upon request), the sole manufacturer of the MIL transducer, has
  990.        recently announced a major new version which is sensitive enough
  991.        to detect less-tangible stimuli.  This breakthrough product is
  992.        dubbed the MIL-WOMF ("Whoa, outta my face!") transducer.  Both the
  993.        original MIL and the new MIL-WOMF transducers are programmable and
  994.        easy to interface to most microcontrollers.
  995.  
  996.  
  997. 5)  Some popular microcontrollers
  998.  
  999.     Some common microcontrollers are described below.  A common question
  1000.     is "what microcontroller should I use for...?"  Well, that's a tough
  1001.     one.  The best advice would be to choose a chip that has a full set
  1002.     of development tools at the price you can afford, and good
  1003.     documentation.  For the hobbyist, the Intel 8051, Motorola 68hc11, or
  1004.     Microchip PIC would all make suitable choices.
  1005.  
  1006.  
  1007.     8048 (Intel)
  1008.  
  1009.        The grandaddy of 'em all, the first microcontroller, it all
  1010.        started here!  Although a bit long in the tooth and a bit kludgey
  1011.        in design (at least by today's standards), it is still very
  1012.        popular due to its very low cost, availability, and wide range of
  1013.        development tools.
  1014.  
  1015.        Split memory architecture with program ROM on chip with an
  1016.        additional 64 to 256 bytes also on chip.  I/O is mapped in its own
  1017.        space.
  1018.  
  1019.  
  1020.     8051 (Intel and others)
  1021.  
  1022.        The 8051, Intel's second generation of microcontrollers, rules the
  1023.        microcontroller market at the present time.  Although featuring a
  1024.        somewhat bizarre design, it is a very powerful and easy to program
  1025.        chip (once you get used to it).
  1026.  
  1027.        Split memory architecture with separate address spaces for program
  1028.        memory and data memory.  The program memory can be up to 64K.  The
  1029.        lower portion (4K or 8K depending on type) may reside on chip.
  1030.        The 8051 can address up to 64K of external data memory, and is
  1031.        accessed only by indirect addressing.  The 8051 has 128 bytes (256
  1032.        bytes for the 8052) of on-chip RAM, plus a number of special
  1033.        function registers (SFRs).  I/O is mapped in its own space.
  1034.  
  1035.        The 8051 features the so-called "boolean processor".  This refers
  1036.        to the way instructions can single out bits just about anywhere
  1037.        (RAM, accumulators, I/O registers, etc.), perform complex bit
  1038.        tests and comparisons, and then execute relative jumps based on
  1039.        the results.
  1040.  
  1041.        Piles of software, both commercial and free, are available for the
  1042.        8051 line.  Many manufacturers supply what must be a hundred
  1043.        different variants of this chip for any requirement.  Often
  1044.        featured in construction projects in the popular hobbyist
  1045.        magazines.
  1046.  
  1047.  
  1048.     80c196 (MCS-96)
  1049.  
  1050.        The third generation of Intel microprocessors, the 80c196 is a 16
  1051.        bit processor.  Originally fabricated in NMOS (8096), it is now
  1052.        mainly available in CMOS.  Intel Corp. has recently introduced a
  1053.        clock-doubled (50MHz) version of the 80c196.
  1054.  
  1055.        Among the many features it includes are: hardware multiply and
  1056.        divide, 6 addressing modes, high speed I/O, A/D, serial
  1057.        communications channel, up to 40 I/O ports, 8 source priority
  1058.        interrupt controller, PWM generator, and watchdog timer.
  1059.  
  1060.  
  1061.     80186,80188 (Intel)
  1062.  
  1063.        These chips are, in essence, microcontroller versions of the 8086
  1064.        and 8088 (of IBM/PC fame).  Included on the chip are: 2 channels
  1065.        of DMA, 2 counter/timers, programmable interrupt controller, and
  1066.        dynamic RAM refresh.  There are several variations including:  low
  1067.        power versions, variations with serial ports, and so on.
  1068.  
  1069.        One major advantage you gain by using one of these parts is that
  1070.        you can use standard PC development tools (compilers, assemblers,
  1071.        etc) for developing you applications.  If you are already familiar
  1072.        with PC software development, the learning curve will be short,
  1073.        since these chips have the same basic architecture as the original
  1074.        8088 (as used in the IBM/PC).
  1075.  
  1076.        Other advantages include high speed processing, a full megabyte
  1077.        addressing space, and powerful interrupt processing.
  1078.  
  1079.  
  1080.     80386 EX (Intel)
  1081.  
  1082.        The 80386 EX is of course a 386 in microcontroller clothing.
  1083.        Included on the chip are: serial I/O, power management, DMA,
  1084.        counter/timers, programmable interrupt controller, and dynamic RAM
  1085.        refresh.  And of course, all of the power of the 386
  1086.        microprocessor.
  1087.  
  1088.        One major advantage you gain by using one of these parts is that
  1089.        you can use standard PC development tools (compilers, assemblers,
  1090.        etc) for developing you applications.  If you are already familiar
  1091.        with PC software development, the learning curve will be short,
  1092.        since these chips have the same basic architecture as the original
  1093.        8088 (as used in the IBM/PC).
  1094.  
  1095.        We're talking power here gang.  Now let's all wait for Microsoft
  1096.        to release a version of Windows for embedded and real-time
  1097.        applications (Windows ET?  Windows RT?  Windows 2000? :-).
  1098.  
  1099.  
  1100.     6805 (Motorola)
  1101.  
  1102.        The 6805 is based loosely on the manufacturer's earlier 6800, with
  1103.        some similarities to the 6502.  It has a common memory
  1104.        architecture in which instructions, data, I/O, and timers all
  1105.        share the same space.  Stack pointer is 5 bits wide which limits
  1106.        the stack to 32 bytes deep.  Some members of this family include
  1107.        on chip A/D, PLL frequency synthesizer, serial I/O, and software
  1108.        security.
  1109.  
  1110.  
  1111.     68hc11 (Motorola and others)
  1112.  
  1113.        The popular 68hc11 is a powerful 8-bit data, 16-bit address
  1114.        microcontroller from Motorola (the sole supplier) with an
  1115.        instruction set that is similar to the older 68xx parts (6801,
  1116.        6805, 6809).  The 68hc11 has a common memory architecture in which
  1117.        instructions, data, I/O, and timers all share the same memory
  1118.        space.
  1119.  
  1120.        Depending on the variety, the 68hc11 has built-in EEPROM/OTPROM,
  1121.        RAM, digital I/O, timers, A/D converter, PWM generator, pulse
  1122.        accumulator, and synchronous and ansynchronous communications
  1123.        channels.  Typical current draw is less than 20ma.
  1124.  
  1125.  
  1126.     683xx (Motorola)
  1127.  
  1128.        The MC68EC300 series incorporates various peripherals into various
  1129.        68k family core processors.  These can be called "integrated
  1130.        processors".  They are really super-microcontrollers, very high
  1131.        performance, capable of high processing speeds, and able to
  1132.        address large amounts of memory.  A typical example from this line
  1133.        would be the 68331.  It is based on a 68020-like core and has
  1134.        about the same processing power as an Intel 80386.
  1135.  
  1136.  
  1137.     PIC (MicroChip)
  1138.  
  1139.        While watching my 8 year old daughter play with her Barbie Dolls
  1140.        (she has about 7 or so, including two that used to belong to Roz,
  1141.        my wife, when she was a girl) I noticed an interesting difference
  1142.        between the old dolls and the new dolls.  The old Barbies could
  1143.        only move their heads sideways, while the new Barbies not only can
  1144.        move their heads sideways, but also up and down.  AMAZING - the
  1145.        old Barbies were good girls - they could only say no.  The new
  1146.        Barbies however can also say yes.  Progress - isn't it wonderful!
  1147.        (Not to mention the gymnast Barbie that Dave Perry's daughter got
  1148.        a gymnast Barbie for Christmas - "wait'll you see what *she* can
  1149.        do ;-)"
  1150.  
  1151.        Which leads me to an amazing fact.  Most everyone thinks of the
  1152.        PIC microcontroller line as being a recent introduction.  However,
  1153.        they've been popular for over 20 years.  What's the difference?
  1154.        Microchip (which was
  1155.        originally [owned by] General Instruments), seems to have
  1156.        recreated this microcontroller into a product universally regarded
  1157.        as a powerful and cost effective solution.  The new chips are
  1158.        fabricated in CMOS, some features have been added, and new family
  1159.        lines have been introduced.
  1160.  
  1161.        The PIC microcontrollers were the first RISC microcontrollers.
  1162.        RISC generally implies that simplicity of design allows more
  1163.        features to be added at lower cost, and the PIC line is no
  1164.        exception.  Although having few instructions (eg. 33 instructions
  1165.        for the 16C5X line versus over 90 for the Intel 8048), the PIC
  1166.        line has a wealth of features included as part of the chip.
  1167.        Separate buses for instructions and data (Harvard architecture)
  1168.        allows simultaneous access of program and data, and overlapping of
  1169.        some operations for increased processing performance.  The
  1170.        benefits of design simplicity are a very small chip, small pin
  1171.        count, and very low power consumption.
  1172.  
  1173.        PIC microcontrollers are rapidly gaining in popularity.  They are
  1174.        being featured more and more often in construction projects in
  1175.        popular hobbyist magazines, and are chalking up a good number of
  1176.        design wins.  Due to their low cost, small size, and low power
  1177.        consumption, these microcontrollers can now be used in areas that
  1178.        previously wouldn't have been appropriate (such as logic
  1179.        circuits).  They are currently available in three lines:  the
  1180.        PIC16C5x, PIC16Cxx, and PIC17Cxx families.
  1181.  
  1182.        PSST!  Hey kid!  Want a naked Barbie Doll?!
  1183.  
  1184.  
  1185.     COP400 Family (National Semiconductor)
  1186.  
  1187.        The COP400 Family is a P2CMOS 4-bit microcontroller which offers
  1188.        512 bytes to 2K ROM and 32x4 to 160x4 RAM.  Packages are varied
  1189.        from  20 to 28 pin (DIP/SO/PLCC).  Functions include Microwire,
  1190.        timers counters, 2.3 to 6.0 Volt operation, ROMless modes, and OTP
  1191.        support.
  1192.  
  1193.        Far from being "old" technology - 4-bit microcontrollers are
  1194.        meeting significant market needs in more applications than ever
  1195.        before.  The reason for the continuing strength of the COP400
  1196.        family is its versatility.  Over 60 different, compatible devices
  1197.        are available for a wide range of requirements.  The first under
  1198.        $.50 microcontroller set a new standard of value for
  1199.        cost/performance.
  1200.  
  1201.  
  1202.     COP800 Family (National Semiconductor)
  1203.  
  1204.        The COP800 Basic Family is a fully static 8-bit microcontroller,
  1205.        fabricated using double metal silicon gate microCMOS technology.
  1206.        This low cost microcontroller contains all system timing,
  1207.        interrupt logic, ROM, RAM, and I/O necessary to implement
  1208.        dedicated control functions in a variety of applications.
  1209.  
  1210.        Depending on the device, features include:  8-bit memory mapped
  1211.        architect, MICROWIRE serial I/O, UART, memory mapped I/O, many 16
  1212.        bit timer/counters with capture registers, a multi-sourced
  1213.        vectored interrupt, comparator, WATCHDOG Timer and Clock monitor,
  1214.        Modulator/Timer (high speed PWM timer for IR transmission),
  1215.        8-channel A/D converter with prescaler and both differential and
  1216.        single-ended modes, brownout protection, halt mode, idle mode,
  1217.        high current I/O pins with 15mA sink capability, Schmitt trigger
  1218.        inputs and Multi-Input-Wake-Up.  Most devices operate over a
  1219.        voltage range from 2.5V to 6V.
  1220.  
  1221.        High throughput is achieved with an efficient, powerful
  1222.        instruction set operating at a 1uS per instruction rate (most
  1223.        instructions are single byte/single cycle) including true bit
  1224.        manipulation and BCD arithmetic instructions.  Most devices have
  1225.        military versions for -55C to +125C.
  1226.  
  1227.  
  1228.     HPC Family (National Semiconductor)
  1229.  
  1230.        The HPC Family of High Performance microControllers is a 16-bit
  1231.        controller fabricated using National's advanced microCMOS
  1232.        technology.  This process combined with an advanced architecture
  1233.        provides fast, flexible I/O control, efficient data manipulation,
  1234.        and high speed computation.
  1235.  
  1236.        With its 16x16 bit multiply and 32x16 bit divide, the HPC is
  1237.        appropriate for compute-intensive environments that used to be the
  1238.        sole domain of the microprocessor.  The architecture is a
  1239.        VonNeumann architecture where the program and data memory share
  1240.        the same address space.
  1241.  
  1242.        Depending on the family member, features include: 16-bit
  1243.        memory-mapped architecture with software configurable external
  1244.        address/data bus, Microwire/Plus serial I/O, UART, 16-bit
  1245.        timer/counters with input capture capability, High-Level Data Link
  1246.        Control (HDLC) for ISO-standard data communications, 8-channel A/D
  1247.        converter with prescaler and both differential and single-ended
  1248.        modes, power-saving modes, Multiply/Accumulate Unit with built-in
  1249.        circular buffer management for low to medium DSP applications,
  1250.        software configurable chip-select outputs, 64KB address space
  1251.        directly addressable, low-voltage (3.3V) operation.
  1252.  
  1253.        High throughput is achieved with an efficient, powerful
  1254.        instruction set operating at a 50ns per instruction cycle (most
  1255.        instructions are single byte/single cycle) including true bit
  1256.        manipulation.  Key applications currently using the HPC family
  1257.        include: Anti-lock Braking Systems, Hard Disk drives for mass
  1258.        storage, telecommunications, security systems, laser printers, and
  1259.        some military applications.
  1260.  
  1261.  
  1262.     Project Piranha (National Semiconductor)
  1263.  
  1264.        Project Piranha is an internal code name for National
  1265.        Semiconductor's embedded RISC processor technology. The Piranha
  1266.        technology represents the first RISC processor specifically
  1267.        designed for the needs of embedded applications.  This was
  1268.        accomplished through examination of the needs of typical embedded
  1269.        applications, resulting in a technology which maintains the
  1270.        benefits of CISC while providing the performance of RISC.
  1271.  
  1272.        Specifically, some of these benefits are:
  1273.          compact code density     -->  smaller memory usage/
  1274.                                           lower system cost
  1275.          small core size          -->  more room for add-on system design
  1276.          scalable architecture    -->  a range of performance solutions
  1277.        from 8 to 64 bits             with a common architecture
  1278.          common instruction set   -->  you only face the learning curve
  1279.             and development tools         once
  1280.          modular design           -->  designed for easy integration of
  1281.                                           specialized functions into
  1282.                                           single chip
  1283.  
  1284.        This technology is initially being implemented in application
  1285.        specific products from National Semiconductor, with the first
  1286.        product being available in Q1, 1995.  For further information on
  1287.        this technology, please contact Mark Throndson at
  1288.        tmetsc@esd.nsc.com, or (408) 721-4957.
  1289.  
  1290.  
  1291.     Z8 (Zilog)
  1292.  
  1293.        A "loose" derivative of the Zilog Z80, the Z8 is actually a
  1294.        composite of several different achitectures.  Not really
  1295.        compatible with the Z80 peripherals.  Has a unique architecture
  1296.        with three memory spaces:  program memory, data memory, and a CPU
  1297.        register file.  On-chip features include UART, timers, DMA, up to
  1298.        40 I/O lines.  Some versions include a synchronous/asynchronous
  1299.        serial channel.  Features fast interrupt response with 37
  1300.        interrupt sources.  The Z8671 has Tiny Basic in ROM.  The Super-8
  1301.        is just that, a super version of the Z8 with more of everything.
  1302.  
  1303.  
  1304.     HD64180 (Hitachi)
  1305.  
  1306.        A powerful microcontroller with full Z80 functionality plus:
  1307.        extended memory management, two DMA channels, synchronous and
  1308.        asynchronous communications channels, timers, and interrupt
  1309.        controller.  Some versions of this chip also include EPROM, RAM,
  1310.        and PIO (programmable input/output).  It runs Z80 code in fewer
  1311.        clock cycles than the Z80 and adds in hardware multiply and a few
  1312.        other instructions.  Available in versions that run up to 18MHz.
  1313.  
  1314.  
  1315.     TMS370 (Texas Instruments)
  1316.  
  1317.        It is similar to the 8051 in having 256 registers,  A and B
  1318.        accumulators, stack in this register page, etc.  It also has a
  1319.        host of onboard support devices, some members have all of them
  1320.        while others have a subset, the peripherals include:  RAM, ROM
  1321.        (mask, OTP, or EEPROM), 2 timers (configurable as timers/
  1322.        counters/comparators/PWM output), watchdog timer, SCI (syncronous
  1323.        serial port), SPI (asynchronous serial port), A/D (8 bit, 8
  1324.        channel), interupts.
  1325.  
  1326.        Instruction set is mostly 8 bit with some 16 bit support.  Has
  1327.        several addressing modes, 8x8 multiply, 16/8 divide.  Clock speeds
  1328.        are up to 20MHz which gives 5MHz for buss access and instruction
  1329.        cycles.  Pins mostly TTL compatible (except clock and reset).
  1330.  
  1331.        Packages include:
  1332.              28,40 DIP
  1333.              28 CLCC
  1334.              28,44,68 PLCC
  1335.              40,64 SDIP
  1336.  
  1337.        A developers/proto board is available.  It is a multi layer PCB
  1338.        about 12"x7" with RS-232 serial I/O, and monitor as well as access
  1339.        to all processor pins on a patch and proto area.  Support software
  1340.        includes IBM-PC monitor & loader, cross assembler (absolute only).
  1341.        A pure serial TTY monitor is also supported.  Sole power
  1342.        requirement is +5v.  Priced is about $500 or so.
  1343.  
  1344.        A relocating assembler and linker, and a C compiler are also
  1345.        available.
  1346.  
  1347.  
  1348.     1802 (RCA)
  1349.  
  1350.        This is a real old-timer.  The 1802 is the successor to the 1801
  1351.        (2 chip set) which was the first microprocessor implemented in
  1352.        CMOS.  Both products were called microprocessors by RCA, not
  1353.        microcontrollers.  However, since the 1801 was implemented in CMOS
  1354.        and therefore had low power requirements, it was often used in
  1355.        microcontroller applications.  The 1802, with its higher level of
  1356.        integration and ease of use, could actually be considered a true
  1357.        microcontroller.  The 1802 is radiation hard and used in a lot of
  1358.        deep space and satellite applications.
  1359.  
  1360.        The 1802 has a fairly clean instruction set, a bunch of
  1361.        general-purpose registers (more like a Z80 than an 8051 in that
  1362.        regard), and separate data and I/O address spaces.
  1363.  
  1364.  
  1365.     MuP21 (Forth chip)
  1366.  
  1367.        The MuP21 was designed by Chuck Moore, the inventor of Forth.
  1368.        With the MuP21, Forth can compile into machine code and still be
  1369.        Forth, because the machine code IS Forth.  The MuP21 freaks out at
  1370.        100 MIPS while consuming only 50 milliwatts.  Not only that, the
  1371.        chip includes a video generator, has only about 7000 transistors
  1372.        (that's right, 7000 and not 7,000,000), and costs about $20.
  1373.  
  1374.        The assembler on this chip is a sort of dialect of Forth, as the
  1375.        cpu is modeled after the Forth virtual machine.  MuP21 is a
  1376.        MINIMAL Forth engine.  In fact MuP21 was designed to run OKAD
  1377.        (Chuck Moore's VLSI CAD softare), and OKAD was designed to run on
  1378.        MuP21.  OKAD was run on a 486 to design MuP21, and MuP21 was
  1379.        designed to have just enough hardware to run OKAD about ten times
  1380.        as fast as a 486 on a very cheap chip (the MuP21).  That's the
  1381.        reason for the MuP21's on-chip video generator coprocessor.  The
  1382.        CPU programs the video generator and then just manipulates the
  1383.        video buffer.  It is composite video out, so it only needs one
  1384.        pin.  MuP21 is only a 40 pin chip.
  1385.  
  1386.        MuP21 chips, boards, software, manuals, and spec sheets are
  1387.        available from:
  1388.           Offete Enterprises
  1389.           1306 South B Street, San Mateo CA 94402
  1390.           (415) 574-8250
  1391.           Email: Chen_Ting@umacmail.apldbio.com
  1392.  
  1393.  
  1394.     F21 (Next generation Forth chip)
  1395.  
  1396.        F21 will be bigger (10k vs 7k transistors for the MuP21!) but
  1397.        since it is going to implemented with a smaller geometry (.8
  1398.        micron vs 1.2) it will still be extremely small and low power, and
  1399.        low cost.  Although the specs on this chip aren't final yet,
  1400.        expected performance is in the range of 250 MIPS!!.  It will have
  1401.        multiple analog processors and a very high speed serial network
  1402.        coprocessor on chip.  F21 will also support a wider range of
  1403.        memory chips and have more I/O processors.
  1404.  
  1405.        Designed for cheap consumer multimedia and parallel processing,
  1406.        the F21 is planned for release some time in 1995.
  1407.  
  1408.        For more information on this project, contact: Jeff Fox
  1409.        <jfox@netcom.com>.
  1410.  
  1411.  
  1412. 6)  GETTING STARTED WITH MICROCONTROLLERS
  1413.  
  1414.     In order to get started with microcontrollers, several factors need
  1415.     to be considered.
  1416.           - cost
  1417.           - convenience
  1418.           - availability of development tools
  1419.           - intended use
  1420.  
  1421.     The hardware described in this section is readily available,
  1422.     affordable, and is easy to find software for.
  1423.  
  1424.     <Inclusion or exclusion of a product in this section doesn't have any
  1425.     real significance.  I've tried to give a good cross-section of
  1426.     devices and manufacturers - I'm open for suggestions.>
  1427.  
  1428.  
  1429. 6.1)  Evaluation Kits/Boards
  1430.  
  1431.     Many manufacturers offer assembled evaluation kits or boards which
  1432.     usually allow you to use a PC as a host development system.  Among
  1433.     some of the more popular evaluations kits/boards are:
  1434.  
  1435.     Parallax Basic Stamp
  1436.        This is a small single-board controller that runs BASIC, and costs
  1437.        only $39.  A SIP version for only $29 is also available.  THE 256
  1438.        byte EEPROM can hold a program of up to about 100 instructions.
  1439.        The BASIC Stamp Programming Package is a complete development
  1440.        package for only $99.
  1441.           Parallax, Inc., 3805 Atherton Rd. 102, Rocklin, CA  95765
  1442.           (916)624-8333    Fax: (916)624-8003   BBS: (916)624-7101
  1443.  
  1444.     Motorola EVBU, EVB, EVM, EVS
  1445.        A series of very popular evaluation/development systems.  Comes
  1446.        complete with the BUFFALO monitor and varying types of development
  1447.        software.  Commonly used in universities.
  1448.  
  1449.     Dallas Semiconductor DS5000TK
  1450.        The DS5000TK allows evaluation of any DS5000 series device in any
  1451.        existing application without circuit changes.  The included
  1452.        DS5000T plugs into the supplied serial interface pod which
  1453.        provides a connection to a host PC.  A target cable connects the
  1454.        pod to the target system.  Programs can be downloaded directly to
  1455.        the chip (no EPROM programming!) using the built-in serial loader.
  1456.        (With Dunfield's Development System, you end up with a cheap
  1457.        "pseudo-ice".  Dunfield also has a circuit if you want to build a
  1458.        similar device.)
  1459.  
  1460.     Philips DS750
  1461.        For $100, you get a "pseudo-ice" for testing your code in-circuit.
  1462.        Allows source-code debugging in assembler (included), C, and PL/M.
  1463.        Very popular with students and consultants to experiment with
  1464.        80c51 code for their application.  Philips sold nearly 10,000 of
  1465.        these boards in the USA (and 5000 in Europe without even
  1466.        advertising).
  1467.  
  1468.  
  1469. 6.2)  Easy chips to use
  1470.  
  1471.  
  1472.     In addition, several chips provide a similar capability if you are
  1473.     willing to spend a bit of time wiring up a simple circuit.  A few
  1474.     chips worth looking at are:
  1475.  
  1476.     Motorola MC68HC11A8P1
  1477.        Contains Motorola's BUFFALO monitor which has the same
  1478.        functionality as the one on Motorola's evaluation boards.  A
  1479.        working system can be built with this chip and a Maxim MAX-232.
  1480.        You can talk to it with a PC or Mac over a 3-wire RS232
  1481.        connection.  It is easy to load and run anything you want in the
  1482.        on-board RAM and EEPROM.  You can even use subprograms in the
  1483.        BUFFALO monitor after getting a listing from Motorola's BBS or ftp
  1484.        site.  This BBS also has freeware assemblers to make a complete
  1485.        development environment cheaply and quickly.
  1486.  
  1487.     Intel 8052AH-BASIC
  1488.        This popular chip with hobbyists is another easy way to get
  1489.        started.  You can download high level code from your host.  The
  1490.        disadvantages are that you can't get away from a multi-chip
  1491.        solution, the code is noticeably slow, you have to buy an MCS
  1492.        BASIC manual, you are detached from the inner workings, there
  1493.        aren't many on-chip goodies like A/D, and you can forget about
  1494.        running off of a battery.
  1495.  
  1496.     Dallas Semiconductor DS5000/DS2250
  1497.        These are well suited even for electronics ignoramuses (ignorami?)
  1498.        such as myself.  All you need to add is a
  1499.        crystal and two capacitors to end up with a working system.  These
  1500.        chips come complete with non-volatile RAM in the form of static
  1501.        RAM (at least 8K) backed up with a lithium battery.  Everything is
  1502.        saved - program, data, and bugs ;-).
  1503.  
  1504.  
  1505. 6.3)  Software (Cheap and easy)
  1506.  
  1507.     You can search for free software for development, but you often get
  1508.     what you pay for.  What is sorely lacking in freeware is technical
  1509.     support.  Several packages are available that provide complete
  1510.     development environments for some of the more popular
  1511.     microcontrollers.  If you want to be productive right away, think
  1512.     about investing $100 or so - it'll be well worth the price!
  1513.  
  1514.  
  1515.     I've been playing with the Dunfield Development System lately (on the
  1516.     8051), and it's really quite nice.  I've also heard many good things
  1517.     about it from others.  It includes a near ANSI-C compiler, run-time
  1518.     library with source, assembler, ROM debugger, integrated development
  1519.     environment, monitor with source, utilities, and other extras.
  1520.     Although not freeware, the low price ($100), the features, all of the
  1521.     extra goodies, and the good reviews make this a package worth looking
  1522.     at.  Also, if you're interested in working on more than one family of
  1523.     microcontroller, Dunfield supports a wide range.  This means only
  1524.     needing to learn one system, instead of many.  The following chips
  1525.     are supported:  6805, 6809, 68hc11, 68hc16, 8051/52, 8080/85, 8086,
  1526.     and 8096.  A package including a simulator and a resident monitor
  1527.     debugger are also available for the 8051 for $50.
  1528.           Dunfield Development Systems
  1529.           P.O. Box 31044, Nepean, Ontario  K2B 8S8   Canada
  1530.           (613)256-5820   Fax: (613)256-5821
  1531.           Email:  ddunfield@bix.com
  1532.  
  1533.  
  1534.     A decent C compiler for the 68hc11 comes from ImageCraft.  This
  1535.     package, which runs under DOS and OS/2, includes a near ANSI C
  1536.     compiler, assembler, linker, librarian, ANSI C functions and headers,
  1537.     and 90 page manual.  The current release is version 1.02 of their
  1538.     compiler.  The price is just $40.  Initial feedback on this compiler
  1539.     seems promising.  The pre-release versions are already in use by many
  1540.     of you, and will still be available as freeware.
  1541.           ImageCraft
  1542.           P.O. Box 64226, Sunnyvale, CA 94086-9991
  1543.           (Richard Man) imagecft@netcom.com
  1544.  
  1545.  
  1546.     Another low priced ($100) C compiler comes from Micro Computer
  1547.     Control.  Cross compilers running under DOS are available for the
  1548.     8051 and the Z8.  This package includes a C compiler, assembler,
  1549.     linker, librarian, and extensive printed documentation.  A
  1550.     simulator/source code debugger is available for an additional $79.95.
  1551.           Micro Computer Control Corporation
  1552.           PO Box 275, 17 Model Ave., Hopewell, NJ  08525
  1553.           (609)466-1751   Fax: (609)466-4116   BBS: (609)466-4117
  1554.           Email: 73062.3336@compuserve.com
  1555.  
  1556.  
  1557.     C isn't the only development system available - good solid Basic and
  1558.     Forth development systems are also available.  Refer to the
  1559.     appropriate FAQ for the microcontroller that you are using for more
  1560.     information on free and commercial development systems.
  1561.  
  1562.  
  1563. 7)  MICROCONTROLLER PROGRAMMING LANGUAGES
  1564.  
  1565.     Just a bit of an introduction for the beginner.
  1566.  
  1567. 7.1)  Machine/Assembly language
  1568.  
  1569.     Machine language is the program representation as the microcontroller
  1570.     understands it.  It is not easy for humans to read and is a common
  1571.     cause of migraine headaches.  Assembly language is a human-readable
  1572.     form of machine language which makes it much easier for us flesh and
  1573.     bone types to deal with.  Each assembly language statement
  1574.     corresponds to one machine language statement (not counting macros).
  1575.  
  1576.     An assembly/machine language program is fast and small.  This is
  1577.     because you are in complete charge of what goes into the program.  Of
  1578.     course, if you write a slow, large, stupid program, then it will run
  1579.     slowly, be too big, and be stupid.  Assembly language (assembler)
  1580.     can't correct stupidity - although sometimes I wish it could ;-).
  1581.  
  1582.     If you are starting out learning about microcontrollers, it would be
  1583.     worth your while first learning assembler.  By programming in
  1584.     assembler, you master the underlying architecture of the chip, which
  1585.     is important if you intend to do anything significant with your
  1586.     microcontroller.
  1587.  
  1588.  
  1589. 7.2)  Interpreters
  1590.  
  1591.     An interpreter is a high level language that is closer to natural
  1592.     language.  The interpreter itself is a program that sits resident in
  1593.     the microcontroller.  It executes a program by reading each language
  1594.     statement one at a time and then doing what the statement says to do.
  1595.     The two most popular interpreters for microcontrollers are BASIC and
  1596.     FORTH.
  1597.  
  1598.     BASIC's popularity is due to its simplicity, readability, and of
  1599.     course just about everyone has at least played with BASIC at one time
  1600.     or another.  One common compaint about [interpreted] BASIC is that it
  1601.     is slow.  Often this can be solved by using a different technique for
  1602.     performing the desired task.  Other times it is just the price paid
  1603.     for using an interpreter.
  1604.  
  1605.     FORTH has a very loyal following due to its speed (approaching that
  1606.     of assembler language) and its incremental approach to building a
  1607.     system from reusable parts.  Many FORTH systems come with a host
  1608.     system which turns your desktop computer into a development system.
  1609.     FORTH can be quite difficult to write in (if you have no experience
  1610.     with it) and is probably even harder to read.  However, it is a very
  1611.     useful and productive language for control systems and robotics, and
  1612.     can be mastered in time.
  1613.  
  1614.     The nicest thing about developing a system with an interpreter is
  1615.     that you can build your program interactively.  You first write a
  1616.     small piece of code and then you can try it out immediately to see
  1617.     how it works.  When the results are satisfactory, you can then add
  1618.     additional components until the final product is achieved.
  1619.  
  1620.  
  1621. 7.3)  Compilers
  1622.  
  1623.     A compiler is a high level language that combines the programming
  1624.     ease of an interpreter with greater speed.  This is accomplished by
  1625.     translating the program (on a host machine such as a desktop PC)
  1626.     directly into machine language.  The machine language program is then
  1627.     burned onto an EPROM or downloaded directly to the microcontroller.
  1628.     The microcontroller then executes the translated program directly,
  1629.     without having to interpret first.
  1630.  
  1631.     The most popular microcontroller compilers are C and BASIC.  PL/M,
  1632.     from Intel, also has some popular support due to that company's
  1633.     extensive use of that language.
  1634.  
  1635.     Due to both its popularity and its slow speed, it was only logical
  1636.     that BASIC would appear as a compiled language.  A few companies
  1637.     supply a BASIC compiler for several of the more popular
  1638.     microcontrollers.  Execution speed is drastically increased over
  1639.     interpreted BASIC since the microcontroller is freed from the task of
  1640.     interpreting the statements as the program runs.
  1641.  
  1642.     While interpreted Forth approaches (and sometimes surpasses) the
  1643.     speed of many compilers, interpreted Forth screams along.  Today
  1644.     there are many high performance optimizing native code Forth
  1645.     compilers, and there are also lots of very cheap or free public
  1646.     domain Forths.  Some of them like Tom Almy's ForthCMP produces
  1647.     optimized native code with less overhead and better performance than
  1648.     just about anything else out there.  Of course it still has
  1649.     compactness and more elegant factoring of functionality than in most
  1650.     languages.
  1651.  
  1652.     C is now the language of choice for the entire universe.  C is used
  1653.     on computers from the tiny microcontroller up to the largest Cray
  1654.     supercomputer.  Although a C program can be a bit tedious at times to
  1655.     read (due to the terse programming style followed by many C
  1656.     programmers), it is a powerful and flexible development tool.
  1657.     Although a high level language, it also gives the developer access to
  1658.     the underlying machine.  There are several very good and cheap C
  1659.     compilers available for the more popular microcontrollers.  It is
  1660.     widely used, available, supported, and produces fairly efficient code
  1661.     (fast and compact).
  1662.  
  1663.  
  1664. 7.4)  Fuzzy Logic and Neural Networks
  1665.  
  1666.     Fuzzy Logic and neural networks are two design methods that are
  1667.     coming favor in embedded systems.  The two methods are very different
  1668.     from each other, from conception to implementation.  However, the
  1669.     advantages and disadvantages of the two can complement each other.
  1670.  
  1671.     The advantage of neural networks is that it is possible to design
  1672.     them without completely understanding the underlying logical rules by
  1673.     which they operate.  The neural network designer applies a set of
  1674.     inputs to the network and "trains" it to produce the required output.
  1675.     The inputs must represent the behavior of the system that is being
  1676.     programmed, and the outputs should match the desired result within
  1677.     some margin of error.  If the network's output does not agree with
  1678.     the desired result, the structure of the neural network is altered
  1679.     until it does.  After training it is assumed that the network will
  1680.     also produce the desired output, or something close to it, when it is
  1681.     presented with new and unknown data.
  1682.  
  1683.     In contrast, a fuzzy-logic system can be precisely described.  Before
  1684.     a fuzzy control system is designed, its desired logical operation
  1685.     must be analyzed and translated into fuzzy-logic rules.  This is the
  1686.     step where neural networks technology can be helpful to the
  1687.     fuzzy-logic designer.  The designer can first train a software neural
  1688.     network to produce the desired output from a given set of inputs and
  1689.     outputs and then use a software tool to extract the underlying rules
  1690.     from the neural network.  The extracted rules are translated into
  1691.     fuzzy-logic rules.
  1692.  
  1693.     Fuzzy logic is not a complete design solution.  It supplements rather
  1694.     than replaces traditional event control and PID (proportional,
  1695.     integral, and derivate) control techniques.  Fuzzy logic relies on
  1696.     probability and artifical intelligence techniques.  It works best
  1697.     when it is applied to non-linear systems with many inputs that cannot
  1698.     be easily expressed in either mathematical equations used for PID
  1699.     control or IF-THEN statements used for event control.
  1700.  
  1701.     In an effort to change fuzzy logic from a "buzzword" (as it is in
  1702.     most parts of the world) to a well established design method (as it
  1703.     is in Japan), most manufacturers of microcontrollers have introduced
  1704.     fuzzy logic software.  Most software generates code for specific
  1705.     microcontrollers, while other generates C code which can be compiled
  1706.     for any microcontroller.
  1707.  
  1708.  
  1709. 8)  DEVELOPMENT TOOLS
  1710.  
  1711.     Having a programming language is usually not enough to develop a
  1712.     program for a microcontroller.  Some way of debugging your program is
  1713.     needed.  I am only too painfully aware of this fact.
  1714.  
  1715.  
  1716. 8.1)  Simulators
  1717.  
  1718.     A simulator runs your microcontroller program on a host machine (such
  1719.     as your PC).  You can step through the code to see exactly what is
  1720.     happening as the program runs.  Contents of registers or variables
  1721.     can be altered to change the way the program runs.  Eliminates (or at
  1722.     least delays) the erase/burn/program EPROM cycle common in
  1723.     microcontroller program development.  You can work out ideas or learn
  1724.     about microcontrollers by experimenting with small code fragments and
  1725.     watching on the screen what happens.  A simulator can't support real
  1726.     interrupts or devices, and usually runs much slower than the real
  1727.     device the program is intended for.
  1728.  
  1729.     Some manufactures have a cross between a software simulator and the
  1730.     hardware emulator - a hardware simulator.  This is a piece of
  1731.     equipment that plugs into your target, and the pins will toggle and
  1732.     react like they should - just MUCH slower.  Cost of a device like
  1733.     this can run around $120.
  1734.  
  1735.  
  1736. 8.2)  Resident Debuggers
  1737.  
  1738.     A resident debugger runs your program on the microcontroller itself,
  1739.     while showing the progress on your host machine (such as a PC).  Has
  1740.     many of the same advantages as simulator above, with the additional
  1741.     benefit of seeing how the program runs on the real target machine.  A
  1742.     resident debugger needs to "steal" some resources from the target
  1743.     machine, including: a communications port to communicate with the
  1744.     host, an interrupt to handle single stepping, and a certain amount of
  1745.     memory for the resident part (on the target) of the debugger.
  1746.  
  1747.  
  1748. 8.3)  Emulators
  1749.  
  1750.     If you've got the money, this is the equipment you want to develop
  1751.     your system with (yeah, that's right, a preposition at the end of a
  1752.     sentence!).  A [usually] expensive piece of hardware that even for
  1753.     the cheaper versions will run you at least $700.  An emulator is a
  1754.     sophisticated device that pretends that it is the microprocessor
  1755.     itself, while at the same time capturing information.  It provides
  1756.     full and total control over your target, while at the same time not
  1757.     requiring any resources from the target.  The emulator can either be
  1758.     a stand alone device with its own display, or it can be interface to
  1759.     a PC.
  1760.  
  1761.  
  1762. 8.4)  Good Stereo System
  1763.  
  1764.     This is the most important tool for the microcontroller developer, or
  1765.     for any computer system developer for that matter.  Don't expect to
  1766.     get anywhere unless you have the proper music playing in the
  1767.     background(?) at the proper volume.  I find that I do my best work
  1768.     with the Rolling Stones (especially Goats Head Soup) or Clapton
  1769.     (especially early stuff like Cream - Disraeli Gears is a killer
  1770.     album!).  The volume must be set to cause excrutiating pain to be
  1771.     most effective.  Trust me on this ;-).
  1772.  
  1773.  
  1774. 9)  FINDING OUT MORE ABOUT MICROCONTROLLERS
  1775.  
  1776.     If you are interested in learning more about microcontrollers, there
  1777.     are many fine sources of information.  You have your choice of
  1778.     printed media (books, periodicals, informative graffiti) or
  1779.     interactive (right here on the Internet, or BBSs).
  1780.  
  1781.  
  1782. 9.1)  Books
  1783.  
  1784.     8-bit Microcontroller Instruction Set Performance
  1785.         - Digitial Systems Consulting / June 1994
  1786.         - compares Motorola's M68HC05, Intel's 80x51,
  1787.             Microchip's PIC16C5x, and National's COP8
  1788.         - lit number 630008
  1789.         - (800)272-9959 call this number for copies
  1790.  
  1791.     The 16 bit 8096:  Programming, Interfacing, Applications
  1792.         - Ron Katz and Howard Boyet
  1793.         - Microprocessor Training Inc
  1794.           14 East 8th Street, New York, NY  10003
  1795.           212-473-4947
  1796.         - Library of Congress Catalog card number:  85-61954
  1797.         - According to William Chernoff:  "The book is pretty good -
  1798.           mostly software examples.  The one hardware thing I looked
  1799.           closely at was wrong - a schematic error.  Oh well."
  1800.  
  1801.     The 68hc11 Microcontroller
  1802.         - Joseph D. Greenfield (at R.I.T.)
  1803.         - Saunders College Publishing, (Harcourt Brace Jovanovich)
  1804.         - 1992
  1805.         - ISBN 0-03-051588-2
  1806.         - A number of the sections make use of the Buffalo monitor.
  1807.           This could be useful if you are using the Motorola Trainer EVB.
  1808.  
  1809.     The 8051 Family of Microcontrollers
  1810.         -Richard H. Barnett
  1811.         -Prentice-Hall, 1995 (yeah, that's right, 1995!)
  1812.         -ISBN 0-02-306281-9
  1813.  
  1814.     8051 Interfacing and Applications
  1815.         - Applied Logic Engineering
  1816.           13008 93rd Place North, Maple Grove, MN  55369
  1817.         - (612)494-3704
  1818.  
  1819.     The 8051 Microcontroller
  1820.         - I. Scott MacKenzie
  1821.         - Macmillan Publishing Company, 1992
  1822.         - includes schematics for a single-board computer,
  1823.           assembly-language source code for a monitor program, and
  1824.           interfaces to a keypad, LEDs, and loudspeaker.
  1825.  
  1826.     The 8051 Microcontroller
  1827.         - James W. Stewart
  1828.         - Regents/Prentice-Hall, 1993
  1829.         - $27.50, 273 pages
  1830.         - includes many interfacing examples (switches, solenoids,
  1831.           relays, shaft encoders, displays, motors, and A/D converters)
  1832.           and a chapter on top-down design method
  1833.  
  1834.     The 8051 Microcontroller: Architecture, Programming and Applications
  1835.         - Kenneth J. Ayala
  1836.         - 241 pages, soft cover
  1837.         - 5.25" diskette with assembler and simulator
  1838.         - ISBN 0-314-77278-2, Dewey 004.165-dc20
  1839.         - West Publishing Company
  1840.           P.O. Box 64526, St. Paul, MN  55164
  1841.           (800)328-9352
  1842.         - see review in next section
  1843.  
  1844.     The Art of Programming Embedded Systems
  1845.         - Jack G. Ganssle
  1846.         - 1992, 279pp, $55.00
  1847.         - ISBN: 0-12-274880-0
  1848.         - CONTENTS: Introduction, Initial Considerations.  Elegant
  1849.           Structures.  Designs for Debugging.  Design for Test.  Memory
  1850.           Management.  Approximations. Interrupt Mamangement.  Real-Time
  1851.           Operating Systems.  Signal Sampling and Smoothing.  A Final
  1852.           Perspective.  Appendixes: Magazines, File Format.  Serial
  1853.           Communications.  Bibliography.  Index.
  1854.  
  1855.     Assembly Language Programming (for the MCS-51 family)
  1856.         - F. A. Lyn
  1857.         - L. S. Electronic Systems Design
  1858.  
  1859.     Basic-52 Programmer's Guide
  1860.         - Systronix, Inc. (they also sell a Basic compiler)
  1861.         - address above
  1862.  
  1863.     Beginner's Guide
  1864.         - Suncoast Technologies
  1865.  
  1866.     A Beginners Guide to the Microchip PIC
  1867.         - Nigel Gardner
  1868.         - Character Press, Ltd. (UK)
  1869.         - ISBN 1 899013 00 8
  1870.         - software (on floppy) and hardware guide, debugging techniques
  1871.         - suitably titled, for those with no previous microcontroller
  1872.           experience
  1873.         - 19.95 UK Pounds
  1874.  
  1875.     The PIC Source Book:
  1876.         - assembly language source code on diskette
  1877.         - $39
  1878.         - Scott Edwards Electronics
  1879.           964 Cactus Wren Lane, Sierra Vista, AZ  85635
  1880.           (602)459-4802    Fax: (602)459-0623
  1881.           72037.2612@compuserve.com
  1882.  
  1883.     C and the 8051
  1884.         - Thomas W. Schultz
  1885.         - Prentice Hall
  1886.         - ISBN 0-13-753815-4
  1887.  
  1888.     Data Acquisition and Process Control with the M68HC11 Microcontroller
  1889.         - Frederick Driscoll, Robert Coughlin, Robert Villanucci of
  1890.           Wentworth Institute of Technology.
  1891.         - Macmillan Publishing Company
  1892.         - 1994
  1893.         - ISBN 0-02-33055-X
  1894.         - Several Chapters on the 68HC11, instructions, and EVB;
  1895.           chapters on interfacing Analog and Digital signals to the
  1896.           68HC11;  example applications of interfaces to temperature,
  1897.           load cell, pressure and thermocouple sensors.
  1898.         - a good companion to Motorola's "pink" books
  1899.  
  1900.     Data book / Handbook / Users' Guide
  1901.         - Advanced Micro Devices
  1902.         - Dallas (User's guide for the DS5000)
  1903.         - Intel
  1904.         - Siemens
  1905.  
  1906.     Design with Microcontrollers
  1907.         - John B. Peatman
  1908.         - ISBN 0-07-049238-7
  1909.         - This book is on a more advanced level.  Uses both the 68hc11
  1910.           and Intel 8096 as example systems.
  1911.         - Used for a very popular course on microcontroller design at
  1912.           Georgia Tech.
  1913.  
  1914.     Embedded Controller Forth for the 8051 Family
  1915.         - Academic Press
  1916.         - William H. Payne
  1917.         - uses a Forth development system available on the Internet
  1918.  
  1919.     Embedded Controllers Databook 1992 Edition
  1920.         - National Semiconductor Corporation
  1921.         - literature number: 400049
  1922.         - (800)272-9959 call this number for for copies
  1923.  
  1924.     Embedded Systems Programming in C and Assembler
  1925.         - John Forrest Brown
  1926.         - Van Nostrand Reinhold, 1994
  1927.         - 304 pages, $49.95
  1928.         - ISBN 0-442-01817-7
  1929.         - covers Motorola and Intel processors
  1930.         - includes diskette with code from the book
  1931.         - book review in Dr. Dobb's Journal, November 1994, page 121
  1932.  
  1933.     Experimenter's guide
  1934.         - Rigel Corporation
  1935.  
  1936.     Introduction to Microcontroller Design, Based on the 8051 family of
  1937.     Processors
  1938.         - Business Data Computers
  1939.           P.O. Box 1549, Chester, CA  96020
  1940.  
  1941.     M68hc11 Reference Manual
  1942.         - Motorola - literature reference M68HC11RM/AD
  1943.         - This document is the "bible" of the 6811 and is a must-have
  1944.           for any serious 6811 programmer.
  1945.  
  1946.     MC68hc811E2 Programming Reference Guide
  1947.         - Motorola - literature reference M68HC811E2RG
  1948.         - A pocket-sized guide to the version of the 6811 used on the
  1949.           Mini Board
  1950.  
  1951.     The Microcontroller Idea Book
  1952.         - Jan Axelson (of Microcomputer Journal fame)
  1953.         - features the 8052-BASIC microcontroller
  1954.         - hands-on guide with complete plans (schematics, design theory,
  1955.           program listings, construction details, etc)
  1956.         - explains how to use sensors, relays, displays, clock/calendars,
  1957.           keypads, wireless links, and more
  1958.         - 1994, 273 pages, $31.95 + shipping
  1959.         - Lakeview Research, 2209 Winnebago St., Madison, WI  53704
  1960.           (608)241-5824  Internet: 71163.3555@compuserve.com
  1961.         - contact the author at janaxel@aol.com
  1962.  
  1963.     Microcomputer Engineering
  1964.         - Gene H. Miller
  1965.         - Prentice Hall, Englewood Cliffs, NJ  07632
  1966.         - 1993
  1967.         - ISBN 0-13-584475-4
  1968.         - Explains the basics.  Many clear and concise assembly language
  1969.           example programs.
  1970.         - Written to be used with the Motorola Trainer (EVB).
  1971.  
  1972.     Microcontroller Technology, The 68hc11
  1973.         - Peter Spasov
  1974.         - Prentice Hall
  1975.         - ISBN 0-13-583568-2
  1976.  
  1977.     Microcontrollers: Architecture, Implementation, and Programming
  1978.         - Kenneth Hintz and Daniel Tabak
  1979.         - McGraw-Hill Inc.  1992
  1980.         - ISBN 0-07-028977-8
  1981.  
  1982.     Programmer's Guide to the 1802
  1983.         - Tom Swan
  1984.         - Hayden Book Company, Inc., 1981
  1985.         - ISBN 0-8104-5183-2
  1986.         - good introduction to assembly language progamming and an
  1987.           thorough tutorial on the 1802
  1988.  
  1989.     Programming Microcontrollers in C
  1990.         - Ted Van Sickle
  1991.         - HighText Publications, 1994
  1992.         - 394 pages, $29.95
  1993.         - ISBN 1-878707-14-0
  1994.         - thorough tutorial on C programming, covers aspects of C
  1995.           programming specific to embedded systems
  1996.         - covers the Motorola line of microcontrollers (small to large)
  1997.         - book review in Dr. Dobb's Journal, November 1994, page 121
  1998.  
  1999.     The Real-Time Kernel
  2000.         - Jean Labrosse
  2001.         - R&D Publications, Inc.
  2002.           Suite 200 1601 W 23rd St., Lawrence, KS  66046
  2003.         - (913)841-1631   Fax: (913)841-2624
  2004.         - Based on the article "A Portable Real Time Kernel in C"
  2005.           in Embedded Systems Programming (Part 1: vol 5 no 5
  2006.           May 1992, Part 2: vol 5 no 6 June 1992)
  2007.         - originally written for the Intel 186 but ported to HC11
  2008.           source code for UCOS11
  2009.  
  2010.     Single- and Multiple-Chip Microcomputer Interfacing
  2011.         - G.J. Lipovski
  2012.         - Copyright 1988
  2013.         - 478 pages
  2014.         - ISBN 0-13-810557-X (Prentice-Hall Edition)
  2015.           ISBN 0-13-810573-1 (Motorola Edition)
  2016.         - Based around the 68HC11 it covers both hardware and
  2017.           software at undergraduate level, but the emphasis is on
  2018.           interfacing.
  2019.         - Chapter titles:
  2020.                1  Microcomputer Architecture
  2021.                2  Programming Microprocessors
  2022.                3  Bus Hardware and Signals
  2023.                4  Parallel and Serial I/O
  2024.                5  Interrupts and Alternatives
  2025.                6  Analog Interfacing
  2026.                7  Counters and Timers
  2027.                8  Communications Systems
  2028.                9  Storage and Display Systems
  2029.  
  2030.     Single- and Multiple- Chip Microcomputer Interfacing (Lab Manual)
  2031.         - Peter Song and G. Jack Lipovski
  2032.         - Prentice-Hall, 1988
  2033.         - ISBN 0-13-811605-9
  2034.         - Support for the above book.  Examples based around the Motorola
  2035.           EVB and the BUFFALO monitor or the EVBU (or 3-chip micro) and
  2036.           PC-Bug11.
  2037.  
  2038.     User Manual for the CDP1802 COSMAC Microprocessor
  2039.         - RCA, 1977
  2040.         - contains useful hardware and software techniques
  2041.  
  2042.  
  2043. 9.2)  Data and Reference Books
  2044.  
  2045.     Motorola
  2046.         - M68hc11 Reference Manual, ref # M68HC11RM/AD
  2047.              this document is the "bible" of the 6811 and is a must-have
  2048.              for any serious 6811 programmer
  2049.         - MC68hc811E2 Programming Reference Guide, ref # M68HC811E2RG
  2050.              a pocket-sized guide to the version of the 6811 used on the
  2051.  
  2052.     National Semiconductor - (800)272-9959 for copies
  2053.         - COP8 Databook, ref # 400007
  2054.         - COP8 Selection Guide, ref # 630006
  2055.         - COP8 Designers Information Kit, ref # 6300007-005
  2056.              contains: - COP8 Databook (1994 Edition)
  2057.                        - COP8 Selection Guide (1994 Edition)
  2058.                        - Independent 8-bit Instruction Set Analysis
  2059.                        - Independently prepared software analysis of
  2060.                          National's COP8, Motorola's M68Hc05, Intel's
  2061.                          80X51, and Microchip's PIC16C5X
  2062.                        - Utility and Overview Disks
  2063.                        - Self-lead overview on COP8, includes electronic
  2064.                          selection guide and sample application code
  2065.         - COP8 Utility Disk, Mac ref # 6300000, Windows ref # 630001
  2066.              typical microcontroller applications and sample code
  2067.              available by ftp nscmicro.nsc.com in/pub/COP8
  2068.         - COP8 Overview Disk, Mac ref # 630004, Windows ref # 630005
  2069.              self-lead COP8 overview, shows product features/benifits
  2070.                 and includes a electronic selection guide (2 disks)
  2071.              available by ftp nscmicro.nsc.com in /pub/COP8
  2072.  
  2073.  
  2074. 9.3)  Periodicals
  2075.  
  2076.     Various magazines and journals (journals seems to be THE popular name
  2077.     for magazines these days) provide articles from time to time on
  2078.     microcontrollers.  If you are just starting out learning, pick those
  2079.     magazines that feature construction articles.
  2080.  
  2081.     The Computer Applications Journal (Circuit Cellar Ink)
  2082.         - programming and construction articles
  2083.         - POB 7694, Riverton, NJ  08077-8784
  2084.         - Fax: (203)872-2204
  2085.         - Voice orders: (609) 786-0409
  2086.         - On-line orders (BBS): (203) 871-1988
  2087.         - Email orders: ken.davidson@circellar.com
  2088.         - $21.95, $31.95 surface Canada and Mexico,
  2089.           $49.95 air all other countries
  2090.  
  2091.     Computer Design
  2092.         - industry announcements and trends
  2093.         - One Technology Park Drive, P.O. Box 990, Westford, MA  01886
  2094.         - (508)692-0700
  2095.  
  2096.     The Computer Journal
  2097.         - programming and construction articles
  2098.         - PO Box 535, Lincoln  96648
  2099.  
  2100.     Dr. Dobbs Journal
  2101.         - programming articles, concepts, and designs
  2102.         - 411 Borel Ave., San Mateo, CA  94402
  2103.         - (415)358-9500
  2104.  
  2105.     Electronic Engineering Times
  2106.         - industry announcements and trends
  2107.         - 500-B Bi-County Boulevard, Farmingdale, NY  11735
  2108.         - (516)293-3000
  2109.  
  2110.     Electronics Now
  2111.         - construction articles
  2112.         - Box 55115, Boulder, CO  80321-5115
  2113.         - $19.97 one year
  2114.  
  2115.     Elektor Electronics
  2116.         - programming and construction articles
  2117.         - World Wide Subscription Service Ltd
  2118.           Unit 4, Gibbs Reed Farm, Pashley Road
  2119.           Ticehurst TN5 7HE, England
  2120.         - 27 UK pounds
  2121.      or
  2122.         - Old Colony Sound Lab, P.O. Box 243, Peterborough, NH 03458
  2123.         - Tel. (603) 924-6371, 924-6526
  2124.         - Fax: (603) 924-9467
  2125.         - $57 USA and Canada per year
  2126.  
  2127.     Embedded Systems Programming
  2128.         - programming and systems design articles
  2129.         - Miller Freeman Publications
  2130.         - 500 Howard St., San Francisco, CA  94105
  2131.         - (415) 397-1881
  2132.  
  2133.     Inquisitor Magazine
  2134.         - If you're the type that watched Gilligan's Island for its
  2135.           socio-political insights, then you'll love a new 'zine that
  2136.           just crossed my desk - Inquisitor Magazine.  It's general
  2137.           philosophy seems to be ... well, it seems to be ... uh, yeah!
  2138.           Technical in nature, bizarre, tongue in cheek, eclectic,
  2139.           electric, did I mention bizarre(?), and lots of fun.  Worth
  2140.           looking at if you like the out of the ordinary.  The moving
  2141.           force behind this magazine is Daniel Drennan, who seems to have
  2142.           suffered from an overdose of radiation from his computer
  2143.           monitor ;-).
  2144.         - Planetarium Station, P.O.Box 132
  2145.           New York, NY  10024-0132
  2146.         - (212)595-8370
  2147.         - Email: inquisitor@echonyc.com
  2148.         - $16 per year (4 issues)
  2149.  
  2150.     Microcomputer Journal (formerly Computer Craft)
  2151.         - programming and construction articles
  2152.         - 76 N. Broadway, Hicksville, NY  11801
  2153.         - $18.95 one year, foreign $23.00, foreign air mail $76.00
  2154.  
  2155.     Midnight Engineering
  2156.         - 1700 Washington Ave., Rocky Road, CO  81067
  2157.         - (719)254-4553
  2158.  
  2159.     MW Media - Product Directories
  2160.         - Motorola Microcontroller Tools Directory
  2161.           ('94 edition out in 3 weeks)
  2162.         - Motorola 68K Source ('94 edition available now)
  2163.         - Intel Development Tools Handbook ('95 edition just beginning)
  2164.           (survey of commercial development tools for the 8051, 8096,
  2165.           and 80186 lines of Intel microprocessors)
  2166.         - Embedded Intel 386 Directory (released in Aug '94)
  2167.         - Intel 486/Pentium directory (forthcoming in '95)
  2168.         - 8051 Product Directory ('94 edition out in 4 weeks)
  2169.           (survey of various 8051 products)
  2170.         - Hitachi Microcontroller Development Tools Directory
  2171.           (out in '95)
  2172.         - AMD FusionE86 Directory (out in '95)
  2173.           (186,386,486)
  2174.         - AMD 29K Directory (pending in '95)
  2175.         - Low Power Product Directory (out in '95)
  2176.           (3.3. volts and lower)
  2177.         - DSP Directory (released in May '94)
  2178.         - Multimedia CD (hopefully out in '95)
  2179.         - These documents could very well be a "must" if you're into
  2180.           serious development using any of these chips.  If you are
  2181.           "just" a hobbyist, see how the "other half" lives.
  2182.         - FREE to qualified developers
  2183.         - MW Media
  2184.         - Fairmont Plaza, 50 W. San Fernando, #675, San Jose, CA  95113
  2185.         - (408)288-4721   (408)286-4200   FAX: (408)288-4728
  2186.  
  2187.     Nuts & Volts Magazine
  2188.         - A National Publication for the Buying and Selling of
  2189.           Electronic Equipment
  2190.         - 430 Princeland Court, Corona, CA  91719
  2191.         - Mailed third class, USA only:  $17.00 one year
  2192.                                          $31.00 two years
  2193.         - Mailed first class, one year only:  $34.00-USA
  2194.                                               $35.00-Canada/Mexico
  2195.         - Foreign/Air Mail - $70.00;  Foreign/Surface - $39.00
  2196.         - (800)783-4624
  2197.         - Email:  74262.3664@Compuserve.com
  2198.  
  2199.  
  2200. 9.4)  Internet newsgroups
  2201.  
  2202.     Various newsgroups frequently have discussions or information on
  2203.     various microcontrollers.  Among some of the more useful (especially
  2204.     the first 3 newsgroups):
  2205.  
  2206.     comp.robotics
  2207.        Microcontrollers figure heavily in robotics projects.  You will
  2208.        find a lot of information about the subject in this newsgroup.
  2209.        Even if you aren't building a robot, check this newsgroup out.
  2210.        Lots of 68hc11 activity, too.
  2211.  
  2212.     sci.electronics
  2213.     alt.comp.hardware.homebuilt
  2214.        Two good places to find [mostly technical] discussions on
  2215.        microcontroller use and implementation.  Most of the participants
  2216.        are crazy about "rolling their own", and are eager to share their
  2217.        knowledge.
  2218.  
  2219.     comp.realtime
  2220.        Occasional discussions about real-time use of microcontollers.
  2221.  
  2222.     comp.sys.m68k
  2223.        The full line of Motorola 68000 microprocessors is discussed in
  2224.        this newsgroup, including the very powerful and advanced
  2225.        microcontrollers based on this family.
  2226.  
  2227.     comp.sys.6809
  2228.        This newsgroup covers an old-time favorite, the 6809
  2229.        microprocessor, which is commonly used for control applications.
  2230.        Motorola 8 bit microprocessors and microcontrollers (6805, 6811,
  2231.        etc.) are also discussed in this newsgroup.
  2232.  
  2233.     comp.sys.intel
  2234.        Mostly trends and development are discussed in this newsgroup.
  2235.        From time to time you will find a discussion on some obtuse
  2236.        technical problem or feature.  Lately, the participants seem to
  2237.        spend all of their time whining about the Pentium bug.
  2238.  
  2239.     comp.lang.misc
  2240.        Sometimes questions or discussions on different microcontroller
  2241.        topics pop up here.  I guess it's the ".misc" that attracts these
  2242.        questions.
  2243.  
  2244.     comp.ai.fuzzy
  2245.        Fuzzy logic is rapidly becoming an increasingly important aspect
  2246.        of [microcontroller based] control systems.  This group might very
  2247.        well become an important forum for those involved in developing
  2248.        control systems.
  2249.  
  2250.     comp.dsp
  2251.        Discussions on Digital Signal Processsing
  2252.  
  2253.     comp.sys.ti
  2254.        Texas Instruments products discussed here
  2255.  
  2256.     sci.engr.control
  2257.        This forum is for the discussion of control and embedded systems.
  2258.  
  2259.     sci.engr.semiconductors
  2260.  
  2261.  
  2262. 9.5)  Internet sources of information on specific microcontrollers
  2263.  
  2264.     If you are interested in finding sources of information on a specific
  2265.     microcontroller, check out the really fine FAQs ;-) that have been
  2266.     compiled for the more popular microcontrollers.
  2267.  
  2268.       Subject:  PIC microcontrollers
  2269.       Newsgroups:  comp.realtime
  2270.                    comp.robotics
  2271.                    sci.electronics
  2272.                    sci.electronics.repair
  2273.       Archive:  rtfm.mit.edu :  <plus all mirror sites>
  2274.                 /pub/usenet/comp.answers/microcontroller-faq/PIC
  2275.                 /pub/usenet/sci.answers/microcontroller-faq/PIC
  2276.                 /pub/usenet/news.answers/microcontroller-faq/PIC
  2277.       Maintainer:  Tom Kellett
  2278.                    Email: Tom@takdsign.demon.co.uk
  2279.  
  2280.       Subject:  8051 microcontrollers
  2281.       Newsgroups:  comp.sys.intel
  2282.                    comp.realtime
  2283.                    comp.robotics
  2284.                    comp.lang.forth
  2285.                    sci.electronics
  2286.       Archive:  rtfm.mit.edu :  <plus all mirror sites>
  2287.                 /pub/usenet/comp.answers/microcontroller-faq/8051
  2288.                 /pub/usenet/sci.answers/microcontroller-faq/8051
  2289.                 /pub/usenet/news.answers/microcontroller-faq/8051
  2290.       Maintainer:  Russ Hersch
  2291.                    Email: sibit@datasrv.co.il
  2292.  
  2293.       Subject:  68hc11 microcontrollers
  2294.       Newsgroups:  comp.realtime
  2295.                    comp.robotics
  2296.                    sci.electronics
  2297.       Archive:  rtfm.mit.edu :  <plus all mirror sites>
  2298.                 /pub/usenet/comp.answers/microcontroller-faq/68hc11
  2299.                 /pub/usenet/sci.answers/microcontroller-faq/68hc11
  2300.                 /pub/usenet/news.answers/microcontroller-faq/68hc11
  2301.       Maintainer:  Russ Hersch
  2302.                    Email: sibit@datasrv.co.il
  2303.  
  2304.       Subject:  Motorola 68K microprocessor line
  2305.       Newsgroups:  comp.sys.m68k
  2306.       Archive:  bode.ee.ualberta.ca : pub/motorola/general
  2307.                 ftp.luth.se : /pub/misc/motorola/faq
  2308.                 file name of archive is m68kfaq?.zip (? is version)
  2309.       Comments:  also includes information on the 683xxx and 68hc16
  2310.       Maintainer:  Robert Boys - Ontario, Canada
  2311.                    Email: r.boys@genie.geis.com
  2312.                                  or
  2313.                           fboys@uoguelph.ca
  2314.  
  2315.  
  2316.     Several other FAQs have been compiled that address various aspects of
  2317.     microcontroller design and implementation.
  2318.  
  2319.       Subject:  Robotics
  2320.       Newsgroups:  comp.robotics
  2321.       Maintainer:  Kevin Dowling
  2322.                    (412)268-8830
  2323.                    Email: nivek@ri.cmu.edu
  2324.                    Smail: Carnegie Mellon University
  2325.                           The Robotics Institute
  2326.                           Pittsburgh, PA 15213
  2327.  
  2328.       Subject:  Electronics
  2329.       Newsgroups:  sci.electronics
  2330.       Comments:  There are a number of FAQs available in this newsgroup
  2331.                  on various subjects.  Among some of the subjects covered
  2332.                  are:  LCDs, stepper motors, suppliers, etc.
  2333.  
  2334.       Subject:  Real-time
  2335.       Newsgroups:  comp.realtime, comp.answers, news.answers
  2336.       Archive:  rtfm.mit.edu : pub/usenet/comp.realtime
  2337.       Maintainer:  Mark Linimon
  2338.                        Lonesome Dove Computing Services
  2339.                        Roanoke, Virginia
  2340.                    Email: linimon@nominil.lonesome.com.
  2341.  
  2342.       Subject:  Neural Networks
  2343.       Newsgroups:  comp.ai.neural-nets,comp.answers,news.answers
  2344.       Archive:  rtfm.mit.edu : pub/usenet/neural-net-faq
  2345.       Maintainer:  Lutz Prechelt
  2346.                    Email: prechelt@ira.uka.de
  2347.  
  2348.       Subject:  Fuzzy Logic
  2349.       Newsgroups:  comp.ai.fuzzy,comp.answers,news.answers
  2350.       Archive:  rtfm.mit.edu : pub/usenet/fuzzy-logic/
  2351.       Maintainer:  Mark Kantrowitz
  2352.                    Email: mkant+@cs.cmu.edu
  2353.  
  2354.  
  2355. 10)  MICROCONTROLLER FREE SOFTWARE SOURCES
  2356.  
  2357.     This section includes descriptions and references to free
  2358.     microcontroller software.  FTP sites and BBSs contain many quality
  2359.     packages and code samples for free.  For heavy duty use, you might
  2360.     prefer the many commercial packages that are available.  With the
  2361.     public domain (or free) stuff, you're usually on your own.  The
  2362.     commercial packages usually provide extensive documentation and
  2363.     support.
  2364.  
  2365.     If you are looking for commercial software for the 8051, 68hc11, or
  2366.     PIC, then check out the FAQs on these microcontrollers for details on
  2367.     what is available.
  2368.  
  2369.  
  2370. 10.1)  FTP sites
  2371.  
  2372.     The following is a list of the anonymous ftp sites that have source
  2373.     code and programming languages for various microcontrollers.  There
  2374.     are many others that  are not listed here that contains bits and
  2375.     pieces.  Usually you can find them using Archie and searching for
  2376.     variations on the name of the microntroller you are looking for.
  2377.  
  2378.     ftp.pppl.gov (formerly lyman.pppl.gov)
  2379.         - this is a great source of 8051 stuff
  2380.         /pub/8051
  2381.         /pub/incoming - check this out for new untested/unsorted items
  2382.  
  2383.     ftp.mcc.ac.uk
  2384.         - this is a new 8051 ftp site
  2385.  
  2386.     ftp.intel.com
  2387.         - good source of stuff the MCS-51 and MCS-96 families
  2388.         /pub/mcs51 - various development tools and sample code for the
  2389.                      MCS-51 family
  2390.         /pub/mcs96 - various development tools and sample code for the
  2391.                      MCS-96 family
  2392.  
  2393.     nctuccca.edu.tw
  2394.         - mirror of ftp.intel.com
  2395.         - /vendors/Intel
  2396.  
  2397.     ftp.ee.ualberta.ca (preferred address)
  2398.     bode.ee.ualberta.ca
  2399.     wattson.ee.ualberta.ca
  2400.         - HUGE archive of all sorts of stuff on the 68hc11 (lots of other
  2401.           good stuff too!)
  2402.         - you'll have fun mucking around this ftp site, there's piles of
  2403.           stuff here
  2404.         /pub/cookbook
  2405.         /pub/motorola
  2406.         /pub/motorola/68hc11
  2407.         /pub/motorola/mcu11
  2408.  
  2409.     cherupakha.media.mit.edu (cher.media.mit.edu)
  2410.         - HUMONGOUS archive of all sorts of stuff on the 68hc11 including
  2411.           the 6.270 robotics project, Mini Board, F1 board, and more
  2412.           (lots of other good stuff too!)
  2413.         - you'll lose yourself rooting around this ftp site, there's
  2414.           piles of stuff here (assemblers, tools, C compilers, plans and
  2415.           schematics, and many other items)
  2416.         /pub/6270 - tools, docs, schematics, etc. for the MIT 6.270
  2417.           robotics project using a 68hc11-based development system
  2418.         /pub/6811 - software, schematics, etc. for the 68hc11-based F1
  2419.           board
  2420.         /pub/incoming - various unsorted or new items
  2421.         /pub/miniboard - software, docs, schematics, etc. for the 3"x2",
  2422.           68hc11-based Mini Board controller
  2423.  
  2424.     ftp.funet.fi (nic.funet.fi)
  2425.         - this is a good source for various microcontrollers
  2426.         /pub/microprocs/ (subdirectories include: 1802, 6805, 8048,
  2427.            8051, 8096, PIC and many other microprocessors)
  2428.  
  2429.     ftp.sics.se
  2430.         - many assemblers, utilities, and application notes for the PIC
  2431.         - Microchip BBS mirror
  2432.         - ftp site of Memec Scandinavia, Microchip's Swedish agent.
  2433.         /pub/mchipsoft
  2434.  
  2435.     ernie.uvic.ca
  2436.         - files provided by local Motorola representative
  2437.         /pub (subdirectories include: ibm, dsp96k, dsp56100, dsp56k,
  2438.           dsptools, develop, mac, mcu302, mcu332, mcu11, pgmr, mcu16,
  2439.           mcu, market, qa, general, m68k, evm, dsp)
  2440.  
  2441.     wpi.wpi.edu
  2442.         - basic stamp information
  2443.         - PIC "C" compiler
  2444.         /stamp
  2445.  
  2446.     ftp.std.com
  2447.         /vendors/microchip/
  2448.  
  2449.     ftp.luth.se
  2450.         /pub/misc/microchip - PIC information
  2451.         /pub/misc/microchip/stamp/mirror - mirror of wpi.wpi.edu
  2452.         /pub/languages/assembler - various freeware assemblers
  2453.  
  2454.     ti.com
  2455.         read the 00readme file first or you'll be lost
  2456.  
  2457.     hpcsos.col.hp.com
  2458.         /misc/ns32k/beowulf
  2459.  
  2460.     ftp.netcom.com
  2461.         /pub/imagecft - prerelease version of ImageCraft C for 68hc11
  2462.  
  2463.     info@circellar.com - Email (not ftp)
  2464.         - send Email to get information file on services available
  2465.         - all Circuit Cellar INK and BYTE related files available
  2466.  
  2467.     asterix.inescn.pt - FORTH archive
  2468.         /pub/forth
  2469.  
  2470.     ftp.ultranet.com
  2471.         /biz/mchip - PIC information
  2472.         web site: http://www.ultranet.com/biz/mchip
  2473.  
  2474.     ftp.mrc-bbc.ox.ac.uk
  2475.         /pub/microchip
  2476.  
  2477.     ftp.oak.oakland.edu
  2478.         - has information and software for a wide range of
  2479.           microprocessors and microcontrollers
  2480.  
  2481.     ftp.uni-erlangen.de
  2482.         - information on PIC
  2483.         /mounts/epix/public/pub/Multimedia/VideoCrypt/
  2484.             microcontroller/microchip.bbs
  2485.  
  2486.     ftp.armory.com (Steve Walz)
  2487.         - /pub/user/rstevew/8051
  2488.         - /pub/user/rstevew/TB8051
  2489.         - /pub/user/rstevew/incoming
  2490.  
  2491.     ftp.cygnus.com (Jeff Fox)
  2492.     http://www.dnai.com/~jfox (Web site with same information)
  2493.         - source of information and software on the MuP21 Forth
  2494.           microcontroller
  2495.         /pub/forth - MUP21FTP.ZIP includes a software simulator for
  2496.             the MuP21 and and the upcoming F21.
  2497.  
  2498.  
  2499. 10.2)  BBSs
  2500.  
  2501.     The following BBSs have 8051 information:
  2502.  
  2503.     Circuit Cellar, Inc.
  2504.         - contains code from their magazine articles and from the
  2505.           original Circuit Cellar articles in Byte magazine, also
  2506.           contains many other interesting items
  2507.         - The BBS is mentioned in the masthead of each issue (on the
  2508.           table of contents page).  Excerpts from the BBS appear in Ken
  2509.           Davidson's ConnecTime column in every issue with a description
  2510.           of how to access the system at the end of every column.
  2511.         - (203)871-1988
  2512.         - Voice: (203)875-2751
  2513.         - Fax: (203)872-2204
  2514.  
  2515.     Dunfield Development Systems
  2516.         - support for their Micro-C C compiler and development tools
  2517.         - includes a lot of nice goodies - CHECK THIS OUT!
  2518.         - (613) 256-6289
  2519.  
  2520.     Electronics Now
  2521.         - contains code from their magazine articles
  2522.         - (516)293-2283
  2523.         - 1200/2400, 8N1
  2524.  
  2525.     Intel American Marketing Applications Support Bulletin Board System
  2526.         - 16 lines, hi-speed modems (14.4K)
  2527.         - Lots of useful info and files (including design examples)
  2528.         - Full ANSI-BBS with color is recommended, but support for just
  2529.           about all terminal types is provided
  2530.         - 916-356-3600 (24 hours)
  2531.           Auto config: 1200 thru 14.4K Baud
  2532.           8 data bits, no parity, 1 stop
  2533.  
  2534.     Iota Systems, Inc.
  2535.         - Support for their line of hardware and software products
  2536.         - (702)831-4732
  2537.  
  2538.     Don Lekei BBS
  2539.         - support for the PIC line of microcontrollers
  2540.         - (604)597-3479 (Canada)
  2541.  
  2542.     Microchip BBS
  2543.         - support for the PIC line of microcontrollers
  2544.         - Contact by dialing the same number you would use to get to
  2545.           Compuserve at 19200,n,8,1, except that you press +<CR> at the
  2546.           (garbage) prompt, followed by MCHIPBBS as the host (instead of
  2547.           CIS).
  2548.  
  2549.     ED Teck. Pubs BBS
  2550.         - run by Fred Eady who writes for hobbyist magazines
  2551.         - good source of information on the PIC
  2552.         - (407)454-3198
  2553.  
  2554.     Protel (Microchip PIC software support)
  2555.         - (408)243-0125
  2556.  
  2557.     Parallax Inc.
  2558.         - (916)624-7101
  2559.  
  2560.     Motorola (Austin Texas) BBS
  2561.         - terrific, has piles of stuff, only some of which is on
  2562.           bode.ee.ualberta.ca
  2563.         - (512) 891-3733 (Austin, Texas)
  2564.         - V.32 9600 Baud modems w/ MNP-5
  2565.         - 8 Data Bits, No Parity, 1 Stop Bit.
  2566.  
  2567.     Other Motorola BBSs:
  2568.         - Munich, Germany:  49-89-92103-111  (2400 baud)
  2569.         - Stuttgart, Germany:  49-7031-275496  (19200 baud)
  2570.         - San Diego, California:  (619) 279-3907
  2571.         - Toronto, Ontario, Canada:  (416) 497-8989
  2572.  
  2573.     Philips Semiconductor (parent company of Signetics)
  2574.         - support for: standard logic, programmable logic,
  2575.           in-car electronics (planned), 8 and 16 bit microcontrollers,
  2576.           I2C software, third party software, discrete semiconductors,
  2577.           cross assemblers (general), RF (planned)
  2578.         - PHIBBS is located in the Netherlands: +31-40-721102
  2579.         - maximum 14400 baud / V42bis
  2580.         - 24 hours a day available
  2581.         - Help desk: +31-40-722749  (9.00 AM - 16.00 PM CET)
  2582.  
  2583.     Philips Semiconductors (Signetics)
  2584.         - support for their 8051 variants
  2585.         - contains many good source code items
  2586.         - partially mirrored on ftp.pppl.gov and nic.funet.fi
  2587.         - (800)451-6644 or (408)991-2406
  2588.  
  2589. 10.3)  Mailing Lists
  2590.  
  2591.     listserv@oberon.com
  2592.         - mailing list for the Mini Board and 6.270 board
  2593.         - send a message containing the word "help" for directions
  2594.         - mailing list address:  robot-board@oberon.com
  2595.         - maintainer:  gkulosa@oberon.com
  2596.  
  2597.     listserv@hipp.etsu.edu
  2598.         For information, send empty message.
  2599.         To subscribe, send message with the body:
  2600.            subscribe mc68hc11 your_real_name
  2601.  
  2602.     listserv@netcom.com - mailing list for Imagecraft C
  2603.         to join the mailing list, send the message "subscribe icc11-list"
  2604.  
  2605.     listserv@mitvma.mit.edu
  2606.         to join, send the message "SUB PIC"
  2607.         list address is: PIC@mitvma.mit.edu
  2608.         to receive the mailing list as a digest, send the message
  2609.            SET PIC DIGEST
  2610.  
  2611.     majordomo@first.gmd.de
  2612.         to join, send the message "subscribe crossgcc <your address>"
  2613.            in the message body
  2614.         Cross GCC mailing list - for building a cross gcc compiler for
  2615.            your embedded system.
  2616.  
  2617.     Philips-News@InetBSystems.us.com - Email (not ftp)
  2618.         - send Email with "subscribe" in the subject field to be put
  2619.           on list for newsletter
  2620.     Philips-archive@InetBSystems.us.com - Email (not ftp)
  2621.         - send Email message with the word "help" in the subject line to
  2622.           learn how to access the archive
  2623.     Philips-forum-request@InetBSystems.us.com  - Email (not ftp)
  2624.         - send an Email message with the word "subscribe" in the subject
  2625.           line to participate in the forum, and receive usage
  2626.           instructions and guidelines
  2627.     Philips-Info@InetBSystems.us.com - Email (not ftp)
  2628.         - send Email message to get information on all of Philips Email
  2629.           services
  2630.  
  2631.     MISC@pisa.rockefeller.edu
  2632.     MISC-d@pisa.rockefeller.edu (digested list)
  2633.         - a message with "subscribe" on the subject line to one of these
  2634.           addesses you will get you signed up
  2635.         - a message with "help" on the subject line you will get info on
  2636.           how the mail list works
  2637.  
  2638.  
  2639. __________________________________________________________
  2640.  
  2641. I disclaim everything.  The contents of this article might be totally
  2642. inaccurate, inappropriate, misguided, or otherwise perverse - except for
  2643. my name (hopefully I got that right).
  2644.  
  2645. Copyright (c) 1995 by Russell Hersch, all rights reserved.
  2646. This FAQ may be posted to any USENET newsgroup, on-line service, or BBS
  2647.   as long as it is posted in its entirety and includes this copyright
  2648.   statement.
  2649. This FAQ may not be distributed for financial gain.
  2650. This FAQ may not be included in commercial collections or compilations
  2651.    without express permission from the author.
  2652.  
  2653. -----------------------------------
  2654. Russ Hersch - sibit@datasrv.co.il
  2655.