= Arduino Nano = A very small arduino product, better for hobby embedding see [[arduino_techniques|Programming Techniques]] == Features == * ATMEL AVR ATmega328P microcontroller * 8 bit @16Mhz * 2Kbytes SRAM * 32Kbytes flash * 1Kbytes EEPROM * Three on board LED's * 20 IO pins * 6 PWM and 6 ADC == Notes == * WHEN UPLOADING BE SURE TO SET BOARD TO ATMEGA328OLD - this is the atmega328old for BOARD_SUB in the makefile === Memory === * AVR instructions are 16 or 32bits wide, therefore the flash is 16K x 16 * EEPROM has endurance of ~10000 write cycles * Program counter is 14 bits wide * First 32 memory locations (0x0000 - 0x001F) are registers * Next 64 registers are standard IO (0x0020 - 0x005F) * Next 160 are extended IO (0x0060 - 0x00FF) * Everything else is SRAM (0x0100 - 0x08FF) === IO === * GPIO pins * Have a Data Direction Register (DDR) - Sets if data should go in or out * Is kept up via a [[multiplexer]] to decide which bit === Pins === Pins are controller by the atmega's ports. Each port has different port registers. Each bit of the 8 bit register controls a single pin. Port D controls pins 0 through 7, C controls the analog pins, and B controls 8 through 13 * PortC - Port C data regiser - 0x28 - R/W 8bits * DDRC - Port C data direction register - 0x27 - R/W 8bits * PINC - Port C input pints address - 0x26 - R 8bits * PortB - Port B data register - 0x25 - R/W 8bits * DDRB - Port B data direction register - 0x24 - R/W 8bits * PINB - Port B Input pins address - 0x23 - R 8bit Same pattern: * PortD - 0x2B - 0x29 === Interrupts === Interrupts are the same as OS typical interrupts, controlled by the Interrupt lookup table. On this device the ILT is instead a control register. [[embedded]]