Using PHP pspell Spell Check Functions with a Custom Dictionary
Book Review: How to Implement Design Patterns in PHP
A Simple ISAPI Filter for Authentication on IIS
Development Resource Project
Getting Set up with Ogre 3D on Ubuntu
Native Linux Space Warfare: Freespace 2

Choosing an Arduino Variant

Saturday, 3 March 12, 10:52 am
The Arduino is a microprocessor module released under Open Source principles, meaning that the designs are published and may be implemented with or without additional modification by anyone without having to pay licence fees. The core of the Arduino design is the Atmel megaAVR CPU, a proprietary CPU produced by Norwegian company Atmel Semiconductor. The Arduino board adds I/O support, exposing the megaAVR's I/O lines as standard connectors, which allow the board to be easily connected to a range of add-on modules, known in the Arduino world as shields.

The megaAVR CPU


The megaAVR is an 8-bit RISC CPU that has 4 KiB to 256 KiB of on-chip flash memory where programs are stored. External flash memory is supported, however code can only be executed from the internal flash memory. The AVR naming convention indicates how much flash is on the chip e.g. ATmega 168 has 16 KiB, ATmega 328 has 32 KiB, ATmega 2560 has 256 KiB. There is also up to 16 KiB of static RAM on the CPU for program data and which also holds the chip's registers in the first addressable 96 bytes. The registers are all 8-bit, with the first 32 being processor registers, and the following 64 I/O registers. Note that although the registers have additional opcodes for fast arithmetic and other specialised register functionality, because they are implemented in the single SRAM memory area, programs can, if desired, treat them just the same as regular SRAM storage.

In addition to the internal flash and SRAM, the megaAVR typically has up to 4 KiB of traditional EEPROM on the die, but because this is accessed just the same as an external module, using special registers and opcodes, it is is much slower than flash, and is probably only useful for certain 'hard coded' data.
 
Leave Comment

/xkcd/ City Nicknames

About This Page