Folge 27: AVR-Programmierung
Der Mikroprozessor (µC)
→Mikroprozessoren sind eine feine Sache, wenn man komplexe Signalverarbeitung mit wenig Elektronik realisieren möchte. Statt einer aufwendigen Schaltung hat man dann eine flexibel gestaltbare Software. DoktorRail verwendet →Atmel AVRs (mittlerweile Microchip), deren Software mit der →Programmiersprache C entwickelt wird. Beispiele sind →die Aufzugselektronik mit →Software oder der →DCC-Stack.

Was braucht man, um Mikroprozessoren zu programmieren?
- Computer (Laptop) mit Windows
- Atmel Studio (das ist die IDE => siehe unten)
- AVR-Programmer
- Target (Atmel AVR Mega8)
AVR-IDE Atmel Studio (IDE = Integrated Development Environment)
- →Atmel Studio (hier in der Version 7)
- lauffähig unter Windows (hier Version 10)
In der IDE legt man C-Projekte an, entwickelt sie und kann sie schließlich compilieren, linken und auf den Atmel “schieben”. Dazu gibt es den Programmer, er stellt die Verbindung zwischen dem PC und dem Target (dem Atmel) her.
Der AVR-Programmer
Der Programmer ist vom Typ →AVRISP mkII:

Wie bereits angedeutet, hat er einen USB-Anschluss für den PC und eine 6-polige Schnittstelle für das Target.
Eine Minimal-Beschaltung des Targets
Als Target kommt hier ein →Mega 8 zum Einsatz. Die →Fuse-Bits sind so gesetzt, dass der interne RC-Oszillator verwendet wird. So muss für dieses Beispiel kein externes Quartz als Taktgeber angeschlossen werden.
- Reset (Pin 1) mit Widerstand 560k an Vcc (Pin 7). Normalerweise sollte hier noch ein Entstörkondensator gegen Masse geschaltet werden. Diesen habe ich hier aber mal unterschlagen. Für dieses Beispiel ist der Reset-Pin stabil genug auf “Logisch-Eins”.
- LED (Anode an Pin 4) über Widerstand an Gnd (Pin 8)
- Vcc (Pin 7), Gnd (Pin 8)
- 6 ISP-Kabel (ISP = In System Programmable):
- Reset (Pin 1)
- Vcc (Pin 7)
- Gnd (Pin 8)
- SCK (Pin 19)
- MISO (Pin 18)
- MOSI (Pin 17)

Das wäre dann auch schon alles.
Programmiervorgang
Die Software wird zunächst compiliert. Wenn das fehlerfrei durchführbar ist, wird automatish auch gelinkt. Die resultierende *.hex Datei (das Binary) wird dann vom Programmer auf das Target geladen (dazu dient die 6-polige ISP-Verbindung). Abhängig vom Logikpegel des Reset-Pins läuft auf dem AVR entweder die programmierte Software (Logisch-Eins), oder der AVR ist im Programmiermodus (Logisch-Null). Letzteres wird über den Programmer erledigt. Das Übertragen der eigentlichen Software erfolgt dann über MISO, MOSI & SCK. Nach der Schreib-Prozedur läuft das Programm auf dem Target dann von vorne los und die Schaltung kann mit dem IC ihre eigentliche Funktion aufnehmen.
Die Tatsache, dass der Mikrocontroller zum Beschreiben nicht aus der Schaltung (Fassung) entfernt werden muss, nennt man auch ISP-fähig (In-System-Programmable, also in der Schaltung programmierbar).
Software für AVRs
Wie bekommt man nun Software für sein Projekt?
- Herunterladen bei →DoktorRails Github oder
- selber entwickeln!
Weiterführende Links
Die mit Abstand beste Community für Elektronik und µC-Entwicklung ist →mikrocontroller.net. Insbesondere das →AVR-Anfänger-Tutorial sei hier jedem ans Herz gelegt. Auch wenn es am Anfang alles recht einfach aussieht, gibt es wie in jedem Bereich einige Fallstricke. Diese können einem manchmal die Laune verderben.
Fazit
Mit relativ wenig Aufwand lässt sich eine effiziente Signalverarbeitung (z.B. Verarbeiten von DCC-Signalen) auf einem Mikroprozessor realisieren. So sind Schaltungen wie die →Aufzugssteuerung mit viel Funktionalität für einen sehr geringen Preis, meistens deutlich unter 5€ möglich. Auch der →DCC-Servodecoder ist mit einem Atmel realisiert.

Schreibe einen Kommentar