Lecture:
Tuesday, Thursday 8:30-9:50 am; LINC 302
Lab:
W 1100-1350 : Jason Matthews ; DEAR208
R 1000-1250 : Praveen Venkatachala ; DEAR208
W 1400-1650 : Azmeen Ur Rahman,Emanuel Caceres ; DEAR203
(Note: "NOSPAM" = "oregonstate")
Instructor:
Roger Traylor
Office: KEC3095
E-mail:traylor@NOSPAM.edu
Office Hours: Via email only
Lecturer:
Gurjeet Singh
Office: DB203
E-mail:singhg@NOSPAM.edu
Office hours by email appointment
TAs:
Jason Matthews
Office: DB203
E-mail:matthjas@NOSPAM.edu
Office hours by email appointment
Emanuel Caceres
Office: DB203
E-mail:cacereem@NOSPAM.edu
Office hours by email appointment
Praveen Venkatachala
Office: DB203
E-mail:venkatap@NOSPAM.edu
Office hours by email appointment
Azmeen Ur Rahman
Office: DB203
E-mail:rahmans@NOSPAM.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 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 is: ece473-001-f17@engr.NOSPAM.edu (NOSPAM = orst). You will not be able to post to this list from any other than your engr account.
Where ever 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 | Reading and Self Evaluation |
---|---|---|---|---|
1 | Thursday Sept 21 |
Intro to ECE473 Intro and Motivation Mega128 Overview Inclass exercise:Voltmeter paper design |
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 26 |
Editing with vim a vim "complaint" 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 |
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 Self Evaluation - wk1 Schematics for self eval |
|
3 | Thursday Sept 28 |
Switch Debouncing Inclass Demo: -Switch bounce on scope -Switch bounce effect on software Inclass Exercise: download_script Debugging Techniques Shameless plug for schematics Discussion of Lab 2 -Time multiplexing LED display -Scanning switches |
Lab 2 - LED & Pushbuttons -Due in lab, 10/12-14 (2 wks) Lab 2 Skeleton code Schematic Notes Example LED display test code | A Guide to Debouncing A DSP-style debouncer Developing a good bedside manner |
4 | Tuesday Oct 3 |
GNU Compiler Assembly Language & GCC GNU Make Inclass Exercise tar file |
Self Evaluation - wk2 Automatic makefile dependencies |
|
5 | Thursday Oct 5 |
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 10 |
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 Self Evaluation - wk3 |
|
7 | Thursday Oct 12 |
Serial Peripheral Interface (SPI) Lab 3 Discussion Inclass Exercise -bar_graph_noints_skel.c |
Lab 3 - Interrupts and SPI -Due in lab, 10/26-28 (2 wks) |
AVR Datasheet -pgs. 163-170 SPI Introduction to SPI |
8 | Tuesday Oct 17 |
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 |
AVR Datasheet -pgs. 93-111 TCNT0 -pgs. 145-160 TCNT2 AVR130 setup, use of AVR Timers DN024 Timer/Counter Basics Self Evaluation - wk4 |
|
9 | Thursday Oct 19 |
16-Bit Timer/Counters TCNT1, TCNT3 Inclass Exercises: -heartbeat -heartbeat1 -heartbeat2 -siren |
AVR Datasheet Sine waves from uCs -pgs. 112-142 TCNT1 and TCNT3 -pgs. 143-144 TCNT1-3, Prescalers |
|
10 | Tuesday Oct 24 |
Inclass Exercise - Stimulus Reaction Timer -wget_script |
||
11 | Thursday Oct 26 |
Industry Overview -Electronic Design 2015 Salary Survey -Electronic Design 2014 Salary Survey |
Lab 4 - Alarm Clock -Clone hd44780_driver: Github -Due in lab, 11/9-11 (2 wks) |
|
12 | Tuesday Oct 31 |
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 Self Evaluation - wk6 |
|
13 | Thursday Nov 2 |
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 | Tuesday Nov 7 |
Project discussion Inclass coding - UART - wget_script Guest Speaker |
AVR Datasheet -pgs. 19-24, EEPROM Memory Accessing the EEPROM Self Evaluation - wk7 |
|
15 | Thursday Nov 9 |
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:11/30-12/2 -Late checkoff with final project |
AVR Datasheet -pages 52-56, Watchdog Timer -page 50, Brownout Detection Great Watchdogs Power Management |
Friday Nov 10 |
Veterans day - No classes Thanks to all who serve and have served our country. |
|||
16 | Tuesday Nov 14 |
Guest Speaker Project Q & A -Discussion of lab work. |
||
17 | Thursday Nov 16 |
Guest Speaker -Brad Nelson, New Product Manager Electrical & Computer Engineer Skip-Line, Inc. JTAG Bootloaders Lock bits and Fuse bits |
Self Evaluation - wk9 |
|
18 | Tuesday Nov 21 |
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/7 (Wednesday, finals wk.) (2+ weeks) |
|
Thursday Nov 23 |
Thanksgiving - No Classes -Give thanks -Code while you feast |
|||
19 | Tuesday Nov 28 |
Class Presentations
TBA
Yang Xiao && Samuel Lee - TDA3X, a processor for Advance Driver Assist System (ADAS) applications Schraner, Aaron Robert - Using C++ for AVR Development |
||
20 | Thursday Nov 30 |
Class Presentation
TBA
Su Leon - IR transmitter-receiver traffic system using the ATmega128 Brock Kocyan - 100 W digital amplifier with AT Mega 128 Richard Slocum - lidar and the internal circuitry required to collect accurate data |
||
Final Project Due | Wednesday Dec 6, by 5pm |
----------TA checkoff timings-------------------------- ---------CheckOff Location - KEC atrium-------------------- Azmeen : Mon-10-11am; Tue-10-11am; Wed-10-11am Praveen: Mon-2-3pm ; Tue-2-3pm ; Wed-2-3pm Emanuel: Mon-8-9am ; Tue-3-4pm ; Wed-5-6pm Jason : Mon-1-2pm ; Tue-4-5pm ; Wed-11am-12noon -----------Late Checkoff timings(KEC atrium)---------------- Praveen : Thurs-2-3pm;Fri-12:30-1:30pm Emanuel : Thurs-4-5pm;Fri-4-5pm Azmeen : Fri-10-12noon |