CSCE 436/836: Advanced Embedded Systems
Spring 2011


Dr. Carrick Detweiler
Computer Science and Engineering
109 Schorr Center
carrick _at_

Course Information

TuTh 11:00-12:15 in Business Administration 31
Labs in Schorr Center 117A

Office/Lab Hours: 109 or 117A Schorr Center
Tues, Wed, Thurs 1:00-2:00 and by appointment

For detailed information on this course please see the course syllabus in html or pdf format.

Course Description

Embedded Systems are everywhere. Every time you look at your watch, answer the phone, take a picture, or turn on the TV you are interacting with an embedded system. Embedded systems are also found in cars, airplanes, and robots. They far outnumber traditional computers (which also contain embedded processors) and it is estimated that there will be thousands of embedded devices per person by 2015 (Lisa Su, CTO Freescale Semiconductor, 2008). Learning to design and program embedded systems is a critical skill that is necessary for many industry and scientific jobs.

In this course you will build an omni-directional hovercraft robot and develop the low-level controllers and sensor interfaces on the embedded system that control the robot. In this course you will learn the theory and practice of interfacing, configuring, and programming embedded systems through the creation of this robot platform.

At a low-level, you will learn about embedded system design, using digital and analog interfaces, controlling motors, communicating over various protocols, and interfacing with sensors. At a higher-level you will learn about implementing, optimizing, and debugging embedded algorithms to control the covercraft's actions. In addition, you will learn about networking, embedded operating systems, and power management.

The hovercraft platform can control a variety of motors, transport reasonable payloads, and has numerous sensors including gyros and magnetometers. For the final project, you will extend the robot with new sensors and develop algorithms that take advantage of these enhanced capabilities, and by the end of the course you will have a deep understanding of the design, programming, and interfacing of embedded systems. This will prepare you for cutting edge careers in industry and research.

Datasheets and other useful documents


See the course schedule below for reading assignments and the general topics covered in the course. Unless otherwise noted, assignments are due via email to me before the start of class on the due date.

Assignment Due Date
Course Survey Friday, Jan. 14th, 5pm
Lab 1a (pdf,html*): Hovercraft Construction Thurs, Feb. 3 (recommended completion Jan. 27)
Lab 1b (pdf,html*),code: Intro to Hoverboard Programming Thurs, Feb. 3
Lab 2 (pdf,html*),code: Communication, Debugging, Thruster Control, and Sensor Reading Tues, Feb. 22
HW 1 (pdf) Thurs, March 3
Lab 3 (pdf,html*),code: Interrupts, Communication, and Sensor Fusion Thurs, March 10 (extended to 3/17)
HW 1 (pdf) Thurs, March 31
Lab 4 (pdf,html*),code: PID, Serial Console, Scheduler Friday, April 8 at 5pm

*Note html versions of assignments may lack some formatting or pictures found in the pdf version.

Course Books

W. Wolf, Computers as Components, Second Edition: Principles of Embedded Computing System Design, 2nd ed. Morgan Kaufmann, 2008.
Available in the book store. Readings from this book are specified in the format Wx.x, where x.x indicates the chapter and subsection.

David Russell, Introduction to Embedded Systems, 2010.
Available for free download when on the UNL campus. Good reference for embedded C programming. Do not print out this book, it is less expensive to order a printed copy than to print it yourself. Readings from this book are specified in the format Rx.x, where x.x indicates the chapter and subsection.

Edward Lee and Sanjit Seshia, Introduction to Embedded Systems, A Cyber-Physical Systems Approach, 2011.
Available for free download. Do not print out this book, it is less expensive to order a printed copy than to print it yourself. There are no specific readings from this book, but it is a good reference for those interested in exploring some subjects further.

Course Schedule

Below is an approximate schedule of course topics. These are subject to change, assignments will be announced in class.

Week Topics Reading
Week 1, Jan 11 & 13 Intro, embedded system design, registers, memory access, datasheets W2.1, W2.2
Week 2, Jan 18 & 20 Embedded C programming, digital I/O, basic circuit elements, circuit diagrams W5.3, W5.4, R2.1, R2.2, R2.4
Week 3, Jan 25 & 27 Embedded C programming, digital I/O, basic circuit elements, circuit diagrams R2.5, R2.6, R2.7, R2.8
Week 4, Feb 1 & 3 Bus and serial protocols (UART, I2C, SPI) W4.1, R10.1 to R10.1.3
Week 5, Feb 8 & 10 Debugging, pulse width modulation (PWM) R4, R7.1
Week 6, Feb 15 & 17 Interrupts, analog to digital converters (A2D) W3.1, W3.2, R8.1
Week 7, Feb 22 & 24 Communication and networking (I2C, SPI, radio) W8.2.1
Week 8, Mar 1 & 3 Sensors
Week 9, Mar 8 & 10 Embedded algorithms (e.g. sensor fusion)
Week 10, Mar 15 & 17 Program Optimization Techniques W5.5, W5.6, W5.7
Spring Break
Week 11, Mar 29 & 31 Process scheduling and multitasking W6.1
Week 12, Apr 5 & 7 Operating system design and organization W6.2, W6.3
Week 13, Apr 12 & 14 TBD
Week 14, Apr 19 & 21 TBD
Week 15, Apr 26 & 28 Final Project Presentations

Last modified: Tue Mar 29 10:32:19 CDT 2011