Lecture:
Tuesday, Thursday 1600-1720 pm; LINC 314
Lab:
W 0900-1150 : Tingwei, Alyssa ; DEAR208
W 1400-1650 : Tingwei, Alyssa ; DEAR208
F 1100-1350 : Tingwei, Alyssa ; DEAR208
F 1400-1650 : Tingwei, Alyssa ; DEAR208
(Note: Remove "SPAM" from email addresses)
Instructor:
Roger Traylor
Office: KEC3095
E-mail:traylor@oregonstateSPAM.edu
Office Hours: email me
TAs:
Alyssa Estenson estensoa@oregonstate.edu
Office: DB208
E-mail:estensoa@oregonstateSPAM.edu
Office hours by email appointment
Tingwei Zhang zhangtin@oregonstate.edu
Office: DB208
E-mail:zhangtin@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.
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 small bits of 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-f22@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.
Schedule and Assignments
Period | Date | Lecture Topics | Lab Work | Supplental Reading |
---|---|---|---|---|
1 | Thursday Sept 22 |
Intro to ECE473 Differences in Embedded Design Mega128 Overview Schematic Diagrams |
Lab 1 - Tool Testdrive -Due in lab, 9/28,9/30 (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 | Tuesday 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/12,10/14 (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 | Thursday 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 | Tuesday Oct 4 |
GNU Compiler Assembly Language & GCC GNU Make Inclass Exercise tar file |
Automatic makefile dependencies | |
5 | Thursday 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 | Tuesday 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 | Thursday Oct 13 |
Serial Peripheral Interface (SPI) Lab 3 Discussion Inclass Exercise -bar_graph_noints_skel.c -bar_graph_noints.c |
AVR Datasheet -pgs. 163-170 SPI Introduction to SPI |
|
8 | Tuesday Oct 18 |
8-Bit Timer/Counters, TCNT0 & TCNT2 Encoder Usage In-class Programming Work bar_graph_demo_skel.c bar_graph_demo.c |
Lab 3 - Interrupts and SPI -Due in lab, 11/2,11/4 (2 wks+) |
AVR Datasheet -pgs. 93-111 TCNT0 -pgs. 145-160 TCNT2 AVR130 setup, use of AVR Timers DN024 Timer/Counter Basics |
9 | Thursday 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 | Tuesday Oct 25 |
Inclass Exercise - Stimulus Reaction Timer -wget_script Stimulus Reaction Timer Instructions |
||
11 | Thursday Oct 27 |
Industry Overview -2018 EE Salary Survey |
||
12 | Tuesday 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 | Thursday Nov 3 |
Class canceled | 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 | Tuesday Nov 8 |
USART Two Wire Serial Interface (I2C) Inclass coding - UART - wget_script |
AVR Datasheet -pgs. 19-24, EEPROM Memory Accessing the EEPROM |
|
15 | Thursday Nov 10 |
Inclass coding - Thermometer - wget_script Power Management and Sleep Modes Reset Sources XDIV/Sleep code Discussion of Lab 4 |
Lab 4 - Alarm Clock Scratch Amplifier -Due in lab, 11/17,11/22 (2 wks) |
AVR Datasheet -pages 52-56, Watchdog Timer -page 50, Brownout Detection Great Watchdogs Power Management |
Friday Nov 11 |
Veterans day - No classes or labs. We'll catch up lab next week. Thanks to all who serve and have served our country. |
|||
16 | Tuesday Nov 15 |
Reset/Brownout code Watchdog code |
||
17 | Thursday Nov 17 |
JTAG Bootloaders Lock bits and Fuse bits |
||
18 | Tuesday Nov 22 |
Architecting the Final Project -How to approach the final project. -Class Presentations - TBA |
||
Thursday Nov 24 |
Thanksgiving - No Classes -Give thanks -Code while you feast |
|||
19 | Tuesday Nov 29 |
Class Presentation?
Design of Capacitance Meter |
Final Project - Capacitance Meter Capacitor Meter cap_meter_skel.c |
|
20 | Thursday Dec 1 |
Class Recap - TBA | ||
Final Project Due | Thursday Dec 8, by 5pm |