Layerbasierte Embedded-Systems-Laborübung mit MSP430F5335 und Crazy Car Plattform. Ziel ist die Entwicklung eines autonomen Mini-Fahrzeugs inkl. GPIO, Timer, PWM, ADC (DMA), SPI-Display, Sensorik und Regelalgorithmen in C. Projektstruktur mit HAL, DL, AL. Entwicklung mit Code Composer Studio.
Dieses Repository begleitet die Embedded-Systems-Laborreihe im Studiengang Elektronik und Computer Engineering (FH JOANNEUM). Im Zentrum steht die systematische Entwicklung eines autonomen Fahrzeugs (Crazy Car) auf Basis des MSP430F5335-Mikrocontrollers.
Die Übung vermittelt praxisnah:
- Hardwarenahe C-Programmierung
- Strukturierte Layer-Architektur (HAL / DL / AL)
- Debugging, Registerzugriffe, ISR
- Modularisierung und Wiederverwendbarkeit von Komponenten
1–3: Einführung, GPIO, Timer
- Überblick zur Crazy Car Platine
- Softwarearchitektur: HAL, DL, AL
- Projektstruktur in CCS
- Git-Versionierung & Setup
- GPIO-Initialisierung
- Interruptgesteuerte Tasterauswertung
- Performancevergleich: Integer vs. Float
- Debugging (Breakpoints, Register, Expressions)
- Unified Clock System (UCS)
- TimerB0: ISR-basierte LED/PWM-Steuerung
- Frequenzmessung per Oszilloskop
4–6: PWM, SPI, Display
- PWM mit TimerA1
- Ansteuerung von Servo & ESC
- Driver Layer für Lenkung und Gas
- USCI_B1 SPI-Konfiguration
- Interruptgesteuerte Übertragung
- CS-Signal Handling
- Displayinitialisierung (ST7565)
- Zeichenausgabe, Cursorpositionierung
- Zeichentabelle und Clear-Routinen
7-9: ADC, DMA, Sensorik
- Einrichtung des ADC12_A
- Timer-gesteuerte Abtastung (120 Hz)
- Zwischenspeicherung in Datenstruktur
8. ADC mit DMA
- DMA0 für automatischen Speichertransfer
- Status-Flag Handling
- Messung und Darstellung der Sensor-Kennlinie
- Linearisierung: Lookup-Table vs. Approximation
- Filterung
10: Fahralgorithmen
10. Fahralgorithmen
- Zustandsautomat: Links / Mitte / Rechts
- Regler (z. B. PID) für Lenkung und Geschwindigkeit
- Umsetzung einfacher Fahrstrategien:
- Bandeverfolgung
- Spurmitte halten
- Kurvenkompensation
- Nutzung aller verfügbaren Sensoren
- Modularisierung der Embedded Software (Layerstruktur)
- Verständnis für low-level Hardwareansteuerung
- Entwicklung von Steuerungs- und Regelalgorithmen
- Erweiterung um zusätzliche Peripherie und Sensordatenverarbeitung
- Umsetzung eines lauffähigen autonomen Systems auf Mikrocontroller-Basis
Die Projektstruktur folgt dem klassischen Layer-Prinzip:
- HAL – Hardware Abstraction Layer (Registerzugriff)
- DL – Driver Layer (Komponentensteuerung)
- AL – Application Layer (Applikationslogik, Statemachine)
- main.c – Einstiegspunkt, Systeminitialisierung
- include – Globale Header und Definitionen
- Mikrocontroller: MSP430F5335 (Texas Instruments)
- Entwicklungsumgebung: Code Composer Studio (TI)
- Debugger: Spy-by-Wire / JTAG
- Dokumentation: TI User Guide, Schaltpläne, Datenblätter
- Versionsverwaltung (optional empfohlen): GitLab, GitHub, Git
- Grundkenntnisse in C (Bitmasken, Pointer, Headerstrukturen)
- Verständnis für Mikrocontroller-Peripherie
- Umgang mit Code Composer Studio und Debugging-Werkzeugen
Es wird empfohlen, das Projekt versionsverwaltet in einem GitLab- oder GitHub-Repository zu entwickeln. Ein typischer Initialisierungsvorgang:
git init
git remote add origin https://gitlab.com/<benutzer>/<projekt>.git
git add .
git commit -m "Initial commit"
git push -u origin master