Pony-Prog Tutorial
Hex-Dateien mittels PonyProg zum AVR-Controller übertragen
Diese Anleitung beschreibt, wie vom Assembler (z.B. AVR-Studio) oder C-Compiler (z.B. avr-gcc/winavr) erzeugte HEX-Dateien auf einen ATMEL AVR-Mikrocontroller übertragen werden. Die vorgestellte Lösung basiert auf freier oder kostenloser Software und low-cost-Hardware. Anfängern mit nicht allzu eingeschränkten finanziellen Möglichkeiten wird angeraten, sich das ATMEL STK500 Enwicklungskit zuzulegen. Diese Kit wird von ATMEL offiziell unterstützt und ist leichter zu handhaben. Bezugsquellen für das STK500 z.B.
Benötigte Ausstattung
- Programmier-Software PonyProg 2000 von www.lancos.com für
diese Anleitung wurde PonyProg 2000 Version 2.06 beta genutzt.
- [STK200]-kompatible Programmier-Hardware (Programmieradapter). Fertig zu kaufen bei:
- shop.mikrocontroller.net
- www.embedit.de
- Ebay
oder selbst bauen nach:
- http://rumil.de/hardware/avrisp.html
- www.lancos.com/prog.html Abschnitt "AVR ISP (STK200/300) parallel port interface"
- AVR-Controller-Board mit ISP-Anschluss (siehe weiter unten)
Um schon in der Anfangsphase Probleme zu vermeiden, sollte der Controller beim Einsatz eines STK200-Programmieres mit 5 Volt betrieben werden. Geringere Spannungen werden nicht von allen Programmieradaptern unterstützt. Höhere Spannungen zerstören mglw. den Controller oder den Parallelport des PCs.
PonyProg installieren und einrichten
Pronyprog kommt mit einem Installationsprogramm, einfach starten. Einstellung der Programmierhardware (STK200 ISP DONGLE) in Ponyprog unter Setup/Inteface-Setup nach folgender Abbildung:
Im Anschluss PonyProg die Zeitschleifen kalibieren lassen (Menüpunkt Setup/Calibration).
PonyProg unterstützt die automatische Erkennung von AVR-Controllern, um Probleme zu vermeiden, sollte man den Controllertyp jedoch manuell einstellen. Für einen ATmega16 z.B. so:
Hardwareverbindung herstellen
Auf der Controller-Platine (Controllerboard) ist ein Anschluss für den Programmieradapter erforderlich. Überlicherweise wird dazu eine 10-polige "Pfostenwanne" (5 Pole in 2 Reihen, "PSW10G" bei Reichelt) genutzt (siehe Abbildung). Dieser Anschluss ist auch kompatibel zum ATMEL AVRISP Programmiergerät.
Die Anschlussbelegung (entnommen aus der AVRISP Online-Benutzeranleitung):
| Signal | Pins | E/A (aus "Sicht" des Programmieradapters) | Beschreibung |
| VTG | 2 | (Eingang) | Stomversorgung des Programmiergeräts, mit +5V Versorgung des Controllerboards verbinden |
| GND | 3,4,6,8,10 | (Eingang) | Masse, Ground, mit Ground des Controllerboards verbinden |
| MOSI | 1 | Ausgang | Datenleitung vom Programmeradapter zum Controller, mit MOSI des AVR verbinden |
| MISO | 9 | Eingang | Datenleitung vom Controller zum Programmieradapter, mit MISO des AVR verbinden |
| SCK | 7 | Ausgang | Programmier-Takt-Leitung (PA->AVR), mit SCK des AVR verbinden |
| RESET | 5 | Ausgang | Resetleitung, wird durch das Programmiergerät bei der Programmierung auf "LOW gezogen", mit RESET des AVR verbinden |
Sogennante "value-added" Programmieradapter unterstützen an PIN 3 den Anschluss einer LED, mit der ein Zugriff auf den Controller
durch den Programmieradapter angezeigt werden kann. Weiters dazu in den Beschreibungen der Programmierhardware auf den o.g. Seiten.
Angangs sollte vermieden werden, die Anschlusse MOSI, MISO und SCK des Controllers als allgemeine Ein- und Ausgabeanschlüsse oder zur Verbindung mit
SPI-Pherpherie zu nutzen, also diese Leitungen ausschliesslich mit dem Programmieranschluss (Pfostenwanne) verbinden.
Zur Programmierung mittels ISP muss der Controller mit einer "Taktquelle" ausgestattet sein, modernere AVRs sind mit einem internen
Oszillator (1 MHz Takt) ausgestattet, der ab Werk aktiviert ist, bei diesen sind keine zusätzliche externen Bauteile erforderlich.
An AVRs ohne internen Oszillator (z.B. die veraltete "AT90S"-Serie) muss zur ISP-Programmierung ein externen Taktgeber
(z.B. Quarz mit Kondensatoren) angeschlossen werden.
Der ISP Anschluss wird zur Programmierung mit dem Programmieradapter verbunden, der PC-seitige Anschluss erfolgt an die Druckerschnittstelle (Parallelport, LPT). Es empfiehlt sich, die Stomversorgung des Controllerboards beim an- und abstecken abzuschalten.
Programmierung des Controllers
Schritt 1: Hex-Datei in Ponyprog laden
In PonyProg Menü: File/Open-Device-File... wählen, im Dialog die HEX-Datei auswählen und mit [OK] in Ponyprog laden.
Schritt 2: Daten zum Controller übertragen
In Ponyprog Menü: Command/Wite All wählen. Ponyprog übertragt die Daten aus der HEX-Datei dann auf den Controller ("flashen") und verfiziert im Anschluss, ob dieser Schreibvorgang fehlerfrei durchgeführt wurde, indem der Inhalt des Controller-Flash-Speichers gelesen und mit dem Inhalt der HEX-Datei verglichen wird. Der Inhalt des EEPROM wird bei der Programmierung gelöscht, d.h. alle Speicherstellen des EEPROM-Speichers im AVR werden auf $FF gesetzt.
Martin Thomas, 29.10.2003


