architectures Harvard, von Neumann RISC, CISC microprocessor, microcontroller FPGA ALA memory registers SRAM DRAM EEPROM FLASH fuse peripherals A/D comparator D/A timer/counter/PWM USART USB ... word size 8 16 32 64 families 8051 PIC MSP AVR ARM STM32 BCM SoC vendors Octopart Digi-Key Mouser Newark Farnell SparkFun AVR processors ATtiny10 ATtiny45V ATtiny44A ATmega168A ATmega32U4 data sheets packages DIP SOT SOIC TSSOP TQFP LQFP MLF, CSP, BGA clocks RC (10%, 1% calibrated) ceramic (0.5%) quartz (50 ppm) in-system development ISP (header, pads, clip) bootloader JTAG, debugWire ICE programmers ISP AVRISP FabISP hello.ISP.44.cad board components traces interior firmware avrdude JTAG, debugWIRE Dragon assembly language hex file instruction set, opcodes mnemonics, directives, expressions avr-as gavrasm C AVR Libc GCC avr-libc, binutils-avr, gcc-avr WinAVR CrossPack Atmel Studio host communication RS232 bit timing VT100/ANSI/ISO/ECMA terminal Kermit Minicom term.py USB software hardware FTDI cable libFTDI echo hello-world hello.ftdi.44.cad board components traces interior programming hello.ftdi.44.echo.c hello.ftdi.44.echo.c.make hello.ftdi.44.echo.interrupt.c hello.ftdi.44.echo.interrupt.c.make hello.ftdi.44.echo.asm hello.ftdi.44.echo.asm.make IDE Atmel Studio Eclipse AVR Arduino C libraries + IDE + bootloader + board Fabkit Fabio hello.arduino.168.cad board components traces interior programming Blink.pde hardware/hello.arduino/boards.txt hello.arduino.168.blink.c hello.arduino.168.blink.make ATtiny Firefly Scratch Modkit Interpreters Python BASIC FORTH AVRSH debugging "printf" Atmel Studio gdb, ddd, Insight STM32 processor STM32F103 data sheet manual toolchain OpenOCD apt-get install openocd apt-get install gcc-arm-linux-gnueabi cd /usr/bin sudo echo 'exec arm-linux-gnueabi-gcc -nostdlib $*' > arm-none-eabi-gcc sudo echo 'exec arm-linux-gnueabi-ld -nostdlib $*' > arm-none-eabi-ld sudo chmod a+x arm-none-eabi-gcc arm-none-eabi-ld for i in objcopy ar as gcov gprof rm objdump ranlib readelf size string strip; do sudo ln -s arm-linux-gnueabi-$i arm-none-eabi-$i; done programmer ARM-USB-TINY-H software ST Maple board STM32-H103 programming blink.c Makefile stm32.ld core_cm3.h system_stm32f10x.h stm32f10x.h stm32f10x_conf.h stm32f10x_gpio.h stm32f10x_gpio.c stm32f10x_flash.h stm32f10x_flash.c stm32f10x_rcc.c stm32f10x_rcc.h assignment read a microcontroller data sheet program your board to do something, with as many different programming languages and programming environments as possible