RoboterNetz.de Foren-▄bersicht               
 RN-Wissen Home  -  Community Home  -  Alle Artikel -  Mitglieder -  Moderatoren  -  Bilderliste  -  Letzte ├änderungen
 Kategorien  -  Beliebte Seiten  -  Sackgassenartikel  -  Artikel ohne Kategorie  -  Neue Artikel  -  Anmelden

Programmer

aus RN-Wissen, der freien Wissensdatenbank

Inhaltsverzeichnis

Einf├╝hrung

Als Programmer wird die Hardwarekomponente bezeichnet, 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 Interface) 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 wird 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 Programmierinterfaces 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 - nur direkt von AVRStudio geht es nicht. 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. Es wird beim SP12 also zum Programieren kein zus├Ątzliches Netzteil ben├Âtigt. Inzwischen werden ernsthafte SP12 Programmer auch mit einem 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 oft 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) kostenintensiver als das Material f├╝r einen Parallelprogrammer ist, sind diese in der Regel auch teurer. Daf├╝r ist aber eine kompatible L├Âsung erh├Ąltlich, die, wie der STK200, durch die meisten Flash-Tools unterst├╝tzt wird und auch mit handels├╝blichen USB-Serial-Adaptern betrieben werden kann.


Das alte Protokoll nach AN910 ist problematisch bei der Unterst├╝tzung neuer Controller, denn hier mu├č der Programmer die ID des Controllers kennen. F├╝r neue Controller braucht man also ein Update der Software im Programmer. Wichtige Weiterentwicklungen bei den Serialprogrammern ist das AVR911 und das STK500v2 Protokoll. Es sollte beim Neuerwerb darauf geachtet, dass eines dieser aktuellen Protokolle unterst├╝tzt wird.

USB Programmer

Aufbau eines einfachen USBasp
vergr├Â├čern
Aufbau eines einfachen USBasp
Einfacher USBasp
vergr├Â├čern
Einfacher USBasp

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 eine USB-Schnittstelle verf├╝gt und deswegen ohne Weiteres an neuere PCs angeschlossen werden kann. Unter Windows muss in aller Regel ein entsprechender Treiber installiert werden, der im System einen virtuellen COM-Port zur Verf├╝gung stellt, unter Linux hingegen ist dies normalerweise nicht notwendig, weil solche Ger├Ąte von Haus aus unterst├╝tzt werden.

F├╝r langsame USB-Geschwindigkeiten kann ein AVR-Mikrocontroller das USB-Interface emulieren. Es gibt Baupl├Ąne f├╝r g├╝nstige Programmierer, die so auf den extra USB Controller verzichten (z.B. USB AVR-Lab, AVR-Doper, USBasp, siehe Weblinks). Das USB-Protokoll ist meistens nur minimalistisch und nicht vollst├Ąndig umgesetzt, wodurch es theoretisch zu Inkompatibilit├Ąten kommen kann.

Nichts desto trotz hat die Nutzung der AVR als virtuelle USB-Controller den gro├čen Vorteil, dass sich nun ohne SMD-Bauteile auch USB-Programmierer bauen lassen, die an modernen Laptops, ohne serielle Schnittstelle funktionieren.

JTAG & PDI Programmer

Mit ver├Âffentlichung der Xmegas hat sich ATMEL vom ISP Standard getrennt, statt dessen komt PDI oder JTAG zum Einsatz.

Anbieter entsprechender Programmieradapter sind z.Zt. sp├Ąrlich.

Im Internet und auch hier im RN-Wissen st├Âsst man auf der Suche nach JTAG-Programmern schnell auf eine Nachbauversion des JTAG ICE, dieser ist der vorl├Ąufer des mmt. aktuellen JTAG ICE MKII. Der JTAG ICE unterst├╝tzt nach meinen Recherchen jedoch nicht die aktuellen X-Megas.

Auf der suche nach entsprechende Programmern bin ich, bis auf einen, auf die relativ teuerern und f├╝r Hobbyisten unerschwinglichen Programmer gestossen.

JTAG ICE MKII [1]
AVR-ONE! [2]   
AVR-Dragon [3]

letzter unterst├╝tzt u.a. ISP, JTAG und PDI Programmierung, also alles was man ben├Âtigt.

Der AVR-Dragon ist von den aufgef├╝hrten Ger├Ąte mmt. die g├╝nstigste variante (ca ÔéČ50,-) soll allerdings etwas empfindlch sein und ├╝ber keinerlei Schutzmechanismen verf├╝gen und keinerlei Ausstattung (Kabel/Anleitung) bereit stellen.


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

Nur in wenigen Roboternetz-Projekten gebr├Ąuchlich. Dieser Stecker spart etwas Platz, ist aber teurer als die zehnpolige Variante.

1 - MISO
2 - VCC
3 - SCK
4 - MOSI
5 - RST
6 - GND

Adapter 10polig <-> 6polig

Ein Adapter zur Verbindung der beiden Steckerarten l├Ąsst sich einfach auf einem St├╝ck Lochrasterplatine aufbauen. Hier ein m├Âgliches Layout, mit dem ein sehr platzsparender Aufbau m├Âglich ist.

Am besten baut man die Schaltung auf einer Platine mit Punktraster auf, dann muss man keine Leiterbahnen auftrennen.

Wichtig ist, dass Pin 3 des zehnpoligen Steckers vor dem L├Âten entfernt wird (l├Ąsst sich mit einer Zange herausziehen, ggf. vorher den Pin etwas mit dem L├Âtkolben erw├Ąrmen). Dann kann die Masseverbindung von Pin6/sechspol zu Pin4,6,8,10/zehnpol einfach auf der Unterseite durch diese L├╝cke gef├╝hrt werden. So ergibt sich ein besonders einfaches Layout ohne Leitungskreuzungen.

Nun werden die Stecker eingel├Âtet, und alle Verbindungen auf der Unterseite der Platine hergestellt. Da sich dabei keine Leitungen ├╝berkreuzen, kann unisolierter Draht verwendet werden. Um ihn stabil zu befestigen, kann man ihn noch auf die unbelegten L├Âtaugen entlang des Drahtes anl├Âten.

Schlie├člich empfiehlt es sich (nach erfolgreichem Funktionstest) die Unterseite der Platine zu isolieren (z.B. mit Klebeband), damit keine Kurzschl├╝sse mit anderen metallischen Gegenst├Ąnden auftreten k├Ânnen.

Bild:Ispadapter.jpg Bild:Ispadapter layout.png
ISP-Adapter Lochraster-Layout

Autor

Siehe auch

Weblinks

'Pers├Ânliche Werkzeuge

RN-AVR Universal
Controllerboard
und universelle
Experimentierplatine
f├╝r nur 29,80 Euro
robotikhardware.de


Lichtprofi.de
LED Shop
www.lichtprofi.de