CE-2810 Embedded Systems 2
Spring 2008
Dr. Mark L. Hornick


Description     Syllabus     Policies     Quizzes/Homework     Grading


Revision History

3/12/2008 Quiz schedule published.
4/6/2008 Final Exam date posted
4/14/2008 Midterm study guide posted

  * * * 5/8/2008 Final Exam date updated * * *

This page was last updated on 05/19/2008.

Class Schedule

Lectures are held on Monday and Wednesday in L306 from 2:00pm to 2:50pm.

Labs are on Thursday in S314 from 2:00pm to 3:50pm.

As stated in my general course policies, attendance is mandatory for all lectures and labs. Email me when you foresee yourself to be absent. I will administratively drop anyone who misses 3 or more lectures or labs. Be sure to read the entire document for all relevant policies that apply to this course.

Course Description

This class builds on CE-2800 and introduces C as a high-level language for embedded systems programming. C pointers are introduced. C functions are introduced. Parameter passing by value versus using pointers is described. Interrupts in C are introduced and then the C/assembly interface is described. Designing modular applications by use of multiple files is described. Several subsystems, such as the USART and Timer system, are introduced . Key concepts are applied in laboratory exercises.

Please consult the official course description for detailed objectives.

Textbook, Documentation & Toolset

No textbook is required for this course. You will instead be making extensive use of the AVRStudio and GCC reference guides, which are distributed via the wiki.

Syllabus

Week Day Topics Reading Lab (Thursday)
1
 
M Course Introduction

AVR Studio GCC Development tools
  Lab 1: Embedded C Application
W Similarities between C and Java
(conditionals, loops, primitive types)
Update WinAVR
2
 
M Differences between C and Java
(header files, global/local variables, storage classes, type qualifiers, conditional compilation)
  Lab 2: Keypad Reader
W ...continued

Standard C Libarary

Sample code from lectures:
gccDemo.zip
3
 
M Quiz 1
Analyzing compiled code
wiki explanation of .lss file content Quiz 2

Lab 3: LCD Device Driver

W Interrupts in C handout #1 given in class

wiki article on interrupts in C
Spring Break
4
 
M Mixing C and Assembly handout #2 given in class Quiz 3

Lab 4: Interrupts in C

W Mixing C and Assembly continued  
5
 
M Mixing C and Assembly continued Sample code from lecture:
ArgumentPassing.zip
Quiz 4

Lab 5: Mixing C and Assembly

W C Pointers  
6
 
M Review/Catch-up Study Guide for exam Lab 6: Annoying Greeting Card
W Midterm Exam  
7
 
M More on C Pointers
Arrays and Strings in C
  Quiz 5 - C pointers

Lab 7: Jawdropper lab

W Addressing, Indirection
(passing arguments by value vs. reference)

Structs

 
8
 
M Serial Communications pp 138-166 Atmega32 Manual

pp 40-43 Atmega32 Reference Guide

Lab 8: USART





Quiz 6(W9) - C typedefs, function pointers, "classes"
 

Lab 8: final demonstrations

W USART subsystem Sample Code:
echo.c
9
 
M structs, typedefs, function pointers, & the genesis of C++ Sample Code:
rectangle.zip
W mini lab CClassApp.zip  
10
 
M Building C libraries (.a files)  
W Review and Study Guide  
11
 
Common Final Exam
Tuesday, May 20, 2008
11:00am-1:00pm
L306

Course policies

My general course policies apply to this course.

Quizzes & Homework

Quizzes or Homework will be given or assigned each week.

You are encouraged to work with your classmates on homework, so that you can more fully understand the problem and discuss approaches to solution. However, you should work out the solutions to problems individually. Homework problems will be kept short, and will be due the next class period after which they are assigned unless stated otherwise in the homework description.

Quizzes, when given instead of homework, will be given at the beginning of the Lab session. No quiz will be given the week of the Exams. No make-up quizzes will be given.

Grading algorithm

Note that this algorithm indicates how a grade will be determined for students who have successfully demonstrated mastery of the course objectives. An acceptable level of success in meeting all course objectives is a prerequisite for a passing grade in the course.

Criterion Weight
Labs 35%
Quizzes 20%
Midterm Exam 20%
Final Exam 25%

Documentation Standard

All source code submitted must use JavaDoc commenting conventions and meet the minimum documentation standards outlined below.

.