About this class


ECE473/573, CRN 12458/12459
Meets: 12pm-1:50pm, Mon, Wed; Class Zoom Link
Instructor: Roger Traylor, traylor@oregonstate.edu 
Office Hours: Th, Fri 1-2pm, or by appointment. Office Hours Link
TAs:  Tingwei Zhang (zhangtin@oregonstate.edu)
          Han Jang (jangha@oregonstate.edu)
          Vladimir (Vlad) Vesely (veselyv@oregonstate.edu)

Labs: Th, 10a-12:50p, [Tingwei]  Thursday Lab Link
         Tu, 10a-12:50p, [Han]  Tuesday Lab Link
         W, 9a-11:50p, [Vlad]  Wednesday Lab Link
         F,  3-5:50p, [Vlad]  Friday Lab Link

COE TEACH link:   TEACH

 

In this class, you will design and implement the hardware and software for an embedded computer system.  We will also examine the internal microcontroller architecture,  learn how to interface peripheral devices, and create a robust mixed analog and digital system.

Upon successful completion of this course, you will be able to competently design small, embedded microcontroller (MCU) systems.

As the name implies, this is a design course. This implies that you will be expected to show considerable creativity, resourcefulness and persistence. You will need to read 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 find your own solutions from incomplete specifications.

The main assessment that will be used are the lab assignments. They require a detailed design based on a general specifications. Step-by-step instructions are not provided. Complete assignments will include C and/or assembly language code, circuit schematics, and documentation. As embedded systems often involve human interaction, reasonable user interfaces will be required. Your design will be verified to work properly with a live demonstration.

There are also multiple in-class programming assignments. These are time-limited assignments that may be completed in groups of one to three. The reason for them is to immediately reinforce the lecture material, give you a group programming experience, and to prep you in tackling the next lab assignment.

I will expect your 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 endorsed. 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 projects represent your individual work, not the product of group work. And by the way, I know what code is posted to GitHub.

Most all required class materials should be available on the class Canvas page.  Let me know if something is missing.

 

Additional Requirements for ECE573 Students


In addition, ECE573 students will be:

 

Covid-19 Considerations


This class is being offered in a challenging time.  Typically we spend a great deal of time in lab, talking in class to work out bugs and problems and working closely with each other. Most of these things are just not possible currently. There will be compromises. 

If you get ill physically or  have some other personal emergency and are unable to finish your assignments on time, let me know as soon as possible. I won't try to cover all the possibilities here. Just let me know and let's talk. If you need to talk to someone else about what is going on, there are good resources on-campus to help you as well.  A good place to start is Student Health.

As this class will be primarily taught through Zoom, students are expected to conduct themselves in compliance with the university’s regulations regarding civility. Civility is an essential ingredient for academic discourse. All communications in this course should be conducted constructively, civilly, and respectfully. In all you say and do in this course, be professional. Be respectful of others and their opinions, valuing diversity in backgrounds, abilities, and experiences.


Lab During Coid-19 Restrictions


The labs will be open as shown on the schedule of classes.  If you feel safe to attend lab, come. If you don't feel safe attending lab, we will sign-off and verify functionality of your project via Zoom.  I will post some type of sign-off schedule in the future.

Lab kits will be available for pickup from KEC1110 between 10am and 1pm M-F beginning Wednesday of Week 0. Students will be asked to space out in the hallway practicing proper social distancing.

If you are not on campus, you may request that a kit be sent to you via physical mailing. This option will be available about 2 weeks before the start of the term.  Form for lab kit via post

At the end of Week 2, any student who has not requested shipment or picked up their kit will be refunded and would need to purchase a kit in the traditional way.

Period (date)
Lecture Topics Lab Work Supplemental Reading
1 (9/23) Intro to ECE473
Differences in Embedded Design
Mega128 Overview
Schematic Diagrams
Prototyping
Lecture 9/23
Lab 1 - Setting the Stage
lab1_code.c
Makefile
Lab 1 due by 5pm, 10/2
ATmega128 Datasheet
  -pgs. 0-11, (upto ALU section)
Efficient C Coding for AVR
2 (9/28)

Editing with vim
Port I/O
Lab 2 Discussion
Lecture 9/28

