|
|
AVR In System Programmer[Bearbeiten] EinführungIn-System-Programming (ISP) bedeutet, einen Mikrocontroller oder anderen programmierbaren Baustein im eingebauten Zustand zu programmieren. Dazu muss der Mikrocontroller entsprechend beschaltet sein. Das bedeutet, die benötigten Anschlüsse am Mikrocontroller müssen zugänglich und nicht ohne weitere Vorkehrungen anderweitig benutzt sein - siehe Atmel Application Note AVR042. Atmel verwendet für ihre 8-Bit RISC Mikrocontroller zum Teil unterschiedliche ISP-Protokolle. Das bekannteste davon wird einfach als ISP bezeichnet. Insgesamt findet man:
Atmels debugWire ist keine Programmierschnittstelle, sondern eine reines Debugging-Interface. Zum Programmieren verwendet man bei AVRs mit debugWire daher normalerweise ISP. Atmel hat für die AVR 8-Bit RISC Mikrocontroller mehrere Application Notes herausgegeben, auf deren Basis eine Vielzahl von Programmiergeräten (programmer) entwickelt wurden. Natürlich liefert Atmel auch eigene, fertige Programmiergeräte (AVRISP (mk I), AVRISP mk II, AVR-Dragon, ...), Programmiersoftware (AVRProg, AVR Studio) und Entwicklungsboards mit integriertem Programmiergerät (z. B. STK500). FAQ/Tipp: "Welchen ISP-Adapter sollte man sich zulegen oder bauen?" Man sollte sich einen fertigen, original Atmel (keinen Clone) ISP-Adapter kaufen. Zum Beispiel für ISP (und PDI) Programmierung Atmels original AVRISP mkII für rund 36,- Euro. Das ist eine Investition, die viel Zeit und Ärger spart, denn es geht nichts über zuverlässiges Werkzeug. Beim Umgang mit µCs ist es sehr frustrierend an drei Fronten gleichzeitig zu kämpfen:
Wenigstens Probleme mit dem ISP-Adapter lassen sich durch den Kauf eines zuverlässigen ISP-Adapters eliminieren. Siehe auch diverse Forenbeiträge u.a. [1] und [2]. Sehr unzuverlässig sind häufig billige oder selbstgebaute Programmierkabel mit nichts außer ein paar Widerständen. Unzuverlässig sind häufig auch billige oder selbstgebaute Programmierkabel mit einem einfachen Bustreiber. Nur weil sie bei manchen funktionieren heißt das nicht, dass sie überall problemlos funktionieren. Parallelport- (Druckerport-) ISP-Adapter funktionieren gar nicht, wenn man sie mit einem USB <-> Druckerport Adapter an einen USB-Port am PC anschließt. Einfach (unintelligente) ISP-Adapter für die serielle Schnittstelle funktionieren gar nicht oder extrem langsam, wenn man sie mit einem USB <-> Seriell Adapter am PC anschließt. Gute intelligente serielle Programmieradapter, wie der in Atmels STK500 eingebaute, funktionieren normalerweise mit einem USB-Adapter. Bei allen Programmieradaptern mit eigener Firmware, einschließlich der Original-Adapter von Atmel, ist man darauf angewiesen, dass der Hersteller wenn nötig Firmware-Updates bereitstellt. Bei Clones ist die Versorgung mit Firmware manchmal fraglich. Oftmals funktionieren auch die Treiber der Clones unter 64-Bit Betriebssystem nicht richtig oder nur mit Tricks, die leider wichtige Sicherheitsfunktionen des Betriebssystem abschalten. Der AVRISP mkII funktioniert dagegen auch unter Windows 7 (64-Bit). [Bearbeiten] Application Notes
[Bearbeiten] Pinbelegung[Bearbeiten] ISPDie Standard-Pinbelegung des ISP-Steckers zum Anschluss des Mikrocontrollers sieht nach obigen Application Notes und der AVR042 (PDF) folgendermaßen aus (Anschluss auf der Platine, Ansicht von oben). Atmel bevorzugt dabei bereits seit Jahren den 6-poligen Anschluss. 10-poliger 6-poliger Anschluss Anschluss 1 MOSI 1 MISO 2 VCC 2 VCC 3 - (*) 3 SCK 4,6,8,10 GND 4 MOSI 5 RESET 5 RESET 7 SCK 6 GND 9 MISO Pin 1 ist am Pfostenstecker mit einem kleinen Pfeil gekennzeichnet. Um Verwechslungen zu vermeiden, empfiehlt es sich, für die einzelnen Leitungen unterschiedliche Farben zu verwenden. Atmel hat dafür keine Festlegung getroffen, so dass es keinen festen Standard gibt. Üblich ist jedoch eine Farbzuordnung wie beim guloboard: 1 MISO weiß 2 VCC rot 3 SCK blau 4 MOSI grün 5 RESET gelb 6 GND schwarz (*) Einige Programmieradapter (Ponyprog-Adapter nach Lancos-Schaltplan) unterstützen an Pin 3 des 10-poligen Steckers eine LED (Kathode an Pin), die "Programmierzugriff" signalisieren soll. Dies ist aber kaum nützlich, daher wird der Pin auch von Atmel als N/C (not connected) definiert und beim original Atmel AVRISP mit GND verbunden. Der 10-polige Anschluss wurde von der Firma Kanda beim STK200 verwendet und ist deshalb auch als "Kanda-Standard" bekannt und war zur Zeit der STK200 Programmieradapter relativ weit verbreitet. Die Anschlussbelegung über einen 6-poligen Stecker stammt von Atmel selbst und ist platzsparender auf der Platine. Am besten kauft oder fertigt man sich einen Adapter 6 <-> 10 (siehe [3], [4], [5], [6]), dann lassen sich praktisch alle Boards mit jedem Programmer programmieren. Zehnpolige Messerleisten (Wannenstecker) zur Montage auf einer µC Platine zum verpolungssicheren Anschluss des Programmieradapters sind fast "überall" verfügbar, nach den sechspoligen muss man häufig etwas suchen. Mittlerweile sind sie endlich bei Reichelt erhältlich (WSL 6G). Sechspolige Federleisten (Pfostenbuchsen) zum Anquetschen an ein Programmierkabel sind dagegen zumindest bei den großen Versendern und Distributoren erhältlich (z. B. von Bürklin Art.53F3500; Conrad Art.701980-62; Farnell Art.1097021; Reichelt PFL 6). Kleine lokale Elektronikläden führen diese jedoch häufig nicht. Zu den sechpoligen Pfostenbuchsen gibt es keine Alternative, wenn man ein sechpoliges Programmierkabel bauen möchte. Zehnpolige Pfostenbuchsen lassen sich nicht auf sechs Pole kürzen. Korrektur: Man kann die äußeren pins ( 2 rechts, 2 links) einfach rausdrücken, dann passt der 6pol in die Buchse. Verpolungsschutz besteht weiterhin. Je nach Programmieradapter hat der VCC-Anschluss unterschiedliche Funktionen: 1. Versorgung des Programmieradapters mit Strom aus der Schaltung, wie es bei vielen Parallelport-Adaptern der Fall ist. 2. Versorgung der Schaltung mit Strom aus dem Programmieradapter. Dies ist insbesondere beim STK500 möglich und dank dessen programmierbarer Versorgungsspannung manchmal ganz praktisch. 3. Messung der Betriebsspannung der Schaltung, so dass der Programmieradapter sich auf diese Spannung einstellen kann und so ein 3,3 V Board mit 3,3 V und ein 5 V Board mit 5 V programmiert. So wie zum Beispiel beim AVRISP mkII. Daher wird VCC auf neueren Schaltbildern auch als Vtg oder VTref bezeichnet (Atmel kann sich da nicht auf eine Bezeichnung einigen). Je nach verwendetem Programmer muss man daher sorgfältig auf die Beschaltung von VCC/Vtg/VTref und auf die Stromversorgung von Board und Programmer achten. [Bearbeiten] TPIDie TPI-Programmierung setzt sich aus mehreren Schichten zusammen: Hardware (Ansteuerung der IO-Pins), Speicher-Management (stellt Funktionen zum Flashen bereit) und der Speicher selbst. Data 1 2 VCC Clock 3 4 N.C. Reset 5 6 GND Standard TPI connector used on e.g. STK600 and AVRISP mkII. [Bearbeiten] PDI[Bearbeiten] Atmel Board-Schnittstelle & AVRISP MkIIFür Mikrocontroller-Boards schlägt Atmel einen 6-Pin Header, 2,54 mm Raster, mit folgender Pinbelegung vor (Ansicht von Oben): DATA 1 2 VCC N.C. 3 4 N.C. CLK 5 6 GND (N.C.: Not Connected, nicht verbunden). Diese Belegung wird auch von Atmels AVRISP MkII im PDI-Modus verwendet. Bei Atmels eigenem XPlain Eval-Kit und anderen Programmieradaptern geht es zur Zeit jedoch noch fröhlich durcheinander. Folgenden Pinbelegungen lassen sich finden. [Bearbeiten] Atmel XPlain Eval-BoardHier hat Atmel die Xmega PDI- und JTAG-Schnittstelle gemeinsam auf den Header J100 gelegt. Die PDI-Belegung ist wie folgt: 1 2 GND
3 4 VCC
5 6 CLK
VCC 7 8 DATA
9 10 GND
Nur jeweils ein VCC- und ein GND-Anschluss muss verwendet werden. Es bieten sich die Pins 2 und 4 an. Man beachte die Position von DATA auf Pin 8 bei dieser Belegung von PDI auf dem XPlain JTAG-Header. [Bearbeiten] Atmel JTAGICE MkIIEinige sehr alte JTAGICE MkII unterstützen kein PDI. Alle neueren, in den letzten Jahren hergestellte tun es. Eventuell ist ein Firmware-Upgrade über AVR-Studio nötig. Laut [7] und der eingebauten Hilfe von AVR Studio 4.18 SP 1 verwendet ein JTAGICE MkII im PDI-Modus folgende Pinbelegung: 1 2 GND
3 4 VTref
5 6 CLK
7 8
DATA 9 10 GND
Man beachte, dass DATA hier angeblich auf Pin 9 liegt. (VTref dürfte VCC entsprechen). In der Hilfe zu AVR Studio 4.18 SP 1 ist der Pin CLK mit PDI_CLK, und der Pin DATA mit PDI_DATA bezeichnet. [Bearbeiten] Atmel AVR DragonErst mit der Dragon-Firmware im SP 1 für AVR Studio 4.18 soll der PDI-Support des AVR Dragon funktionieren. Angekündigt war PDI-Support bereits für AVR Studio 4.18. Leider hat Atmel es versäumt in der Dragon-Dokumentation die Pinbelegung für PDI auf der Seite des Dragon anzugeben. In der Studio-Dokumentation ist von einem ominösen Dragon PDI Adapter die Rede, der Teil des "Dragon Kit" sein soll. Allerdings wird der Dragon 'nackt' ausgeliefert und bisher gibt es keine Berichte darüber, dass jemand diesen ominösen Adapter gesehen hat. Von neueren Versionen des JTAGICE mkII ist hingegen bekannt, dass sie mit einem XMEGA PDI adapter kit geliefert werden. Angeblich ist es nötig, beim Dragon jeweils einen 330Ω Widerstand in die CLK und DATA Leitung zu legen, um Probleme mit dem Überschwingen der Signale zu vermeiden. [Bearbeiten] Programmer-VariantenMittlerweile existiert eine fast unüberschaubare Zahl von Programmer-Varianten und Untervarianten. Hier sollen nur die wichtigsten Varianten mit Bauanleitungen aufgelistet werden, geordnet nach der Art des Anschlusses an den PC. Zur Zeit (März 2012) gibt es vermehrt Probleme, mit den neuen Varianten 5.x des AVR Studios, kompatible Programmer, die nicht von Atmel selbst hergestellt wurden, anzusteuern. Es sollte beim Erwerb/Nachbau auf die Zusicherung der Komptibilität zum gewünschen AVR Studio geachtet werden. [Bearbeiten] Parallelport[Bearbeiten] STK200-kompatibelFast alle erhältlichen Parallelport-Programmieradapter, u.a. auch der hier im Shop angebotene, sind kompatibel zum Programmer des STK200 / STK300.
[Bearbeiten] Paralleles Interface für AVR und PonyProgSchaltplan und Erläuterungen bei Scott-Falk Hühn [Bearbeiten] SP12 ProgrammerSchaltplan, Erläuterungen und Software für mehrere Plattformen, darunter auch MSDOS, gibt es bei Steven Bolt. Ken's Dongle ist ein spezieller Kabeladapter für SP12 zur Verbesserung der Signalqualität. Anpassung an neue Typen erfolgt durch leicht selbst erstellbare Beschreibungsdateien. [Bearbeiten] Serieller Port (RS-232)[Bearbeiten] Atmel AVRISP, STK500, AVR910Der original AVRISP von Atmel, das STK500 und der Programmer aus der Application Note AVR910 enthalten einen Mikrocontroller, der die Umsetzung der seriellen Daten auf das ISP- und TPI-Programmierinterface vornimmt. Sie lassen sich direkt mit dem AVR-Studio programmieren und sind auch problemlos mit einem USB-seriell-Adapter verwendbar. Ein Layout mit Schaltplan und erweitertem Sourcecode findet sich in diesem Thread in der Codesammlung AVR910 Programmer, Schaltplan, Layout, Firmware. Das AVR910 Design ist u.a. auf der Seite von Serasidis Vasilis im Detail beschrieben. Eine weitere, auführliche Anleitung zum AVR910 gibt es in deutsch auf der Seite von Klaus Leidinger.
Einen AVR-ISP STK500 Protokoll Programmmer und JTAGICE kompatiblen Programmer/Debugger können Sie auf folgender Homepage bestellen: myevertool [Bearbeiten] SI-ProgDaneben gibt es noch weitere Programmieradapter für den seriellen Port, die auf den eigenen Mikrocontroller im Programmieradapter verzichten und das ISP-Programmierprotokoll über die Steuerleitungen des RS-232-Port nachbilden. Das Programmierprogramm auf dem PC sendet jetzt keine Steuerkommandos und Daten mehr, sondern gibt direkt die Programmiersignale an der seriellen Schnittstelle aus ("Pinwackeln an den Statuspins"). Der Nachteil dieser Adapter ist, dass sie meistens relativ langsam sind und nur unter wenigen Betriebssystemen funktionieren. Ein Beispiel dafür ist SI-Prog. [Bearbeiten] Sercon2Mit einer etwas anderen Steckerbelegung als der SI-Prog arbeitet die Sercon Familie an Adaptern. Nähere Unterlagen dazu finden sich hier [Bearbeiten] Selbstbau-Programmer, basierend auf dem FTDI chip (via avrdude)http://irq5.wordpress.com/2010/07/15/programming-the-attiny10/ [Bearbeiten] USBDie meisten USB-Programmieradapter verwenden einen USB-seriell-Wandler und ein STK500/AVRPROG-kompatibles Protokoll und können damit direkt aus dem AVR-Studio programmiert werden. Eine Quick-and-Dirty Programmierlösung bietet der #USB-Hub-ISP, der außer einem USB-Hub nur Standard-Bauteile voraussetzt. [Bearbeiten] Atmel AVRISP MKIINachfolger des Atmel AVRISP "MKI". Mit USB-Schnittstelle, leistungsfähigerem Programmiercontroller und erweitertem Hardwareschutz. Programmiersoftware: AVR-Studio und AVRDUDE. Herstellerinformation bei atmel.com Dave Jones hat im EEVblog #158 ein Videotutorial erstellt, wie man beim Atmel AVRISP "MKI" mit dem LM317 Spannungsregler 3.3V oder 5V Versorgungsspannungen für das Targetboard nachrüstet. Im Video schlägt Dave als bessere Lösung die Verwendung eines Low-Drop-Spannungsreglers vor. Dafür eignet sich z.B. der LM1117 Weiter unten auf dieser Seite wird auch ein einfacher, kompatibler Nachbau namens usbprog vorgestellt. [Bearbeiten] Atmel AT90USBKEYMit hilfe des AVRISP-MKII Clone Projekts aus dem LUFA Paket wird aus dem AT90USBKEY recht einfach ein Programmer, der mit AVR-Studio und AVRDUDE genutzt werden kann. [Bearbeiten] AVRISP mkII Klon mit dem dem Teensy-Board und der Lufa-BibliothekMit der LUFA-Bibliothek und dem TEENSY 2.0 Board kann schnell ein AVRISP mk2 Klon gebaut werden, der auch mit AVR-Studio in Windows einwandfrei zusammenarbeitet. Weitere Infos auf weigu.lu. [Bearbeiten] AVRISP mkII Klon mit dem Atmega32U2-Breakout-Board und der Lufa-BibliothekMit der LUFA-Bibliothek (Eine Anleitung gibt es hier) und dem Atmega32U2-Breakout-Board kann problemlos ein AVRISP mkII-Klon programmiert werden. Um praktisch auf die Programmierpins zugreifen zu können gibt es dieses Addon-Board für das Breakout-Board. Der Programmer läuft problemlos mit AVR-Studio unter Windows. [Bearbeiten] Bascom USB ISPBeliebter USB programmer der speziell für den Bascom Compiler entwickelt wurde. Unterstützt Bascom einen neuen AVR-Controller, so kann dies automatisch auch dieser USB Programmer, eine neue Firmware ist nicht erforderlich. Ein weiterer Vorteil ist, dass er speziell für Bascom entwickelt wurde und in der IDE unterstützt wird. Er unterstützt alle Features von Bascom, auch die automatische Fusebit-Einstellung per Direktive im Quellcode. Angenehm ist auch, dass er keine 5V benötigt. Im Gegenteil, er kann sogar Boards über das übliche ISP-Programmierkabel mit 5V versorgen, so dass viele Boards auch ohne weitere Spannungsquelle programmiert werden können. Ein wirklich empfehlenswerter Qualitätsprogrammer für alle Programmierer, die ausschließlich mit Bascom arbeiten wollen Im Online- / Auktionshandel werden auch Alternativen angeboten, teils recht schick im Plexiglasgehäuse für ca. 20 Euro. Angeboten z. B. als "USB 2.0 Full Speed low cost Programmer für ATMEGA Chips" oder "AVR USB ISP Programmer ATMEL ATMEGA STK500". Die Adapter funktionieren auch mit BasCom (aber auch mit AVR Studio), z. B. mit der Einstellung "STK500 native driver". Man kann die Targetspannungsversorgung per USB zwischen 3,3 und 5V umschalten oder ganz abschalten (per DIP-Schalter). Sie sind per USB an den PC angeschlossen und arbeiten über einen virtuellen COM-Port. Achtung: In BasCom funktioniert das nur bis COM9. Wenn sich das Gerät z. B. auf COM15 installiert, wird es im BasCom evtl. nicht gefunden. Dann in der Systemsteuerung entsprechend umstellen. [Bearbeiten] Atmel AVR DragonHauptartikel AVR-Dragon Der AVR Dragon ist ein preiswerter ISP (und ICE) von Atmel, der aufgrund Preis/Leistungs-Verhältnisses schnell populär wurde. Atmel wurde von dieser Popularität überrascht, da der Dragon wohl ursprünglich nur als ein "Gimmick" zur Verbreitung von AVRs in Asien gedacht war. Die großen Vorteile des Dragons sind, dass er alle Programmiermodi beherrscht, inklusive High-Voltage Parallel Programming ("verfuste" AVRs retten), dass er ein natives USB-Interface hat, von AVR-Studio unterstützt wird, und sogar JTAG und debugWIRE ICE / Debugging unterstützt (bei den AVRs die dies können). Zu den größten bekannten Nachteilen gehören, dass der Dragon völlig "nackt" kommt. Kein USB-Kabel, kein Gehäuse, nicht einmal Abstandsbolzen unter der Platine, keine Patchkabel und nicht einmal die Fassungen zum Einstecken von AVRs sind bestückt. Eine gedruckte Anleitung gibt es auch nicht. Daneben wird aufgrund des Stromverbrauchs des Dragon ein USB-Hub mit Netzteil benötigt. Weiter ist der Dragon dafür bekannt, empfindlich auf statische Aufladungen zu reagieren. Ein Spannungsregler und ein Ausgangstreiber gehen dabei besonders gerne kaputt. Ein gerne von Anfängern gemachter Fehler ist es, den Dragon im Betrieb auf dem mitgelieferten "Schaumstoff" aus der Verpackung liegen zu lassen. Das ist jedoch kein Schaumstoff, sondern leitendes Moosgummi. Weitere Schutzmaßnahmen für gefährdete AVR Dragons findet man auf der Dragonlair-Seite von Nard Awater. Der Dragon wird unter Linux z. B. von der avrdude-Programmiersoftware unterstützt. Unerklärlicherweise stellt Atmel die Dokumentation und Beschreibung des Dragon nur als Teil der Online-Hilfe der AVR-Studio Software unter Windows zur Verfügung. Weiterhin lassen sich Firmware-Updates auch nur mittels eine proprietären Atmel-Software unter Windows einspielen. Daher ist der Dragon für Linux-Benutzer nur dann zu empfehlen, wenn man zusätzlich noch Zugriff auf eine Windows-Installation hat. [Bearbeiten] USBispAVR Programmierdongle mit USB Anschluss und kompatibel zum STK500-Protokoll. Unter anderem programmierbar mit AVR-Studio, AVRDUDE und uisp. Schaltplan (PDF), Layout (PDF), Erläuterungen und Firmware gibt es vom Entwickler Matthias Weißer. [Bearbeiten] USB avrispUSB AVR Programmer auf Basis des AVR 910 Designs. Den Schaltplan, Layout und Erläuterungen (englisch) gibt es von Joakim Arfvidsson. [Bearbeiten] EvertoolMit USB-seriell-Wandler. Getestet mit Adapterkabeln/ICs von FTDI, SiLabs und Prolific (Adapterkabel z. B. für ca. 10EUR bei Reichelt). [Bearbeiten] USBaspThomas Fischls USBasp ist ein Openhardware-/Openfirmware-USB-ISP-Adapter. Er basiert auf einem ATmega8, ATmega8L, ATmega88 oder ATtiny85, der mittels einer rein auf Firmware basierenden USB-Implementierung von Objective Development arbeitet. Bezugsquellen:
Zum Ansteuern des USBasp wird AVRDUDE in einem speziellen Modus benötigt, der ab Version 5.2 standardmäßig vorhanden ist (vorher waren Patches nötig). Zum Programmieren von neuen ATtinys muss der Jumper Slow SCK gesetzt werden. Alternativ ist es möglich mit der zusätzlichen Option von avrdude "-B100" die Periodendauer von SCK auf etwa 100 µs oder noch länger zu vergrößern (funktioniert nur, wenn die Firmware des USBasp vom Mai 2011 oder neuer ist). Der originale USBasp hat den Nachteil, dass er nicht die Targetspannung zum Programmieren benutzt, sondern immer seine 5V. Deshalb kann es Probleme geben, wenn das Target mit einer niedrigen Spannung versorgt wird, da der USBasp die Target-Highpegel eventuell nicht mehr als High erkennt. Abhilfe kann ein kleiner Hack schaffen, mit dem der µC wahlweise mit 5V oder mit ~3.6V betrieben wird: http://www.mikrocontroller.net/topic/109648?goto=2031524#2031524 Der Optoisolated USBASP 1.8V to 6V ist eine Hardwareänderung ebenfalls mit breitem Targetspannungsbereich und zusätzlich galvanischer Isolation über die Optokoppler 6N317 (schnelle Datenleitungen) und PC817 (langsame Resetleitung). Manche USBasp sind umschaltbar zwischen 5 V und 3,3 V. Falls man später darüber eine Schaltung mit 3,3 Volt betreiben will – etwa zum direkten Ansprechen einer SD-Karte – lohnt gezieltes Nachfragen vor dem Kauf. [Bearbeiten] AvrUsb500
[Bearbeiten] usbprogusbprog von Benedikt Sauter ist ein USB Programmieradapter, der fast alle Atmel-Mikrocontroller unterstützt (ATiny, ATMega, AT89, AT90, ...) und daneben auch für ARM7/9 und MSP universell einsetzbar ist. Unterstützung für Xmega gibt es nicht. Der Programmer wurde so entwickelt, dass man die Firmware auf dem Adapter über die USB-Verbindung austauschen kann. Dadurch sollte der Adapter lange attraktiv bleiben, da alles rund um das Projekt als open Source veröffentlicht ist und daher neue Controller einfach in die usbprog-Firmware integriert werden können. Es ensteht gerade eine Firmware für einen einfachen JTAG-Adapter. Damit kann man dann ganz einfach debuggen (voraussichtlich auch aus dem AVR Studio aus). Man kann den Adapter auch als 1:1 AVRISP-mkII-kompatibles Gerät betreiben. Dafür muss man eine andere Firmware einspielen, die ebenfalls Teil des Projektes ist. Der Vorteil ist der, dass man so auf jede bestehende Programmiersoftware zurückgreifen kann, die das originale AVRISP mkII unterstützt. Getestet wurde usbprog bis jetzt mit avrdude (Linux und Windows) und dem AVR Studio 4 (Windows). Hinweis: Damit der Programmer mit AVR Studio 5.x zusammen arbeitet, muss die Firmware aktualisiert werden: http://www.usbprog.org/index.php/Firmwares (siehe Update-Hinweis) Derzeit kann man bei der embedded projects GmbH die Versionen 3.3 und 4.0 bestellen. Näheres im Projekt-Wiki. [Bearbeiten] AVR-DoperAVR-Doper kann neben ISP auch im High-Voltage Serial Mode als AVR HV-Programmer programmieren. Rein auf Firmware basierende USB-Implementierung. BUS-Powered. Einseitige Platine und damit auch für Selbstbauer geeignet. Verwendet einen Mega8 zur Steuerung des Programmers. Ist kompatibel zu AVR-Studio durch STK500-Protokoll. [Bearbeiten] USB AVR-LabUSB AVR-Lab besteht aus einer sehr einfachen Hardware, usb wird in Software gemacht. Mit einem Bootloader nebst Applikation kann die Funktion des Lab´s zwischen
getauscht werden. Mit der STK500v2 kompatiblen Firmware kann der Programmer direkt aus dem AVR Studio heraus voll kompatibel zum AVR-ISP mkII arbeiten. Zusätzlich bietet der Programmer den virtuellen Com Port als Debug Port an solange nicht geflasht wird. Man kann also direkt mit dem Terminalprogramm auf seinen AVR zugreifen über den ISP Adapter. Dieser Modus wird von jeder ISP Firmware unterstützt. Statusanzeige des Targets (angeschlossen, falsch angeschlossen, nicht angeschlossen), max. 3 Mhz ISP Freq. Das Ganze ist sehr günstig in der Beschaffung (10 Eur Bauteile bei Reichelt + 3,5 Eur Platine von ullihome.de, oder 15 Eur bestückt von ullihome.de) [Bearbeiten] USBtinyISPUSBtinyISP ist ein preiswerter (ca. 16$ für die Bauteile) AVR ISP Programmer und SPI Interface auf open-source Basis. Als Software kann z.B. AVRDUDE oder AVRStudio verwendet werden. Der Programmer wurde auf Windows, MacOS X und Ubuntu (ab 9.04) getestet. Bei Adafruit sind auch Selbstbaukits erhältlich. Eine miniaturisierte Version findet sich hier www.mikrocontroller.net/articles/AVR-ISP-Stick. Diese ist ab 6,90€ als Bausatz bei eHaJo.de erhältlich. [Bearbeiten] UCOM-IRDer UCOM-IR Programmieradapter ist ein kommerzieller Bausatz (ca. 25 €), der auf einem AT90USB162 basiert. Durch die Verwendung des STK500v2 Protokolls kann zur Programmierung sowohl das AVR-Studio wie auch AVRDUDE verwendet werden. Zusätzlich hat der Adapter einen IR-Empfänger und zwei Sendedioden, die zur Kommunikation und zur Fernsteuerung verwendet werden können. [Bearbeiten] Selbstbau-Programmer, basierend auf dem vUSB stackhttp://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=90498 [Bearbeiten] USB-Hub-ISPHUB ISP - Solving the USB-Only "Chicken or Egg" Problem: [Bearbeiten] LaunchprogDer Launchprog ist ein AVR-ISP-Programmer nach der Atmel AVR910-Appnote, der auf einem TI Launchpad 1.4 mit dem beiliegenden MSP430G2211 und dem beiliegenden Uhrenquarz läuft. Nach außen hin ist der Launchprog wie ein AVR910 zu verwenden. Allerdings muss die Geschwindigkeit der seriellen Schnittstelle auf 9600 Baud eingestelllt werden. [Bearbeiten] mySmartUSBDer mySmartUSB Programmer von myAVR ist ein kompakter ISP Programmer mit USB Anschluss (der Preis liegt bei 28€). Lt. Hersteller kann er auch für die Kommunikation via UART, TWI, SPI verwendet werden (hab ich noch nicht probiert). ich aber: Beim Schreiben der Fuse Bits musste ich das Tool myAVR_ProgTool.exe verwenden - siehe http://www.opencharge.de/wiki/Mysmartusb Mit avrdude ist das Schreiben der Fuse-Bits mit dem AVR910-Modus möglich. avrdude-Kommandozeile : avrdude -c avr910 -P PORT -p PART -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m
[Bearbeiten] mySmartUSB lightPreiswerter (ca. 15 €) Programmer im USB-Stick Design von myAVR. Der mySmartUSB light verfügt über eine Auto-Speed Funktion die die Frequenz des Programmers automatisch an die Taktfrequenz des Controllers anpasst. Der Programmer kann 5V und 3.3V Systeme programmieren, Treiber gibt es für Windows, Linux und MacOS X und unterstützt wird je nach Firmware-Version das STK500v2 oder AVR910/911 Protokoll. [Bearbeiten] Amadeus-USBAmadeus-USB ist ein ISP-Programmer zum Selberbauen. Er unterstützt eine Vielzahl von AVRs und verfügt über ein eigenes User-Interface. Der Programmer enthält einen einfach zu bedienenden Fuse-Editor. Sollte man einmal die falschen Clock-Einstellungen vorgenommen haben, ist das kein Problem, da der Programmer über eine Takterzeugung verfügt, mit der man den AVR wiederbeleben kann. Auch wer mit niedrigen Taktraten arbeitet (z. B. 32kHz), kann einen ATmega64 in ca. 4,8 Sekunden programmieren und vergleichen. Darüber hinaus kann mit geeigneten Makros die Programmausführung getracet werden. Die maximale Programmierdauer beträgt bei einem ATmega64 mit 16MHz Quarz 3,1 Sekunden, wenn der gesamte Speicher geschrieben und verglichen werden muss. Ist das Programm kleiner, geht es natürlich schneller ;-) Für einen ATTiny2313 oder ATTiny24 braucht er weniger als eine Sekunde. [Bearbeiten] AVR-ISP-StickDer AVR-ISP-Stick ist ein OpenSource/CC-Projekt und eine sehr günstige (6,90€!) Alternative zu den restlichen Programmieradaptern auf dem Markt. Er ist als Bausatz erhältlich und bereits über 100 mal im produktiven Einsatz. [Bearbeiten] µISP-StickDer µISP-Stick ist die Weiterentwicklung des AVR-ISP-Sticks. Für 9,90€ bekommt man hier einen vorbestückten Bausatz an dem nur noch die bedrahteten Stecker angelötet werden müssen. [Bearbeiten] Arduino ISP ShieldEin Arduino-Board kann mit dem entsprechenden Sketch und einfachen Jumperwires oder einem komfortablen Shield benutzt werden, um AVRs ohne Bootloader zu flashen. Eine Anleitung dazu wird bei www.open-electronics.org und hlt.media.mit.edu (via [8]) gegeben. [Bearbeiten] aTeVaL-BoardDas aTeVaL-Board ist die Weiterentwicklung des Atmel Evalboards von Pollin. Damit lassen sich problemlos alle bedrahteten AVR-Controller programmieren. Der Programmer ist ein AVR-ISP-mkii-Clon und somit 100% kompatibel mit dem Atmelstudio. Für eigene Platinen ist ein 6- und 10-poliger ISP-Stecker vorhanden. [Bearbeiten] StandaloneDie folgenden Geräte verfügen über interne Speicher, auf denen der zu programmierende Maschinencode abgelegt werden kann. Zum "flashen" selbst ist keine Verbindung zwischen Arbeitsplatzrechner bzw. Notebook und Programmiergerät erforderlich. [Bearbeiten] roloFlash (kommerziell)roloFlash wird mit einer microSD-Karte bestückt, die die zu flashenden Daten enthält. Dadurch können unabhängig von einem PC an jedem beliebigen Ort AVR-Controller geflasht werden. In einem ersten Schritt wird die microSD-Karte vorbereitet. Durch die auf dem roloFlash eingebaute Scriptsprache roloBasic lässt sich der gewünschte Ablauf sehr flexibel festlegen. Nun kann roloFlash irgendwo anders ohne PC AVR-Controller flashen. Dabei geben 5 zweifarbigen LEDs Auskunft über den Fortschritt bzw. das Ergebnis des Flash-Prozesses. Fehlbedienungen sind unmöglich, da es keine Bedienelemente gibt. Einsatzgebiete:
[Bearbeiten] TheCableAVR-SD (kommerziell)TheCableAVR-SD works by saving the "ISP", "HEX" and "EEP" files required for part programming from the PC application onto an SD-Card and inserting it into TheCableAVR-SD. This programmer is stand alone, making it very handy for field software updates and production programming. Wird 4/2012 scheinbar nicht mehr verkauft (Forumsbeitrag Priio AVR Programmer?). [Bearbeiten] ButtLoadButtLoad is based on the Atmel AVR Butterfly development board. ButtLoad is specially written firmware which converts a low-cost official Atmel Butterfly evaluation board into a smart ISP programmer for other members of the Atmel AVR family. It supports the entire AVR range, and allows for a complete program (including EEP, HEX, Fuse and Lock Bytes) to be stored and later programmed into a device from the Butterfly's on board non-volatile memory. ButtLoad basiert auf dem Atmel-AVR Butterfly-development board und ist eine spezielle Firmware, die ein (billiges) Atmel-Butterfly-Board in einen vollwertigen ISP-Programmierer für andere Controller der Atmel-AVR-Familie verwandelt. Es unterstützt den gesamten AVR-Bereich und erlaubt, ein Programm komplett mit EEP, HEX, Sicherungs- und Lock-Bytes im nichtflüchtigen on-board-Speicher des Butterflys abzulegen und dann von dort heraus die Controller zu programmieren. [Bearbeiten] PalmAVR
[Bearbeiten] AVR-ISP500, AVR-ISP500 tinyvon Olimex, siehe [Bearbeiten] GeschwindigkeitsvergleichIm Rahmen einer Forendiskussion entstand die folgende Messung, die einige der möglichen Programmer in ihrer Geschwindigkeit vergleicht. Mit einbezogen in den Vergleich wurde neben originalen Atmel-ISP-Werkzeugen noch Werkzeuge für JTAG. Die Testdatei war 29704 Bytes groß. Target ist ein ATmega6490, der mit 8 MHz vom RC-Oszillator getaktet wird. Das alles wurde mit einem AVRDUDE 5.5 getestet.
Programmer Parameter Zeit fürs
Schreiben Lesen
-----------------------------------------------
JTAG ICE mkII default 2,58 s 3,27 s
JTAG (4 MHz)
-----------------------------------------------
JTAG ICE mkII 1 MHz 8,34 s 8,51 s (**)
ISP
-----------------------------------------------
AVRISP mkII 250 kHz 5,37 s 5,46 s
1 MHz 2,45 s 2,45 s
2 MHz 1,89 s 1,99 s
-----------------------------------------------
STK500 900 kHz 5,84 s 3,49 s
(schnellstes)
-----------------------------------------------
AVR Dragon default 2,81 s 3,49 s
JTAG (4 MHz)
-----------------------------------------------
AVR Dragon 1 MHz 8,34 s 8,64 s
ISP 2 MHz - - (*)
-----------------------------------------------
Parallelport- keine Delay 13,20 s 12,45 s (**)
Dongle "alf" CPU 900 MHz
-----------------------------------------------
(*) Benutzung unmöglich, weder Fuses noch Signature zuverlässig lesbar. (**) Fuses und Signature OK, aber das programmierte Ergebnis ist fehlerhaft (verify errors) [Bearbeiten] Software
[Bearbeiten] ISP-Pins am AVR auch für andere Zwecke nutzenBei einem Programmer mit eingebautem Tristate-Treiber (z. B. 74HC(T)244) werden die Leitungen MISO, MOSI und SCK hochohmig geschaltet wenn die Programmierung beendet ist, d.h. sie beeinflussen die Schaltung nicht. Man kann die betreffenden Pins am AVR also relativ problemlos als Ausgänge verwenden, wenn man darauf achtet, dass die daran angeschlossene Peripherie durch die Programmierimpulse keinen Schaden nehmen kann. Als Eingänge sollte man die Pins allerdings nicht verwenden, da ein angeschlossener Taster zum Beispiel die Programmierimpulse kurzschließen würde, wenn er gedrückt ist. Atmel empfiehlt in der Application Note AVR042: AVR Hardware Design Considerations (PDF) Peripherie an der SPI-Schnittstelle, bei gleichzeitiger Verwendung der Schnittstelle als In-System-Programmieranschluss, über Widerstände anzuschliessen. Ein Widerstand in SCK ist in diesem Zusammenhang aber nur dann sinnvoll, wenn am AVR ein externer SPI-Master hängt, denn nur dann kann ein Konflikt zwischen diesem SCK treibenden Master und dem ebenfalls SCK treibenden ISP auftreten. Ist der AVR hingegen wie üblich selbst der Master, dann ist ein Konflikt ausgeschlossen. Das gleiche gilt für MOSI. Bei MISO kann ein Konflikt nur auftreten, wenn diese Leitung vom Slave in der ISP-Phase aktiv treibend sein kann. Das ist beispielsweise bei Porterweiterungen (Inputs) mit Schieberegistern der Fall, wenn der Datenausgang des Schieberegisters nicht passivierbar ist (tristate, Z-state). Dann ist ein Serienwiderstand in MISO sinnvoll. Normale SPI-Slaves mit CS-Leitung, wie ADCs, passivieren jedoch ihren Datenausgang wenn CS inaktiv ist. In diesem Fall ist ein Serienwiderstand in MISO unnötig, es muss nur über schwache Pullup-Widerstände an allen relevanten CS Leitungen sichergestellt sein, dass sie während Reset hochgezogen werden. Manche SPI-Slaves haben die bereits an Bord. Die internen Pullups im AVR sind keine Hilfe, da sie während Reset abgeschaltet sind. siehe auch AVR HV-Programmer |