ECE 473/573 - System Design with Microcontrollers
CRN 12202/12203 - Fall 2021


Lecture:
  Monday, Wednesday 12:00-1:50 pm; KEC 1001

Lab:
   W 0900-1150 : Vlad, Jacob; DEAR208
   W 1400-1650 : Tingwei,Vlad ; DEAR208
   F 1100-1350 : Jacob; DEAR208
   F 1400-1650 : Tingwei,Vlad ; DEAR208

(Note: Remove "SPAM" from email addresses)
Instructor:
  Roger Traylor
  Office: KEC3095 (working from home)
  E-mail:traylor@oregonstateSPAM.edu
  Office Hours: email me

TAs:
Vladimir Vesely veselyv@oregonstate.edu
  Office: DB203
  E-mail:veselyv@oregonstateSPAM.edu
  Office hours by email appointment

Tingwei Zhang zhangtin@oregonstate.edu
  Office: DB203
  E-mail:zhangtin@oregonstateSPAM.edu
  Office hours by email appointment

Jacob Cook cookjac@oregonstate.edu
  Office: DB203
  E-mail:cookjac@oregonstateSPAM.edu
  Office hours by email appointment


About This Class

The purpose of this course is to equip students to competently design small, embedded microcontroller systems. This course uses a microcontroller as a component in electronic system design. Our target microcontroller, the Atmel ATMega128, provides extensive I/O and peripherals. It will be considered as a flexible logic component to be embedded into a system.

This is a design course. This means that you will be expected to show considerable creativity, resourcefulness and persistence. You will need to read long datasheets, improvise around problems, and extract information from obscure sources. You will need to apply material from many of the courses you have already taken. You will have to find solutions on your own from incomplete specifications. Welcome to the real world of design.

There is a considerable reading load for this class. Consider this typical for doing non-trivial design work. The number of pages is large and the material can be obtuse. I will not be looking for recall of bit-by-bit details, but clear understanding of concepts and how to apply them. Quasi-weekly self evaluations may be provided to check your understanding.

Lab assignments will require a detailed design based on a general specifications. Step-by-step instructions are not provided. Detailed designs will be generated by the student. Complete designs to be graded include C and/or assembly language code, digital and analog circuit schematics, and documentation.

I will expect your in-class participation. Some of you will have innovative solutions and approaches that need to be shared. Be prepared to voice your opinion, show off your hardware and explain your code.

You may work in groups on homework and projects if you wish. Sharing of design approaches, philosophy, flow charts or coding ideas is strongly suggested. However, sharing of detailed information such as design calculations, or actual code is not approved and will meet with the strongest action that I can bring. Your project represents your individual work, not the product of group work.

A mail reflector (or list) for the class will be established by the beginning of class. The mailgroup is how I communicate with you outside the classroom. It can also be used as an interactive forum where you discuss problems and solutions. Such usage is encouraged. Students who register early for ECE473/573 are automatically added to the class mail list. You may initially not be on the if you register late. You should be added within a day or so. The name of the class list for ECE473/573 is: ece473-001-f21@engr.NOSPAM.edu (NOSPAM = oregonstate). You will not be able to post to this list from any other than your engr account.

Wherever you do your code development, back it up. Many sad stories here. Back up disks are cheap.

Commit yourself to learning either vim or emacs. To write code, you need to use a programming editor. I can almost guarantee you are surely going to do a lot of programming in your career. So use an efficient tool. So,... don't fight it, once you catch on, you will never go back. I do all my writing in vim.


For Fall 2021

I will be teaching this class remotely from home. This was not my choice but one made by the drugs I've been taking since a bone marrow transplant a few years ago. In short, I have no antibodies whatsoever for COVID-19. I will be using the TAs as my stand-in for class. They will help facilitate my teaching there and I expect that you give them the respect you give me. I will be able to see you via Zoom so we can have some interaction as class goes by. If my status changes (my doctor and I are working on it) I will very gladly be back in class and especially in lab. I'm a lab rat at heart.


Schedule and Assignments


Period Date Lecture Topics Lab Work Supplental Reading
1 Wednesday
Sept 22
Intro to ECE473
Differences in Embedded Design
Mega128 Overview
Schematic Diagrams
Lab 1 - Tool Testdrive
  -Due in lab, 9/29-10/1 (1 wk)
lab1_code.c
Makefile
ATmega128 Datasheet
  -pgs. 0-11, (upto ALU section)
AVR brings RISC to 8-bit World
C compiler for AVR
Efficient C Coding for AVR
2 Monday
Sept 27
Editing with vim
Videos:
  -Getting in and out of Vim
  -Moving around in Vim
  -Adding and deleting in Vim
  -Dot, make, split, shell commands
Inclass exercise:
  -newkeyer.c .vimrc
Port I/O
Video: ESD Diode chalktalk
Video: ESD Diode conduction chalktalk
Inclass Demo:
  -Floating inputs, ESD diodes, Schematics
Lab 2 - LED & Pushbuttons
  -Due in lab, 10/13-10/15 (2 wks)
Lab 2 Skeleton code
Schematic Notes
Example LED display test code
Prototyping Techniques
AVR Datasheet
  -pgs. 5-7, Pin Descriptions
  -pg. 318, DC Characteristics
  -pgs. 66-70, I/O Ports
About ESD Diodes
What is ESD? (pgs2-3)
Basic vi help
Vim for C programmers
3 Wednesday
Sept 29
Switch Debouncing
Inclass Demo:
  -Switch bounce on scope
  -Switch bounce effect on software
