CSCE 236: Embedded Systems (original) (raw)

CSCE 236: Embedded Systems

Spring 2012

Instructor

Dr. Carrick Detweiler
Computer Science and Engineering
109 Schorr Center
carrick _at_ cse.unl.edu
Office Hours:
1:30-2:30pm Monday
3:30-4:30pm Wednesday
and by appointment

Teaching Assistant

Ben Christensen
christb _at_ cse.unl.edu
Office Hours:
9:30-11am Tuesdays in the CPN Lab (114 Schorr) or Nimbus Lab (223 Schorr)
10am Thursday in the Student Resource Center (Avery 13A)
and by appointment

Course Information

Lecture: Tues and Thurs 11:00-12:15pm in Avery 110

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 learn the basics of designing, interfacing, configuring, and programming embedded systems. We will make use of the Arduino platform, which is an inexpensive, popular embedded system used by hobbyists, researchers, and in industry, to implement the techniques learned in class. By the end of the course you will have mastered the basics of embedded system design and programming. This course will help to prepare you for cutting edge careers in industry and research.

Datasheets and other useful documents

Assignments

See the course schedule below for reading assignments and the general topics covered in the course. Unless otherwise noted, assignments are due at the start of class on the due date.
| Assignment | Due Date |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Course Survey | Weds, Jan 11, 5pm |
| HW 1 (pdf,code) | Start of class, Thurs, Jan 19 |
| HW 2 (pdf) | Start of class, Thurs, Jan 26 |
| Lab 1 (pdf,html*) | In class lab, Thurs, Jan 26 |
| Lab 2 (pdf,html*,code) | In class lab, Thurs, Feb 2 |
| HW 3 (pdf,code) | Start of class, Thurs, Feb 9 |
| Lab 3 (pdf,html*) | In class lab, Thurs, Feb 16All individual check-offs by Thurs, Feb 23 in class |
| Lab 4 (pdf,html*) | In class lab, Thurs, Feb 23 |
| Project 1 (pdf)Courses: Thin Curves, Angles, Thick Curves, Mystery Course. | Checkpoint: Thurs, March 1 in classCompetition: Thurs, March 8 in classWritten Report: start of class Tues, March 13 |
| Lab 5 (pdf,html*,code) | In class lab, Thurs, March 15 |
| HW 4 (pdf) | Start of class, Thurs, April 5 |
| Project 2 Overview (pdf)Project 2 Checkpoints (pdf)Project 2 Writeup (pdf)Project 2 selected art results Project 2 survey | Group Formation: Thurs, March 29th in classCompass Checkpoint: Tues, April 17th in classWheel Encoder Checkpoint: Thurs, April 19th in classSpecified Art: Tues, April 24th in classSelected Art: Thurs, April 26th in classWritten Report: Friday, April 27th at 5amSurvey: Monday, April 30th at 5am |
| Lab 6 (pdf,html*,code) | In class lab, Thurs, March 29 |
| Lab 7 (pdf,html*) | In class lab, Thurs, April 5 |

*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. Note: this book is specifically designed for the Arduino platform, but there are some differences between the version of the Arduino used in the book and the version we are using in class. So be careful!
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.
Brian W. Kernighan and Dennis M. Ritchie, C Programming Language (2nd Edition), 1988. ISBN: 0131103628
Suggested reference for those with little prior C programming experience, although there are also numerous online tutorials. There are no specific readings from this book.
### Course Schedule
Below is an approximate schedule of course topics. These are subject to change, assignments will be announced in class. Readings will be added as the semester progresses, so make sure to check back often. The course is roughly broken into regular class lectures on Tuesdays and then lab-style lectures on Thursdays where a Labture is specified. Typically during labtures there will be a short topic-specific lecture followed by a hands-on, small group, in class lab assignment.
| Week | Class Topics | Labture | Reading |
| --------------------- | ------------------------------------------------------------- | ---------------------------------- | ---------------------- |
| Week 1, Jan 10 | course intro, c programming | R2.1, R2.2, R2.4 | |
| Week 2, Jan 17 | embedded system design, arduino intro, basic circuit diagrams | R2.5, R2.6, R2.7, R2.8, W1.1, W1.2 | |
| Week 3, Jan 24 | instruction sets, registers and mem access, digital I/O | LEDs and buttons | W2.1, W2.2, R6.* |
| Week 4, Jan 31 | timers, debugging | timers and I/O | W3.1, R7.* |
| Week 5, Feb 7 | pulse width modulation (PWM) | servos | R4.* |
| Week 6, Feb 14 | CPU bus, comm protocols (UART, SPI, I2C) | quiz 1(tentative) | W4.1, R10.1 to R10.1.3 |
| Week 7, Feb 21 | analog input | analog sensors | R8.* |
| Week 8, Feb 28 | power management, program optimization | project 1 competition | W5.5, W5.6, W5.7 |
| Week 9, March 6 | interrupts | encoders | W3.1.4, W3.2, R9.* |
| Week 10, March 13 | embedded algorithms, feedback control | feedback control | |
| NO CLASS SPRING BREAK | | | |
| Week 11, March 27 | embedded operating systems | schedulers | W6.1, W6.2, W6.3 |
| Week 12, April 3 | peripherals, sensors | i2c | R10.1.2 |
| Week 13, April 10 | embedded systems applications | quiz 2(tentative) | |
| Week 14, April 17 | embedded systems applications | | |
| Week 15, April 24 | Final Project Competition | | |

Last modified: Thu Apr 26 21:09:40 CDT 2012