Mikrocontroller Programmierung am Beispiel von Atmel AVR
Mikrocontroller sind heute in fast jedem technischen System zu finden – von energieeffizienten Sensorknoten bis hin zu industriellen Steuergeräten. In diesem praxisorientierten Kurs lernen die Teilnehmer einen strukturierten Einstieg in die Low-Level-Embedded-Softwareentwicklung mit 8-Bit-AVR-Mikrocontrollern in C. Ziel ist es, ein solides Verständnis dafür zu entwickeln, wie Hardware und Software interagieren und wie man saubere, gut strukturierte Firmware entwickelt, indem man nah an der Registerebene und mit On-Chip-Peripheriegeräten arbeitet.
Anhand praktischer Übungen richten die Teilnehmer einen kompletten Entwicklungsworkflow ein und wenden ihn an: Bearbeiten und Erstellen von Code, Flashen des Ziels und Debuggen auf realer Hardware. Anstatt sich auf High-Level-Frameworks zu stützen, konzentriert sich der Kurs auf das Verständnis der Hardware-Subsysteme des Mikrocontrollers. Die erlernten Konzepte sind auch auf andere Mikrocontroller-Familien anwendbar.
Nach Abschluss des Kurses sind die Teilnehmer in der Lage:
- eine vollständige AVR-Entwicklungsumgebung mit MPLAB X IDE und GCC einzurichten
- C-Programme für AVR-Mikrocontroller zu entwickeln, zu kompilieren und zu flashen
- Pins und Ports direkt über Register zu konfigurieren und zu steuern
- On-Chip-Peripheriegeräte (Timer, ADC, PWM, serielle Schnittstellen) effektiv zu nutzen
- einfache Echtzeit-ähnliche Firmware ohne Betriebssystem strukturieren
- typische Probleme systematisch analysieren und debuggen
- Datenblätter effizient lesen und nutzen sowie Hardware-/Software-Schnittstellen verstehen
Zielgruppe
- Entwickler und Ingenieure mit Interesse an eingebetteten Systemen
- Softwareentwickler, die sich mit Low-Level-Hardware-orientierter Programmierung vertraut machen möchten
- Elektronikentwickler, die ihre eigene Firmware schreiben möchten
Trainer und Dozenten
Prof. Dr.-Ing. Steffen Kaufmann ist Professor für Elektronik und Sensortechnik. In Lehre und Forschung beschäftigt er sich mit intelligenten Sensorsystemen, nicht-invasiven Messverfahren und eingebetteten Systemen, wobei sein Schwerpunkt auf der Entwicklung robuster, industrietauglicher Elektronik und Firmware liegt.
Als promovierter Elektroingenieur verbindet er wissenschaftlich fundierte Methoden mit praktischer Erfahrung im Entwurf eingebetteter Systeme. Seine Lehrveranstaltungen verfolgen einen ingenieurwissenschaftlichen Ansatz für die Entwicklung eingebetteter C-Systeme: vom Verständnis der Mikrocontroller-Architekturen und Datenblätter über eine saubere Firmware-Struktur und hardwarebezogene Fehlersuche bis hin zur zuverlässigen Nutzung von On-Chip-Peripheriegeräten.
Die Teilnehmer profitieren von einem klar strukturierten Unterrichtsstil, zahlreichen Best-Practice-Richtlinien und praktischen Arbeitsabläufen, wie sie in realen Embedded-Projekten erforderlich sind – insbesondere an der Schnittstelle zwischen Hardware und Low-Level-C-Firmware sowie beim Testen, Debuggen und Vorbereiten von Systemen für den zuverlässigen Betrieb im Feld.
Voraussetzungen
- Grundkenntnisse in C, wie Sie sie in unserer Schulung C Programmierung erlernen können.
- Grundkenntnisse in Elektronik (Spannung, Strom, digitale Signale)
- Manuals und Datenblätter der im Kurs eingesetzten Hardware liegen nur in englischer Sprache vor.
Inhalt
Grundlagen und Überblick
- Mikrocontroller im Systemkontext
- Architektur typischer 8-Bit-AVR-Controller
- Speichertypen: Flash, SRAM, EEPROM
- Registermodell und Peripheriekonzept
Tools und Entwicklungsumgebung
- Übersicht über die Toolchain: Editor, Compiler, Programmierer, Debugger
- Arbeiten mit MPLAB X IDE
- Projektstruktur, Build-Prozess, HEX/ELF-Datei
- Flashen des Controllers, Grundlagen der Fuse-Einstellungen
Digitale E/A
- Ports, Pins, Richtungsregister
- Ansteuern von LEDs, Auslesen von Tasten
- Timing-Verhalten und einfache Verzögerungsfunktionen
Timer und Zeitbasis
- Grundlagen zu Timer/Zähler
- Periodische Aufgaben und Zeitmessung
- Software-Timer und einfache Scheduler-Konzepte
Analog-Digital-Wandlung (ADC)
- Funktionsweise des ADC
- Konfiguration auf Registerebene
- Messung analoger Spannungen (z. B. Potentiometer)
- Verarbeitung gemessener Werte
Pulsweitenmodulation (PWM)
- PWM-Prinzip
- Erzeugen von PWM-Signalen mit Timern
- Steuern der LED-Helligkeit
- Kombinieren von ADC-Eingang mit PWM-Ausgang
Kommunikationsschnittstellen (Übersicht)
- UART (serielle Schnittstelle)
- I2C/TWI und SPI: Anwendungsfälle und Grundprinzipien
Programmstruktur und Methoden
- Strukturierung größerer eingebetteter Programme
- Zustandsmaschinen
- Verwendung von ganzzahliger Festkommaarithmetik
- Kooperative Parallelität ohne Betriebssystem
Debugging und Robustheit
- Typische Fehlerquellen in eingebetteten Systemen
- Systematisches Testen mit einfachen Mitteln
- Reset-Ursachen, Watchdog, Brown-Out-Erkennung
- Lesen und Anwenden von Errata
Praktische Arbeit
- Übersicht über die Toolchain: Editor, Compiler, Programmierer, Debugger
- Arbeiten mit MPLAB X IDE
- Projektstruktur, Build-Prozess, HEX/ELF-Datei
- Flashen des Controllers, Grundlagen der Fuse-Einstellungen
Digitale E/A
- Ports, Pins, Richtungsregister
- Ansteuern von LEDs, Auslesen von Tasten
- Timing-Verhalten und einfache Verzögerungsfunktionen
Timer und Zeitbasis
- Grundlagen zu Timer/Zähler
- Periodische Aufgaben und Zeitmessung
- Software-Timer und einfache Scheduler-Konzepte
Analog-Digital-Wandlung (ADC)
- Funktionsweise des ADC
- Konfiguration auf Registerebene
- Messung analoger Spannungen (z. B. Potentiometer)
- Verarbeitung gemessener Werte
Pulsweitenmodulation (PWM)
- PWM-Prinzip
- Erzeugen von PWM-Signalen mit Timern
- Steuern der LED-Helligkeit
- Kombinieren von ADC-Eingang mit PWM-Ausgang
Kommunikationsschnittstellen (Übersicht)
- UART (serielle Schnittstelle)
- I2C/TWI und SPI: Anwendungsfälle und Grundprinzipien
Programmstruktur und Methoden
- Strukturierung größerer eingebetteter Programme
- Zustandsmaschinen
- Verwendung von ganzzahliger Festkommaarithmetik
- Kooperative Parallelität ohne Betriebssystem
Debugging und Robustheit
- Typische Fehlerquellen in eingebetteten Systemen
- Systematisches Testen mit einfachen Mitteln
- Reset-Ursachen, Watchdog, Brown-Out-Erkennung
- Lesen und Anwenden von Errata
Praktische Arbeit
- Grundlagen zu Timer/Zähler
- Periodische Aufgaben und Zeitmessung
- Software-Timer und einfache Scheduler-Konzepte
Analog-Digital-Wandlung (ADC)
- Funktionsweise des ADC
- Konfiguration auf Registerebene
- Messung analoger Spannungen (z. B. Potentiometer)
- Verarbeitung gemessener Werte
Pulsweitenmodulation (PWM)
- PWM-Prinzip
- Erzeugen von PWM-Signalen mit Timern
- Steuern der LED-Helligkeit
- Kombinieren von ADC-Eingang mit PWM-Ausgang
Kommunikationsschnittstellen (Übersicht)
- UART (serielle Schnittstelle)
- I2C/TWI und SPI: Anwendungsfälle und Grundprinzipien
Programmstruktur und Methoden
- Strukturierung größerer eingebetteter Programme
- Zustandsmaschinen
- Verwendung von ganzzahliger Festkommaarithmetik
- Kooperative Parallelität ohne Betriebssystem
Debugging und Robustheit
- Typische Fehlerquellen in eingebetteten Systemen
- Systematisches Testen mit einfachen Mitteln
- Reset-Ursachen, Watchdog, Brown-Out-Erkennung
- Lesen und Anwenden von Errata
Praktische Arbeit
- PWM-Prinzip
- Erzeugen von PWM-Signalen mit Timern
- Steuern der LED-Helligkeit
- Kombinieren von ADC-Eingang mit PWM-Ausgang
Kommunikationsschnittstellen (Übersicht)
- UART (serielle Schnittstelle)
- I2C/TWI und SPI: Anwendungsfälle und Grundprinzipien
Programmstruktur und Methoden
- Strukturierung größerer eingebetteter Programme
- Zustandsmaschinen
- Verwendung von ganzzahliger Festkommaarithmetik
- Kooperative Parallelität ohne Betriebssystem
Debugging und Robustheit
- Typische Fehlerquellen in eingebetteten Systemen
- Systematisches Testen mit einfachen Mitteln
- Reset-Ursachen, Watchdog, Brown-Out-Erkennung
- Lesen und Anwenden von Errata
Praktische Arbeit
- Strukturierung größerer eingebetteter Programme
- Zustandsmaschinen
- Verwendung von ganzzahliger Festkommaarithmetik
- Kooperative Parallelität ohne Betriebssystem
Debugging und Robustheit
- Typische Fehlerquellen in eingebetteten Systemen
- Systematisches Testen mit einfachen Mitteln
- Reset-Ursachen, Watchdog, Brown-Out-Erkennung
- Lesen und Anwenden von Errata
Praktische Arbeit
Der Kurs basiert größtenteils auf schrittweisen Laborübungen an realer Hardware. Von der ersten blinkenden LED über analoge Messungen bis hin zu PWM-Anwendungen bauen die Teilnehmer schrittweise ein funktionierendes eingebettetes System auf.
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.
Termine und Anmeldung
Haben Sie einen anderen Wunschtermin?

