Embedded Programming

Format: Lecture.

Assignment: (3h) Write a firmware for an electronics board using an 8bit microcontroller that uses an input and an output device. For example the hello-board from Electronics Design using the LED and Button from the board.

Learning Outcomes:

Upon successfully completing this class students will be able to:

  • Read a microcontroller datasheet

  • Understand the differences between the various microcontrollers available on the market

  • Understand the requirements of embedded software and be able to address simple embedded programming problems

  • Write, upload and debug a firmware for a microcontroller

  • Perform bit-wise operations and implement protocols using bit-banging

  • Make use of core concepts like interrupts, timers and registers

  • Explore and use the capabilities of the most popular digital components

  • architectures

    • Harvard von Neumann
    • RISC, CISC
    • microprocessor, microcontroller
    • FPGA, CPLD
    • spatial
  • 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, mbed
    • PSoC, xCORE, Propeller
  • vendors

    • Octopart
    • Digi-Key
    • Mouser
    • Newark
    • Farnell
    • SparkFun
    • Adafruit
  • AVR processors

    • ATtiny10
    • ATtiny45V
    • ATtiny44A
    • ATmega328P
    • ATmega16U2
    • ATxmega16E5
    • ATxmega16A4U
  • tutorials

  • data sheets

  • packages

    • DIP
    • SOT
    • SOIC
    • TSSOP
    • TQFP
    • LQFP
    • MLF, CSP, BGA
  • clocks

    • types
      • RC (10%, 1% calibrated)
      • ceramic (0.5%)
      • quartz (50 ppm)
    • PLL
    • instruction cycles
    • overclocking
  • in-system development

    • ISP (header, pads, clip)
    • bootloader
      • Arduino, DFU, Micronucleus
    • JTAG, PDI
    • ICE
  • programmers

    • ISP
      • FabISP
      • avrdude
    • JTAG, PDI
      • Atmel-ICE
  • assembly language

    • hex file
    • instruction set, opcodes
    • mnemonics, directives, expressions
    • gavrasm
    • avr-as
    • inline
  • C

    • tutorial
    • GCC
    • AVR Libc
      • modules types math
    • avr-libc, binutils-avr, gcc-avr
    • CrossPack
    • Atmel Studio
  • debugging

    • "printf"
    • gdb, ddd, Insight
    • Atmel Studio
  • host communication

    • RS232
      • bit timing
    • VT100/ANSI/ISO/ECMA terminal
      • Screen Kermit Minicom
      • pySerial miniterm.py rx.py term.py
      • npm serialport
    • 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
  • XMEGA

    • features differences coding
    • toolchain
      • ppa
      • Atmel Linux Windows
      • OS X
    • echo hello-world
      • hello.ftdi.16E5.cad board components traces interior
      • hello.ftdi.16E5.blink.c hello.ftdi.16E5.blink.make
      • hello.ftdi.16E5.ring.c hello.ftdi.16E5.ring.make
      • hello.ftdi.16E5.echo.c hello.ftdi.16E5.echo.make
  • library

  • IDE

    • Atmel Studio
    • Eclipse AVR
    • Firefly
    • Scratch
    • Modkit
  • boards

    • AVR
      • Atmel
      • Adafruit Olimex Polulu
      • Arduino
        • board + C libraries + IDE + bootloader + header
        • Fabkit Fabio
        • hello.arduino.328P.cad board components traces interior
          • Blink.pde boards.txt programming
          • hello.arduino.328P.blink.c hello.arduino.328P.blink.make programming
        • ATtiny Xmegaduino
        • Codebender Ardublock
    • PSoC
    • ARM
      • Rasberry Pi
      • BeagleBone
      • PandaBoard
      • Snappy
  • Interpreters

    • Python
    • BASIC
    • FORTH
    • AVRSH
    • Javascript
      • Espruino Tessel iop.io
  • STM32

    • processor
      • STM32F3 data sheet
    • toolchain
      • gcc-arm-none-eabi
      • OpenOCD QStlink2 stlink
    • programmer
      • ST-Link V2
    • software
      • ST
      • STMCube
    • board
      • STM32F3Discovery
        • blink.zip programming
      • Nucleo
  • assignment

    • read a microcontroller data sheet
    • program your board to do something, with as many different programming languages and programming environments as possible
    • extra credit: experiment with other architectures

results matching ""

    No results matching ""