Embedded systems are present everywhere in our daily lives and are integral parts of modern engineering. They start with smart lightbulbs or electric door openers and continue with control units for automotive applications or industrial machines. Furthermore, safety-critical systems, such as airbags or ventilators, are controlled with an embedded system.
Course Objectives
In this course, the students learn to develop software for embedded systems. At first, the students learn the concepts of embedded systems, including hardware structures and software design. Afterwards, they are introduced to microcontrollers and their functionalities, such as input and output registers, timers, interrupts, and bus systems. At the end of this course, the students know how to develop, implement, and test software for embedded systems.
Prerequisites
Students taking this course must be familiar with the C programming language and its concepts, for example, pointers and procedural programming. Furthermore, basic knowledge of software design and electrical engineering is helpful for this course.
Lab
A lab accompanies the lecture, where the students learn to program a microcontroller and apply the lecture’s content. Using an ATmega32U4, the students develop a hardware-oriented and low-level software library to address digital input and output pins, read analog to digital (ADC) converters for analog sensors, use hardware timers and interrupts, and control an actuator. At the end of the lab, the students combine all functionalities and implement software for different applications.