Changes RSS

**This is an old revision of the document!** ----

A PCRE internal error occured. This might be caused by a faulty plugin

====== Microcontroller concepts ====== ===== The difference of processors and controllers ===== A microprocessor is very generally speaking a processing device, with little to no supporting elements included on the device itself. Reduced to the basic microprocessor concept, it will be a device with an instruction set, controlling registres, general registers and processing units like Arithmetic Logic Unit (ALU), and finally external connections in form of data bus, address bus and interrupt pins. A microprocessor requires external component to implement memory (RAM), storage (ROM, FLASH) and for interfacing with I/O of various forms. A microcontroller integrates a microprocessor with several supporting elements in the same package. A microcontroller will typically include RAM, ROM and commonly FLASH memory, as well as I/O interfacing (digital ports, A/D converters, timers, PWM generators, serial UART) in a single package. The full data and address busses of the microprocessor is commonly not available as pins on a microcontroller. Instead, interfacing is done though the integrated I/O ports. The microprocessors can be constructed as very high-performance parts, and their nature is a very generalised one, allowing the microprocessor to be used in complex systems, or built into very special purpose ones. This generic nature means a microprocessor-based system will require many supporting systems physically external to the processor itself. These externals may be of very high-performance and may even be to some extent autonomous, offloading processing from the processor. This naturally comes at the cost of complex physical and electrical constructions. Compared to this, the microcontroller is typically relatively low-performance, and has a reduced and sometimes specialized instruction set. This is offset by the fact that a lot of I/O interfacing and supporting functionallity is built into the same package as the processing core. This allows for compact, simple physical and electrical designs, but limits the practical use of microcontrollers to embedded systems, and specialized control systems. Microcontrollers are excellent devices to use in control-systems because of their I/O bound nature, low parts count and realtive low price. When looking to construct a general-purpose and/or high-performance system, you are probably looking at using a microprocessor. On the other hand, when developing a dedicated control system, you will probably be using a microcontroller, and by that, reducing development time, complexity and cost. ===== Families of microcontrollers ===== There are several families of microcontrollers. Typically, each family has a limited, most often one, manufacturer, and this manufaturer is most often the original developer of the controller family. The most commonly used controller families in embedded hobby electronics are as far as I can tell: ==== AVR ==== Developed my Atmel, the AVR family is a quite popular modified Harvard architecture 8-bit RISC. The AVR architecture was conceived by two students at the Norwegian Institute of Technology (NTH) Alf-Egil Bogen and Vegard Wollan. AVR microcontrollers are today split in a set of (8 bit) sub-families: * **tinyAVR**\\ the ATtiny series, limited peripheral set * **megaAVR**\\ the ATmega series, extended instruction set, larger program memories, extensive peripheral set * **XMEGA**\\ the ATxmega series, extended performance features, such as DMA, "Event System", and cryptography support, extensive peripheral set with DACs * **FPSLIC**\\ AVR with FPGA ==== PIC ==== The PIC family is very popular among hobbyists and industry developers alike, and ha a wide variety of devices with varying interfaces and capabilities. These microcontrollers are supplied by Microchip, who currently holds the patents and trademarks for PIC technology. Like AVR, PIC is based on ah Harvard architecture, where code and data space is separated. The PIC technology derives from the PIC1640 originally developed by General Instrument's Microelectronics Division. The name PIC initially referred to "Programmable Interface Controller" PIC controllers are available in several families: * **PIC10**\\ 8 bit architecture, 10 bit code-space, low pincount, low performance * **PIC12**\\ 8 bit architecture, 12 bit code-space, typically low pincount * **PIC16**\\ 8 bit architecture, 14 bit code-space, versatile and commonly used * **PIC18**\\ high-performance 8-bit architecture with 16 bit code-space. Quite a lot of developers who used PIC16 previously is now moving to PIC18. * **PIC24 and dsPIC**\\ 16 bit architecture, high performance devices. Mulitple registers make them very powerful compared to 8-bit PIC's * **PIC32**\\ These differ from previos PIC's by being Von Neumann devices, not Harvard. A leap up from PIC24, they 32 bit devices with very high MIPS and capabilities. The first sets of PIC32 devices are pin-compatible with PIC24. ==== ARM ==== The ARM is a 32-bit reduced instruction set computer architecture developed by ARM Holdings. It was known as the Advanced RISC Machine, and before that as the Acorn RISC Machine, and initially comes from a microprocessor for desktop computers produced by Acorn Computers. The ARM architecture is provided as a series of versions and sub-families, and the ARM7/Cortex-M3 is the one typically integrated in ARM based micro-controllers. Being native 32-bit devices, they have a computational performance edge over other microcontrollers, where 8 and 16 bit is the norm. However, the programming principles of the ARM, like pipelining and unfamiliar instruction set are often seen as obstacles compared to the relatively simple programming of other, simpler devices. ARM microcontrollers are provided by several manufacturers, most notably: * **Altera**\\ Supplying FPGA's with ARM cores * **Freescale**\\ The MAC7100 family of controllers geared towards automotive use * **Philips/NXP**\\ Most notable microcontroller are the LPC2000-series ARM based, high performance, high-memory devices. Highly rated, but I am told they are not trivial to develop for. Personally, I have no experience working with ARM-based microcontrollers. If you have information fitting this section that you would like to have added, please contribute by registering and editing, or simply send me an email... ==== STM ====