MAS 863
How To Make (almost) Anything
2010

Microcontroller Programming

architectures
   Harvard, von Neumann
   RISC, CISC
   microprocessor, microcontroller
   FPGA, RALA

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
   AVR
   ARM
   STM32

processors
   ATtiny10
   ATtiny45V
   ATtiny44A
   ATmega328
   STM32F103C8T6

packages
   DIP
   SOT
   SOIC
   TSSOP
   TQFP
   MLF

vendors
   Octopart
   Digi-Key
   Mouser
   Newark
   Farnell

clocks
   RC
   ceramic
   quartz

assembly language
   hex file
   instruction set, opcodes
   mnemonics, directives, expressions
   avr-as
   gavrasm

C
   AVR Libc
   avr-libc, binutils-avr, gcc-avr
   WinAVR
   CrossPack

IDE
   AVR Studio
   AVR Eclipse

languages, interpreters, scripting
   Basic, Python, ...
   Processing Wiring Arduino
   Firefly
   Modkit
   Scratch

in-system development
   ISP
   ICE
   JTAG
   debugWire
   bootloader

programmers
   parallel: bsd
   serial: dasa
   USB: AVRISP, FabISP
   JTAG, debugWIRE: Dragon

debugging
   "printf"
   AVR Studio
   ddd, gdb, 
   gdb-avr, avarice

serial communications
   RS232
   FTDI
   VT100/ANSI/ISO/ECMA terminal
   Kermit
   Minicom
   term.py

serial echo
   Eagle
   hello.ftdi.44.cad
      cad.py
      cad_png, cad_path
   hello.ftdi.44.components.png
      hello.ftdi.44.top.png
         png_path hello.ftdi.44.top.png out.path 1 .4 4
         path_rml out.path out.rml 5 25 25 -.1 1
         rml_move 25 25
         rml_send out.rml
      hello.ftdi.44.board.png
         png_path hello.ftdi.44.board.png out.path 1 .8 1
         path_rml out.path out.rml .5 25 25 -1.6 1
         rml_move 25 25
         rml_send out.rml
   hello.ftdi.44.echo.c
      hello.ftdi.44.echo.c.make
         make -f hello.ftdi.44.echo.c.make
         sudo make -f hello.ftdi.44.echo.c.make program-avrisp2-fuses 
         sudo make -f hello.ftdi.44.echo.c.make program-avrisp2
   hello.ftdi.44.echo.asm
      hello.ftdi.44.echo.asm.make
         make -f hello.ftdi.44.echo.asm.make
         sudo make -f hello.ftdi.44.echo.asm.make program-avrisp2
   hello.ftdi.44.echo.interrupt.c
      hello.ftdi.44.echo.interrupt.c.make
         make -f hello.ftdi.44.echo.interrupt.c.make
         sudo make -f hello.ftdi.44.echo.interrupt.c.make program-avrisp2

assignment
   - read the ATtiny44 data sheet
   - add a button and LED to the serial echo hello-world board
   - program them to do something

gurus
   PCB design
      CBA shop section: Ed Baafi
      Arch. shop section: Jie Qi
   microcontroller programming
      CBA shop section:
      Arch. shop section:

lab sections
   PCB design
      CBA shop section: Rehmi Post
      Arch. shop section: David Cranor
   microcontroller programming
      CBA shop section: David Mellis
      Arch. shop section: David Carr