Inhaltsverzeichnis
Einführung
Als Programmer bezeichnet man die Hardwarekomponente, mit der das ausführbare Mikrocontrollerprogramm (Firmware, HEX-File) auf den Controller übertragen wird. Es gibt verschiedene Konzepte der Programmübertragung neben dem Konzept des Bootloaders, der Parallelprogrammierung und des JTAG-Interfaces spielt bei Atmel Mikrocontrollern das Verfahren des "serial Download" eine große Rolle. Bekannt ist diese Variante der Programmierung als ISP (In System Programmierung). Dabei wird das SPI (Serial Processor Interfase) genutzt, welches bei fast allen AVR-Controllern zu finden ist. ISP-Programmer zeichnen sich dadurch aus, dass der Hardwareaufwand für diese sehr gering ist. Das hat natürlich Auswirkungen auf den Preis. Für einen "Standard" ISP Parallel-Programmer liegen die Materialkosten im Cent-Bereich. Bei solchen "billig" Programmern werden die eigentlichen Programmierprotokolle (siehe Abschnitt Memory Programing in AVR Datenblättern) durch ein entsprechendes Programm auf dem PC erzeugt (AVR-Prog, PonyProg, YAAP, AVRDUDE, Bascom usw.) und die Programmerhardware ist bestenfalls zur Pegelanpassung da. Letztlich gibt es sogar derartige Programmer, die nur aus drei Schutzwiderständen bestehen. Meist wir aber ein kleiner preiswerter Treiberbaustein eingebaut, der für eine sichere Datenübertragung auch bei längeren Programmierkabeln sorgt. Damit ist ein extrem günstiger Einstieg in die Programmierung von Atmel AVR-Controllern möglich. Aufwendiger werden dann Programmer, die tatsächlich über eigene "Intelligenz" verfügen. Dabei handelt es sich in der Regel um so genannte Serial-Programmer. Hier erfolgt die Datenübertragung an den Programmer per serieller Schnittstelle oder über USB. Der Programmer selbst besitzt einen Controller, der die Daten empfängt und das Programmierprotokoll ausführt. Der weit verbreitete SI-Prog (siehe PonyProg) wird zwar an die Serielle Schnittstelle angeschlossen ist dem Wesen nach aber den Parallelprogrammern äquivalent (einfache Pegelanpassung, keine eigene Intelligenz). Darin liegt auch die Ursache, warum der SI-Prog nie an einem handelsüblichen USB zu Serial-Adapter laufen wird.
Parallelport ISP Programmer
STK 200 kompatible Programmer
Bei den Parallelportprogrammern handelt es sich oft um Nachbauten von Programmierintrefaces der ersten Starterkits von ATMEL dem STK200 oder STK300. Damit wird auch geworben in dem man diese als STK200 kompatibel oder als sogenannte Standard-ISP-Programmer bezeichnet. Der Vorteil dieser Programmer liegt tatsächlich darin, dass so ziemlich jede Programmersoftware diese unterstützt. Die Kompatibilität bezieht sich hier auf die Belegung der Leitungen am LPT-Port. Es hat nichts mit der Verwendung eines Treiberschaltkreises bei den meisten dieser Programmer zu tun.
LPT-Pinning des STK200 SCK = 6; MOSI = 7; RESET = 9; MISO = 10;
SP12 kompatible Programmer
Bei dem SP12 (von Steve Bolt) Programmer handelt es sich ursprünglich um eine extrem einfache Lösung bei der nur drei Schutzwiderstände und keine weitere Pegelanpassung benutzt wurde. Dieser Programmer zum fast Nulltarif erfreut sich großer Beliebtheit. Der Hauptgrund dafür liegt aber in seiner Schaltungslösung die es erlaubt das Zielsystem über den LPT-Port mit Spannung zu versorgen. Bei der STK200 Schaltung muss der Programmer vom Zielsystem versorgt werden. Man braucht beim SP12 also zum Programieren kein zusätzliches Netzteil. Inzwischen werden ernsthafte SP12 Programmer auch mit deinem Bustreiber versehen.
LPT-Pinning des SP12 VCC = 4,5,6,7,8; RESET = 3; SCK = 2; MOSI = 9; MISO = 11;
Pseudo serielle Programmer (SI-Prog)
Ein Programmer, der vor allem wegen seiner guten Unterstützung durch das beliebte PonyProg eine weite Verbreitung erfahren hat, ist der SI-Prog. Dieser wird oft als serieller Programmer bezeichnet. Richtig ist, dass er an den COM-Port des PCs angeschlossen wird. Aber die Schaltung verrät, daß hier die Steuerleitungen wie DTR, RTS und CTS des COM-Ports verwendet werden, um ein SPI-Protokoll zu fahren. Die eigentlichen Signalleitungen TxD und RxD sind bei diesem Adapter gar nicht angeschlossen. Damit ist es auch beim besten USB-RS232-Adapter nicht möglich, diesen Programmer an einem modernen Notebook anzuschließen, der nur noch über USB verfügt. Deshalb kann PonyProg dann nicht mehr als Programmiertool verwendet werden.
Echte serielle Programmer
Echte serielle Programmer basieren entweder auf dem Atmel Application-Note AN910 oder sind STK500 kompatible Programmer. Allen gemeinsam ist das Vorhandensein eines Controllers mit entsprechender AVR910 oder STK500 kompatibler Firmware. Diese kann meist über einen Bootloader aktualisiert werden. Da ein Controller und eine reguläre RS232 Pegelanpassung (z.B. mit einem MAX232) empfindlich kostenintensiver als das Material für einen Parallelprogrammer ist, sind diese in der Regel auch teurer. Dafür erhält man aber eine kompatible Lösung die, wie der STK200, durch die meisten Flash-Tools unterstützt wird und man kann diese mit einem handelsüblichen USB-Serial-Adapter auch an Systemen betreiben, die wie viele Notebooks heute nur noch über USB verfügen. Wichtige Weiterentwicklungen bei den Serialprogrammern ist das AVR911 und das STK500v2 Protokoll. Man sollte beim Neuerwerb darauf achten dass eines dieser aktuellen Protokolle unterstützt wird.
USB Programmer
Bei USB-Programmern handelt es sich eigentlich nicht um eine eigenständige Gruppe von Programmern sondern um AVR910 oder STK500 kompatible Lösungen. Das Besondere ist hier, dass der Programmer selbst über einen USB-Controller verfügt. Dabei muss ein Treiber für diesen Controller installiert werden der im System einen virtuellen COM-Port zur Verfügung stellt. Beim Betrieb dieser Programmer gibt es keine Unterschiede zu den seriellen Programmern. Leider sind USB Programmer dadurch das die USB Controller recht teuer und ausschließlich in SMD verfügbar sind also Selbstbauprojekte für Anfänger ungeeignet.
ISP-Anschluss
10poliger ISP Anschluss
Die am meisten verwendete Steckerbelegung, nicht nur Im Roboternetz. Genauere Beschreibung unter RN-Definitionen. Nahezu alle RN-Bauanleitungen nutzen diese Belegung.
1 - MOSI 2 - VCC 3 - LED (oft auch unbelegt) 4 - GND 5 - RST 6 - GND 7 - SCK 8 - GND 9 - MISO 10 - GND
6poliger ISP Anschluss
Wenige im Roboternetz gebräuchlich
1 - MISO 2 - VCC 3 - SCK 4 - MOSI 5 - RST 6 - GND
Autor
- Martin Fiedler
- Kleinere Änderungen Frank
Siehe auch
- AVR-ISP Programmierkabel- Bauanleitung Bauanleitung Parallel Programmer ISP
- ISP
- RN-Definitionen
Weblinks
- Rowalt Bauanleitung Parallel Programmer
- Atmel Serialprogrammer
- Klaus-Leidinger Serialprogrammer Bauanleitung
- Bauanleitung Serialprogrammer Englisch Evertool
- USBasp von fischl.de: USB-Programmer für Atmel AVR Controller - Bauanleitung, Weblinks zu Schaltplänen und Layouts (Eagle, PDF), Linux und Win32, Firmware mit Quelldateien, Win32-Treiber.
- USB-Programmer Bauanleitung
- USB-Programmer Bauanleitung