CPE 2610 - Embedded Systems

3 lecture hours 2 lab hours 4 credits
Course Description
This course presents C as a portable high-level language for programmatically controlling an embedded system and its associated peripherals. Embedded peripherals covered include general purpose I/O, timers, analog to digital conversion, basic serial communication, and interrupts. C pointers and structures are used to interact with the microcontroller subsystems as well as to implement interrupt driven behavior. The design and testing of modular applications using multiple files and APIs is emphasized throughout the course. Laboratory exercises employ peripheral subsystems as well as reinforce other key topics.
Prereq: CPE 2600  or CSC 2210  
Note: None
This course meets the following Raider Core CLO Requirement: None
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • Given proper documentation, be able to configure and use common microcontroller subsystems such as watchdog timers, input capture timers, output compare and pulse-width modulation timers, universal asynchronous receiver-transmitters (UART), and analog-to-digital converters (ADC)
  • Correctly configure bits in peripheral control registers and monitor peripheral flags and status bits to implementing appropriate algorithmic solutions to embedded design problems
  • Understand the concept and usage of interrupts
  • Use a high-level language to complete basic embedded system programming tasks
  • Employ embedded systems development tools
  • Design a basic round-robin context switching system
  • Utilize function pointers to design an event driven interface

Prerequisites by Topic
  • Understanding of the C programming language including variables, control structures, subroutines, pointers, and dynamic memory
  • Using multiple files in an application, header files, conditional compilation
  • Good program documentation and design techniques including flowcharting and pseudocode

Course Topics
  • Introduction to C as a portable language
  • Traditional C and C99 types and custom types with typedef
  • C arithmetic and bitwise operators.
  • Review of pointer basics, arrays, and C memory structures
  • C functions and parameter passing (by value and by reference)
  • Safe usage of the stack to C program execution
  • Interaction with registers via C pointers and structures
  • I/O port configuration and usage
  • Timer subsystems
  • Interrupts, including their use related to the timer and external sources
  • A/D conversion
  • Serial communication and the USART subsystem
  • Design of a buffered serial API
  • Asynchronous serial communication (UART subsystem)
  • Review of dynamic memory with malloc and free
  • Function pointers and event driven applications
  • Basic round-robin context switching

Laboratory Topics
  • Tools familiarization: assemble, download, run, and simulate a template program completed by the student
  • Simple I/O program, button I/O
  • Bit banging the LCD display
  • Keyboard scanning program
  • Timing subsystem program
  • TIC and TOC Timer functionality program
  • Interrupt-driven program
  • A/D program
  • UART serial communication program
  • Console I/O
  • Event driven applications with function pointers
  • Round-robin context switcher

Coordinator
Dr. Adam Livingston


Print-Friendly Page (opens a new window)