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 |