
architectures Harvard, von Neumann RISC, CISC microprocessor, microcontroller memory registers SRAM EEPROM FLASH fuse peripherals A/D comparator D/A timer/counter/PWM USART USB ... word size 8 16 32 64 families 8051 PIC MSP ARM AVR, AVR32 processors ATtiny10 ATtiny45 ATtiny44A ATmega88PA ATmega1284P AT32UC3B164 packages DIP SOIC TSSOP TQFP MLF vendors Digi-Key Mouser Newark clocks RC ceramic quartz assembly language hex file instruction set, opcodes mnemonics, directives, expressions AVR Studio avr-as gavrasm C AVR Libc avr-libc, binutils-avr, gcc-avr WinAVR CrossPack languages, interpreters, scripting Basic, Python, ... Scratch, Modkit, ... Processing Wiring Arduino in-system development ISP ICE JTAG debugWire bootloader programmers parallel: bsd serial: dasa USB: FabISP JTAG, debugWIRE: Dragon debugging "printf" AVR Studio ddd, gdb, gdb-avr, avarice serial communications RS232 term.py VT100/ANSI/ISO/ECMA terminal Kermit Minicom serial echo hello.echo.44.cad hello.echo.44.asm hello.echo.44.c makefile tiny44, use 20 MHz xtal, bsd cable: avrdude -p t44 -c bsd -U lfuse:w:0x7E:m tiny 44, load hex file, bsd cable: avrdude -p t44 -c bsd -U flash:w:hello.echo.44.hex assignment - read an AVR data sheet - make serial and programming cables - add (at least) a button to the serial echo hello-world board - modify the serial echo assembly program to respond to the button - modify the serial echo C program to respond to the button