In this course you will learn the basics of designing, interfacing,
configuring, and programming embedded systems. We will make use of the
Arduino platform, which is an inexpensive, popular embedded system
used by hobbyists, researchers, and in industry, to implement the
techniques learned in class. By the end of the course you will have
mastered the basics of embedded system design and programming. This
course will help to prepare you for cutting edge careers in industry
and research.
Assignment
| Due Date
|
Course Survey
| Weds, Jan 13th, 5pm
|
HW 1 (pdf,code)
| Start of class, Thurs, Jan 21
|
HW 2 (pdf)
| Start of class, Tues, Feb 2nd
|
Lab 1 (pdf,html)
| Thurs, Jan 28th in class
|
HW 3 (pdf,code)
| Start of class, Thurs, Feb 11th
|
Lab 2 (pdf,html,lab2_button_count.ino)
| Thurs, Feb 11th in class
|
Test1 from prior years: 2012, 2013, 2014, 2015
| For review
|
HW 4 (pdf,code)
| Start of class, Thurs, March 3rd
|
Lab 3 (pdf,html)
| Thurs, Feb 11th in class
|
Project 1 (pdf)
Robot Building Instructions (pdf)
|
Checkpoint, Thursday, March 10 (in class)
Competition, Thursday, March 17 (Schorr 2nd floor, 8:00-10:00)
Written report, Thursday, March 31 start of class
Top Times
|
HW 5 (pdf)
| Start of class, Tues, April 12th
|
Project 2 (pdf)
Project 2 Bracket
|
Wall Checkpoint, Thursday, April 14, 2016 (in class)
Obstacle Checkpoint, Tuesday, April 19, 2016 (in class)
Competition, Tuesday and Thursday, April 26 & 28, 2016
Report, Video, and Surveys, Friday, April 29, 2016 at noon
|
Lab 4 (pdf,html*,blink irq)
VCNL4000 Ranger Info:
Sparkfun,
Datasheet,
Application Note,
Sample Code
| Thursday, April 7
|
Test2 from prior years: 2012, 2013, 2014, 2015
| For review
|
For assignments that require electronic code submission, you can do so at:
Week |
Class Topics |
Labture |
Reading |
Week 1, Jan 11 |
course intro, c programming |
|
R2.1, R2.2, R2.4 |
Week 1 Additional Readings: |
Basic C Types
More on Basic C Types
Bit Operations
More Bit Operations
Fixed width types
Why use uint8_t
C Pre-Processor and Macros
How not to write code and the output (really, try compling it)
Pointers
Function Pointers
Apollo Guidance Computer
|
Week 2, Jan 18 (NO CLASS Monday) |
embedded system design, arduino intro, basic circuit diagrams |
|
R2.5, R2.6, R2.7, R2.8, W1.1, W1.2 |
Week 3, Jan 25 |
instruction sets, registers and mem access, digital I/O |
Arduinos |
W2.1, W2.2, R6.* |
Week 2 and 3 Additional Readings: |
Basic circuit elements
How to read a schematic
Arduino Uno R3 schematic
How to read a datasheet
Atmega328 datasheet
Register-based digital I/O
Another register-based digital I/O (just make sure to use bit operations (|=,&=) and not binary value!)
Arduino-function digital I/O
AVR memory map overview (see datasheet as well)
Directly accessing memory/registers with C macros (but for ARM, not AVR)
Directly accessing memory in assembly
Program counter (general info)
AVR program counter
Reading the program counter (not straight forward, but sometimes useful)
|
Week 4, Feb 1 |
registers and memory, debugging |
|
W3.1, R7.* |
Week 5, Feb 8 |
debugging, timers |
timers and I/O |
R4.* |
Week 4 and 5 Additional Readings: |
Suggestions for debugging ES
More debugging suggestions
JTAG
Another JTAG link
Yet another JTAG link
Viewing assembly output
Arduino build process overview
General info on timers
AVR timers
|
Week 6, Feb 15 |
timers and review |
|
test 1(tentative) |
Week 7, Feb 22 |
timers, PWM, and analog to digital converters (A2D) |
PWM and servos |
R8.* |
Week 6 and 7 Additional Readings: |
Read section 16 in the datasheet on the Timer/Counter1 with PWM
Details of Arduino millis fuction (and how it uses Timer0)
Sparkfun PWM
Arduino PWM (including analogWrite)
Wikipedia PWM
Fast versus Phase/Freq Correct PWM
How servos work
More on how servos work
Wikipedia ADC
Sparkfun ADC
More ADC
|
Week 8, Feb 29 |
CPU bus, communication protocols (UART, SPI, RS485) |
A2D |
W4.1, R10.1 to R10.1.3 |
Week 9, March 7 |
project |
|
|
Week 8 and 9 Additional Readings: |
Parallel versus Serial, UART (sparkfun)
Serial and Parallel Comms (a bit of history too)
Serial Communication (Wikipedia)
Parallel Communication (Wikipedia)
Serial Comms, UART, RS232, RS485
UART (Wikipedia)
UART (sparkfun)
More UART (but beware, code examples for a different processor)
Interfacing a UART to USB-UART converter (TTL, RS232, USB, etc)
SPI (sparkfun)
SPI (wikipedia)
SPI (arduino)
|
Week 10, March 14 |
|
project 1 competition |
|
NO CLASS SPRING BREAK |
Week 11, March 28 |
interrupts |
interrupts, communication |
W3.1.4, W3.2, R9.* |
Week 12, April 4 |
I2C, peripherals, sensors |
i2c |
R10.1.2 |
Week 11 and 12 Additional Readings: |
Interrupts
More Interrupts
Even More Interrupts
Interrupts, very broadly (wikipedia)
List of all interrupts on AVR
AVR Libc Interrupt Reference
AVR pitfalls of reentrant code
I2C (warning code examples not for Arduino)
I2C (sparkfun)
I2C (wikipedia)
I2C aka Wire Library (arduino)
|
Week 13, April 11 |
Embedded Operating Systems, review |
project checkpoint |
W6.1, W6.2, W6.3 |
Week 14, April 18 |
power management, embedded algorithms, program optimization |
project checkpoint, test 2(tentative) |
W5.5, W5.6, W5.7 |
Week 15, April 25 |
final project competition |
final project competition |
|