Inclass Exercise: download_script
Debugging Techniques
Discussion of Lab 2
  -Time multiplexing LED display
  -Scanning switches
A Guide to Debouncing
A DSP-style debouncer
Developing a good bedside manner
4 Monday
Oct 4
GNU Compiler
Assembly Language & GCC
GNU Make
Inclass Exercise tar file
Automatic makefile dependencies
5 Wednesday
Oct 6
Lab 1 Code differences
Embedded Programming
Killer Apps
Git Lecture/Inclass work
Git Quick Reference
Avr-libc
  -Character Operations
  -Strings
  -Busy-wait loops
  -Standard Integer Types
  -General Utilities
Using a2ps
Write great code (article only)
Debugging Embedded C
Programming uCs in C
C usage in embedded apps
6 Monday
Oct 11
Interrupts
Debugging Interrupts
Inclass Exercise:   Download script
Avr-libc, interrupts section
AVR Datasheet
  -pgs 15-17, Interrupt and reset handling
  -pgs 11-12, Status register GIE bit
  -pgs 60-62, Interrupts
Break code with volatile
7 Wednesday
Oct 13
Serial Peripheral Interface (SPI)
Lab 3 Discussion
Inclass Exercise
    -bar_graph_noints_skel.c
    -bar_graph_noints.c
Lab 3 - Interrupts and SPI
  -Due in lab, 10/27-10/29 (2 wks)
AVR Datasheet
  -pgs. 163-170 SPI
Introduction to SPI
8 Monday
Oct 18
8-Bit Timer/Counters, TCNT0 & TCNT2
Lab discussion
    -Encoder operation
    -Decoder glitches
    -"Scope out" SPI transactions
In-class Programming Work
    bar_graph_demo_skel.c
    bar_graph_demo.c
AVR Datasheet
  -pgs. 93-111 TCNT0
  -pgs. 145-160 TCNT2
AVR130 setup, use of AVR Timers
DN024 Timer/Counter Basics
9 Wednesday
Oct 20
16-Bit Timer/Counters TCNT1, TCNT3
Inclass Exercises:
  -heartbeat
  -how heartbeat should work
AVR Datasheet
Sine waves from uCs
  -pgs. 112-142 TCNT1 and TCNT3
  -pgs. 143-144 TCNT1-3, Prescalers
10 Monday
Oct 25
Inclass Exercise - Stimulus Reaction Timer   -wget_script
Stimulus Reaction Timer Instructions
11 Wednesday
Oct 27
Industry Overview
  -2018 EE Salary Survey
  -Electronic Design 2017 Salary Survey
  -Electronic Design 2015 Salary Survey
Lab 4 - Alarm Clock
  -Clone hd44780_driver: Github
  -Due in lab, 11/10-11/12 (2 wks)
12 Monday
Nov 1
Analog Comparator, ADC
Inclass Exercise - ADC voltmeter - wget_script
AVR Datasheet
  -pgs. 227-229 Analog Comparator
  -pgs. 230-245 A to D Converter
  -pgs. 54-55 Voltage Reference
  -pgs. 171-197 USART
Bandgap References
DN021 Using the ADC
13 Wednesday
Nov 3
USART
UART strings in Flash
Two Wire Serial Interface (I2C)
Inclass demo - Scoping out I2C
Inclass coding - Thermometer  - wget_script
AVR Datasheet
  -pgs. 198-226, TWI
I2C overview
Network Peripherals with I2C
I2C Bidirectional level shifter
Phillips I2C Manual (pgs. 2-25)
Phillips I2C Usage with a uC
14 Monday
Nov 8
Project discussion
Inclass coding - UART - wget_script
Guest Speaker
AVR Datasheet
  -pgs. 19-24, EEPROM Memory
Accessing the EEPROM
15 Wednesday
Nov 10
Power Management and Sleep Modes
Reset Sources
XDIV/Sleep code
Reset/Brownout code
Watchdog code
Lab 5 - Remote Temp Sensor
  -twi_master.c
  -twi_master.h
  -lm73_functions.h
  -lm73_functions_skel.c
  -uart functions.c
  -uart_functions.h
  -uart functions.c for Mega48 only
  -uart_functions.h for Mega 48 only
  -Early checkoff:TBA
  -Can be checked off with final project
AVR Datasheet
  -pages 52-56, Watchdog Timer
  -page 50, Brownout Detection
Great Watchdogs
Power Management
Thrusday
Nov 11
Veterans day - No classes
Thanks to all who serve and have served our country.
16 Monday
Nov 15
Guest Speaker - Suzi O'Rourke
Project Q & A
  -Discussion of lab work.
17 Wednesday
Nov 17
Guest Speaker
  -Brad Nelson, New Product Manager
   Electrical & Computer Engineer
   Skip-Line, Inc.
JTAG
Bootloaders
Lock bits and Fuse bits
18 Monday
Nov 22
Architecting the Final Project
  -How to approach the final project.
  -Class Presentations - TBA
Final Project: FM Clock Radio
  -Clone si4734 driver: Github
  -si4734 connection detail
  -si4734 code snippets
  -Finish the FM alarm clock radio.
  -Due 12/8 (Wednesday, finals wk.) (2+ weeks)
19 Wednesday
Nov 24
Class Presentations - TBA
TBA
Thursday
Nov 25
Thanksgiving - No Classes
  -Give thanks
  -Code while you feast
20 Monday
Nov 29
Class Recap - TBA
GDB Presentation
AURIX autonomous Robot
Final Project Due Wednesday
Dec 8, by 5pm
Implied By Design