Lab 2 - LED & Pushbuttons
Lab 2 Skeleton code
Schematic Notes
Example LED display test code
Lab 2 due by 5pm, 10/16
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 (9/30)

Switch Debouncing
Inclass Exercise: Instructions
Debugging Techniques
Debugging with a Serial Port
Discussion of Lab 2
  -Time multiplexing LED display
  -Scanning switches
Lecture 9/30

A Guide to Debouncing
A DSP-style debouncer
Developing a good bedside manner
4 (10/5)

GNU Compiler
Assembly Language & GCC
GNU Make
Inclass Exercise: Instructions
Lecture 10/5

Automatic makefile dependencies
5 (10/7)

Lab 1 Code differences
Embedded Programming
Intro to Git Lecture
Avr-libc
  -Character Operations
  -Strings
  -Busy-wait loops
  -Standard Integer Types
  -General Utilities
Using a2ps
Lecture 10/7

Killer Apps
Debugging Embedded C
C usage in embedded apps

Git Quick Reference
6 (10/12)

Interrupts
Debugging Interrupts
Inclass Exercise:   Instructions
Avr-libc, interrupts section
Inclass Exercise Prep
Lecture 10/12

Lab 3 - Interrupts and SPI
Lab 3 due by 5pm, 10/30
7 (10/14)

Serial Peripheral Interface (SPI)
Quaduature Encoder Use 
Inclass Exercise:  Instructions
Lecture 10/14

AVR Datasheet
  -pgs. 163-170 SPI
Introduction to SPI
8 (10/19)

8-Bit Timer/Counters, TCNT0 & TCNT2
Lab 3 discussion
Inclass Exercise:   Instructions
Inclass Exercise Prep for "heartbeat"
Inclass Exercise Prep for "siren"
Lecture 10/19

AVR Datasheet
  -pgs. 93-111 TCNT0
  -pgs. 145-160 TCNT2
AVR130 setup, use of AVR Timers
DN024 Timer/Counter Basics
9 (10/21)

16-Bit Timer/Counters TCNT1, TCNT3
Inclass Exercises:
  -heartbeat_skel.c
  -siren_skel.c
Lecture 10/21

AVR Datasheet
Sine waves from uCs
  -pgs. 112-142 TCNT1 and TCNT3
  -pgs. 143-144 TCNT1-3, Prescalers
10 (10/26)

Inclass Exercise: Instructions
Lab 3 questions
Lecture 10/26

11 (10/28)

Industry Overview
  - Electronic Design 2018 Survey Results
  - Evaluation Engr. 2019 Salary Survey
-Electronic Design Salary and Career Report 2020
Inclass Exercise Prep for ADC
Lecture 10/28

Lab 4 - Alarm Clock
 hd44780_driver: Github
Lab 4 due by 5pm, 11/13
12 (11/2)

Guest Speaker
  -Mohsen Nasroullahi, Intel
Analog Comparator and ADC
Inclass Exercise: Instructions
Lecture 11/2

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 (11/4) USART
UART strings in Flash
Two Wire Serial Interface (I2C)
Inclass Exercise: Instructions
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 (11/9)

Project discussion
Inclass Exercise: Instructions
Guest Speaker
  -Marshall Adrian, SiFive
Lecture 11/9

AVR Datasheet
  -pgs. 19-24, EEPROM Memory
Accessing the EEPROM
15 (11/11) Power Management and Sleep Modes
Reset Sources
XDIV/Sleep code
Reset/Brownout code
Watchdog code
Lab 5 - Remote Temp Sensor
Lab 5 due by 5pm, 11/23 (1.5wk)
AVR Datasheet
  -pages 52-56, Watchdog Timer
  -page 50, Brownout Detection
Great Watchdogs
Power Management
16 (11/16)


Project Q & A
  -Discussion of lab work.
Lecture 11/16

17 (11/18)
JTAG
Bootloaders
Lock bits and Fuse bits
18 (11/23) Architecting the Final Project
  -How to approach the final project.
Lecture 11/23
Lab 6 - AM/FM Alarm Clock
Lab 6 due 12/11 (Friday, finals wk.)
19 (11/25)

Class Presentations - TBA
Lab 6 discussion and help
Lecture 11/25

20 (11/30) Class Recap - TBA
Student Presentation
Lab 6 discussion and help