Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
LiFePO4 Speicher Test

K
K (Siehe auch)
 
(53 dazwischenliegende Versionen von 14 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Einführung ==
 
== 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 zum Beispiel 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]]-Controllern möglich. Aufwendiger werden dann schon eher 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.  
+
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 ==
 
== Parallelport ISP Programmer ==
  
 
=== STK 200 kompatible 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.  
+
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 den meisten dieser Programmer zu tun.  
+
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
+
  
 +
LPT-Pinning des STK200
 
  SCK  = 6;
 
  SCK  = 6;
 
  MOSI  = 7;
 
  MOSI  = 7;
 
  RESET = 9;
 
  RESET = 9;
 
  MISO  = 10;
 
  MISO  = 10;
 
  
 
=== SP12 kompatible Programmer ===
 
=== 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.  
+
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
 
  LPT-Pinning des SP12
Zeile 25: Zeile 23:
 
  MOSI  = 9;
 
  MOSI  = 9;
 
  MISO  = 11;
 
  MISO  = 11;
 
  
 
== Pseudo serielle Programmer (SI-Prog) ==
 
== 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 das hier die Steuerleitungen wie DTR, RTS und CTS des COM Ports sozusagen missbraucht werden. Die eigentlichen Signalleitungen TxD und RxD sind bei diesem Adapter gar nicht angeschlossen. Damit ist es auch beim besten USB zu Serial Adapter nicht möglich diesen Programmer an einem modernen Notebook anzuschließen der nur noch über USB verfügt. Was leider dafür sorgt das PonyProg dann nicht mehr als Programmiertool verwendet werden kann.
+
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 ==
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 erählt man aber eine kompatible Lösung die wie der STK200 duch 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.
+
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 ==
 
== 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.
+
[[Bild:USBasp_t85_aufbau.jpg|thumb|Aufbau eines einfachen USBasp]]
 +
<div class="tright" style="clear:none">[[Bild:USBasp_t85_schaltung.png|thumb|Einfacher USBasp]]</div>
 +
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 [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353]
 +
AVR-ONE! [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4279] 
 +
AVR-Dragon [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891]
 +
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 ==
 
== ISP-Anschluss ==
Zeile 52: Zeile 73:
 
  8 - GND
 
  8 - GND
 
  9 - MISO
 
  9 - MISO
10 - GND
+
10 - GND
  
 
=== 6poliger ISP Anschluss ===
 
=== 6poliger ISP Anschluss ===
Wenige im Roboternetz gebräuchlich
+
Nur in wenigen Roboternetz-Projekten gebräuchlich. Dieser Stecker spart etwas Platz, ist aber teurer als die zehnpolige Variante. 
  1 - MOSI
+
  1 - MISO
 
  2 - VCC
 
  2 - VCC
 
  3 - SCK
 
  3 - SCK
  4 - MISO
+
  4 - MOSI
 
  5 - RST
 
  5 - RST
 
  6 - GND
 
  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.
 +
{| border=1
 +
|[[Bild:Ispadapter.jpg]]
 +
|[[Bild:Ispadapter layout.png]]
 +
|-
 +
|ISP-Adapter
 +
|Lochraster-Layout
 +
|}
  
 
== Autor ==
 
== Autor ==
 
*[[Benutzer:Martin Fiedler|Martin Fiedler]]
 
*[[Benutzer:Martin Fiedler|Martin Fiedler]]
 
*Kleinere Änderungen Frank
 
*Kleinere Änderungen Frank
 
+
*JTAG & PDI Programmer [[Benutzer:Darwin.nuernberg|Darwin.nuernberg]]
  
 
==Siehe auch==
 
==Siehe auch==
Zeile 74: Zeile 113:
 
* [[RN-Definitionen]]
 
* [[RN-Definitionen]]
  
 +
==Weblinks==
 +
* [http://www.mikrocontroller-elektronik.de/isp-programmer-fuer-arduino-bascom-und-atmel-studio/ Test von aktuellen Programmern unter Windows 10]
 +
* [http://www.rowalt.de/mc/avr/progd.htm Rowalt Bauanleitung Parallel Programmer]
 +
* [http://www.atmel.com/dyn/resources/prod_documents/DOC0943.PDF Atmel Serialprogrammer ]
 +
* [http://www.klaus-leidinger.de/mp/Mikrocontroller/AVR-Prog/AVR-Programmer.html Klaus-Leidinger Serialprogrammer Bauanleitung ]
 +
* [http://www.siwawi.arubi.uni-kl.de/avr_projects/evertool/ Bauanleitung Serialprogrammer Englisch Evertool]
 +
* [http://www.fischl.de/usbasp/ 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.
 +
* [https://guloshop.de/shop/Mikrocontroller-Programmierung/guloboard-P-mit-Programmer::4.html USBasp mit einfachem Universaladapter für praktisch alle ATtiny und ATmega mit DIP-Gehäuse]
 +
* [http://www.avr-projekte.de/isp.htm USB-Programmer Bauanleitung]
 +
* [http://www.matwei.de/doku.php?id=de:elektronik:usbisp USB-Programmer Bauanleitung]
 +
* [http://www.obdev.at/products/avrusb/avrdoper.html USB-Programmer Bauanleitung] - AVR Doper - High Voltage Programmierung
 +
* [http://www.ullihome.de/index.php/Hauptseite#USB_AVR-Lab USB AVR Lab]
 +
* [http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=73&products_id=161 Original Bascom Programmer (USB/Keine Firmware notwendig)]
 +
* [http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=73&products_id=201 original Atmel USB Programmer]
 +
* [http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=73&products_id=190 Robotikhardware] - Bezugsquelle für Adapter 6 auf 10 und umgekehrt
 +
* [http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=88&products_id=241 ALL-AVR kompatibel zum Atmel MK2 USB Programmer]
 +
* [http://www.mikrocontroller.net/articles/AVR_In_System_Programmer Übersicht verschiedener Programmierer] (Mikrocontroller.net)
 +
* [http://www.ehajo.de/Bausaetze/Programmieradapter/AVR-ISP-Stick AVR-ISP-Stick]
 +
* [http://www.ehajo.de/Bausaetze/Programmieradapter/µISP-Stick µISP-Stick]
 +
* [http://www.ehajo.de/Bausaetze/Programmieradapter/USP-Stick USP-Stick]
  
==Weblinks==
+
[[Kategorie:Microcontroller]]
[http://www.rowalt.de/mc/avr/progd.htm Rowalt Bauanleitung Parallel Programmer]
+
[http://www.atmel.com/dyn/resources/prod_documents/DOC0943.PDF Atmel Serialprogrammer ]
+
[http://www.klaus-leidinger.de/mp/Mikrocontroller/AVR-Prog/AVR-Programmer.html Klaus-Leidinger Serialprogrammer Bauanleitung ]
+
[http://www.siwawi.arubi.uni-kl.de/avr_projects/evertool/ Bauanleitung Serialprogrammer Englisch Evertool]
+
[http://www.avr-projekte.de/isp.htm USB-Programmer Bauanleitung]
+
[http://www.matwei.de/doku.php?id=de:elektronik:usbisp USB-Programmer Bauanleitung]
+

Aktuelle Version vom 5. April 2016, 11:11 Uhr

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
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.

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

Autor

Siehe auch

Weblinks


LiFePO4 Speicher Test