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.

Laptop mit Programmer und Breadboard, auf welchem der Mikrocontroller platziert ist

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:

Atmel 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)
Minimalbeschaltung des Mega 8 auf dem Breadboard und…
als Schaltplan (Kondensator C1 wurde auf dem Breadboard weggelassen)

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?

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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.