Microcontroller

Microcontroller programming using the example of Atmel AVR

Microcontrollers are found in almost every technical system today—from energy-efficient sensor nodes to industrial control units. In this hands-on course, participants learn a structured entry into low-level embedded software development using 8-bit AVR microcontrollers in C. The goal is to build a solid understanding of how hardware and software interact, and how to develop clean, well-structured firmware by working close to the register level and on-chip peripherals.

Through practical exercises, participants set up and use a complete development workflow: editing and building code, flashing the target, and debugging on real hardware. Instead of relying on high-level frameworks, the course focuses on understanding the microcontroller’s hardware subsystems. The concepts learned are applicable to other microcontroller families as well.

Target Audience

  • Developers and engineers interested in embedded systems
  • Software developers who want to understand low-level hardware-oriented programming
  • Electronics developers who want to write their own firmware

After completing the course, participants will be able to:

  • set up a complete AVR development environment using MPLAB X IDE and GCC
  • develop, compile, and flash C programs for AVR microcontrollers
  • configure and control pins and ports directly via registers
  • use on-chip peripherals effectively (timers, ADC, PWM, serial interfaces)
  • structure simple real-time-ish firmware without an operating system
  • analyze and debug typical issues systematically
  • read and use datasheets efficiently and understand hardware/software interfaces

Trainer und Dozenten

Prof. Dr.-Ing. Steffen Kaufmann is Professor of Electronics and Sensor Technology. In teaching and research, he works on intelligent sensor systems, non-invasive measurement methods, and embedded systems, with a strong focus on robust, industry-grade electronics and firmware development.

As a PhD-qualified electrical engineer, he combines scientifically sound methods with hands-on experience in embedded system design. His courses follow an engineering-driven approach to embedded C development: from understanding microcontroller architectures and datasheets to clean firmware structure, hardware-related debugging, and the reliable use of on-chip peripherals.

Participants benefit from a clearly structured teaching style, numerous best-practice guidelines, and practical workflows as required in real embedded projects—especially at the interface between hardware and low-level C firmware, as well as in testing, debugging, and preparing systems for reliable operation in the field.

Voraussetzungen

  • Basic C knowledge
  • Basic electronics knowledge (voltage, current, digital signals)

Inhalt

Fundamentals & Overview

  • Microcontrollers in system context
  • Architecture of typical 8-bit AVR controllers
  • Memory types: Flash, SRAM, EEPROM
  • Register model and peripheral concept

Tools & Development Environment

  • Toolchain overview: editor, compiler, programmer, debugger
  • Working with MPLAB X IDE
  • Project structure, build process, HEX/ELF file
  • Flashing the controller, basics of fuse settings

Digital I/O

  • Ports, pins, direction registers
  • Driving LEDs, reading buttons
  • Timing behavior and simple delay functions

Timers and Time Base

  • Timer/Counter basics
  • Periodic tasks and time measurement
  • Software timers and simple scheduler concepts

Analog-to-Digital Conversion (ADC)

  • How the ADC works
  • Register-level configuration
  • Measuring analog voltages (e.g., potentiometer)
  • Processing measured values

Pulse-Width Modulation (PWM)

  • PWM principle
  • Generating PWM signals with timers
  • Controlling LED brightness
  • Combining ADC input with PWM output

Communication Interfaces (Overview)

  • UART (serial interface)
  • I2C/TWI and SPI: use cases and basic principles

Program Structure & Methods

  • Structuring larger embedded programs
  • State machines
  • Using integer fixed-point arithmetic
  • Cooperative concurrency without an operating system

Debugging & Robustness

  • Typical sources of errors in embedded systems
  • Systematic testing with simple means
  • Reset causes, watchdog, brown-out detection
  • Reading and applying errata

Hands-on Work

The course is largely based on step-by-step lab exercises on real hardware. From the first blinking LED to analog measurements and PWM applications, participants build a working embedded system incrementally.

Format

3-day intensive course with a strong practical focus. Short theory blocks alternate with immediately following lab sessions. Within the course framework, emphasis can be adapted to the participants’ interests.

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An Kurstagen gibt es bei uns ab 8 Uhr Frühstück.

Unsere Kurse beginnen um 9 Uhr und enden um 18 Uhr.

Neben den kleinen Pausen gibt es eine Stunde Mittagspause mit leckerem, frisch in unserer Küche zubereitetem Essen.

Nach der Schulung anschließend Abendessen und Angebote für Fachsimpeln, Ausflüge uvm. Wir schaffen eine Atmosphäre, in der Fachleute sich ungezwungen austauschen. Wer das nicht will, wird zu nichts gezwungen und findet auch jederzeit Ruhe.