Das Titelbild dieses Beitrags basiert auf einem Bild von Hier und Jetzt, leider endet meine Reise auf Pixabay auf Pixabay

… um eine Glühbirne einschrauben? Die richtige Antwort auf diese Frage lautet: „Keine, das ist ein Hardware-Problem!“ Aber: Das ist nicht die richtige Frage! Die richtige Frage lautet: „Wie viele ISP-Programmer braucht man, um ein Programm in den Flash-Speicher zu brennen?“

Die richtige Antwort im Arduino-Universum lautet wieder: „Keine.“ Der Grund ist allerdings etwas anders: „Weil man einen Bootloader hat!“ Allerdings haben die ATtinys keine Bootloader und manchmal muss man einen Bootloader ersetzen (siehe vorheriger Beitrag). Mit anderen Worten, sobald man sich ernsthaft mit der Embedded-Programmierung befasst, benötigt man einen ISP-Programmer. Jetzt reicht es natürlich aus, nur einen solchen Programmierer zu haben. Aber im Laufe der Jahre haben sich einige bei mir angesammelt. Ein kleiner Gang durch die Galerie meiner ISP-Programmer ist bestimmt interessant und ich werde verraten, welchen der Programmer ich heutzutage noch einmal kaufen würde.

mySmartUSB MK2

Im Jahr 2010, als ich die Reise ins Embedded-Computing begann, kaufte ich keinen Arduino Uno. Warum? Der Uno kam in diesem Jahr erst raus und ich kannte Arduino damals einfach noch nicht. Stattdessen kaufte ich ein Lötkolbenset, ein myAVR KreativSet und ein mySmartUSB MK2. Dies ist ein ISP-Programmer und eine UART / I2C / SPI-Brücke. Ich bin mir nicht sicher, ob dies die beste Wahl war, aber es hat für die ersten Schritte funktioniert. Der Programmer/Bridge funktioniert am besten mit der myAVR-Software, kann aber auch als AVR910-Programmierer von z.B. avrdude verwendet werden. Das Unternehmen verkauft jetzt eine aktualisierte Version namens mySmartUSB MK2b für den gleichen Preis, den ich vor mehr als 10 Jahren bezahlt habe: 28 €. Heutzutage würde ich ihn nicht mehr kaufen. Wenn man nicht vorhat, die myAVR-Software zu verwenden, gibt es günstigere Alternativen.

guloprog: Ein USBasp-Programmierer

Der billigste und minimalistischste Programmerden ich jemals gekauft habe, ist der 2013 bei guloshop gekaufte Guloprog für 4 €. Man kann die Leiterplatte direkt in eine USB-Buchse stecken, aber mit dem vollständigen Kit erhält man auch ein USB-Kabel. Der Programmer verwendet einen ATtiny85 mit der von Thomas Fischl entwickelten USBasp-Firmware. Während die Version 1, die ich gekauft habe, einen 10-poligen ISP-Header hatte, hat der Programmer der Version 2 einen 6-poligen Header (den mittlerweile jeder benutzt) und die reine PCB-Version kostet 4,50 €. Das komplette Kit mit ISP-Header und USB-Kabel kostet 4,95 €. Das einzige Problem ist, dass man eine feste Spannung von 5 Volt hat. Wenn man ein 3,3 Volt System programmieren will, muss man deshalb kreativ werden, und z.B. alle Teile entfernen, die nicht 5 Volt tolerant sind.

Würde ich den Programmer heute wieder kaufen? Er ist großartig als Give-Away-Programmer, aber ich würde wahrscheinlich nach einem anderen Programmer für meine eigene Arbeit suchen.

myMultiProg MK2

Ende 2013 kaufte ich einen Adapter namens myMultiProg MK2, um alle verschiedenen AVR-Chips mit einem DIP-Sockel (DIP8, DIP14, DIP20, DIP28, DIP40) off-board programmieren zu können, vorausgesetzt, sie verstehen das ISP-Protokoll. Technisch gesehen ist es also kein Programmierer. Stattdessen benötigt man entweder einen Programmer der myAVR-Familie oder einen beliebigen Programmer mit einem 6-poligen ISP-Kabel. Des Weiteren gibt es auch einen Quarz, der verwendet werden kann, wenn die Fuses so eingestellt wurden, dass ein solcher Quarz notwendig ist.

Würde ich diese Adapterplatine wieder kaufen? Wahrscheinlich nicht! Mittlerweile habe ich einen selbst gebauten HV-Programmer mit vielen verschiedenen DIP-Sockeln. So kann ich alle MCUs, die einen DIP-Sockel benötigen, initialisieren (und wiederbeleben). ISP-Programmierung selbst ist etwas, das ich normalerweise innerhalb der Schaltung mache.

Bus Pirate

Im Jahr 2014 kaufte ich einen Buspiraten. Dies ist eigentlich ein kleines Werkzeug, das für viele verschiedene Dinge verwendet werden kann. Der Buspirat versteht viele verschiedene Protokolle, wie I2C, OneWire, SPI, UART, usw. Er kann auch als ISP-Programmer fungieren. Ich muss jedoch zugeben, dass ich ihn nie als Programmer genutzt habe. Also sollte er vielleicht nicht in dieser Liste erscheinen. Er kostet etwa 30 € und man kann noch ein paar zusätzliche Euro für Messsonden und ein schönes Acrylgehäuse ausgeben.

Würde ich ihn wieder kaufen? Ich bin mir nicht sicher. Es ist schön, die Möglichkeit zu haben, Signale für die verschiedenen Protokolle zu generieren und zu dekodieren. Es geht aber auch ohne den Buspiraten, da es heutzutage genügend Programme für Arduinos gibt, um Signale für verschiedene Protokolle zu erzeugen, und es reicht aus, einen Logikanalysator zum Analysieren von Bussignalen zu haben (vorausgesetzt, er hat einen Protokolldecoder). Also wahrscheinlich würde ich den Buspiraten heutzutage nicht wieder kaufen.

Ein weiterer USBasp-Programmierer

Im Jahr 2015 habe ich einen der chinesischen USBasp-Programmer ausprobiert. Er ist in der Lage, zwischen 3,3 und 5 Volt umzuschalten. Und nicht nur die Versorgungsspannung wird verändert, sondern auch die Spannung der Signalleitungen. Und der Programmer kam mit einem Kabel und einem 10-zu-6-Pol-Adapter. Also im Grunde alles was man sich für nur 7,08 € wünscht, inklusive Porto. Es hat natürlich ein paar Wochen gedauert, da er aus China geschickt wurde. Mittlerweile habe ich den gleichen Programmer für 4,99 € inklusive Porto in einem deutschen eBay-Shop gesehen. Ich denke, es ist eine gute Wahl, wenn man seinen ersten Programmer kaufen möchte und ein begrenztes Budget hat.

DIAMEX USB-ISP-Programmer für AVR

Im Jahr 2019 kaufte ich einen neuen Programmer, einen STK500v2-kompatiblen Programmierer in einem schönen Acrylgehäuse mit 6- und einem 10-poligen ISP-Header. Es verfügt über zwei DIP-Schalter, mit denen die Zielspannung ausgewählt werden kann und ob die Spannung an das Ziel angelegt werden soll. Wenn die Versorgung vom Ziel getrennt werden soll, liegen am Vcc-Pin 2,5 Volt an. Warum das so ist, konnten die Support-Leute mir nicht erklären. Und auf jeden Fall tut es nicht weh. Der Programmer kostete rund 20 €, als ich ihn gekauft habe, jetzt sind es 22 €. Es ist ein ziemlich robustes Gerät. Er kann jedoch nur AVRs mit der ISP-Schnittstelle programmieren, d.h. er spricht weder TPI, PDI noch UPDI. Würde ich ihn wieder kaufen? Das ist noch nicht klar. Der Atmel-ICE, den ich kürzlich gekauft habe, ist (dreimal) schneller und hat viel mehr Funktionen. Es scheint jedoch eine gute Idee zu sein, ein Backup zu haben.

Atmel-ICE

Der Atmel-ICE ist der Premium-Programmierer/Debugger, wenn man mit AVR – und SAM-Chips arbeitet. Vor kurzem hat Microchip den SNAP-Programmer/Debugger herausgebracht, der viel billiger ist (aber weder Kabel noch ein Gehäuse hat). Atmel-ICE gibt es in drei verschiedenen Ausführungen:

  • ATATMEL-ICE-PCBA: Nur die Leiterplatte, keine Kabel, kein Gehäuse,
  • ATATMEL-ICE-BASIC: Basisversion mit ISP- und USB-Kabel (gut für AVRs mit ISP-Programmierung),
  • ATATMEL-ICE: Enthält den gekapselten Programmer mit allen Kabeln, z.B. auch für die Programmierung von SAM-MCUs und für JTAG-Debugging.

Vor kurzem hat Waveshare eine eigene Version (mit der Originalplatine von Microchip) herausgebracht, die Atmel-ICE-C heißt. Die Leiterplatte ist in einem Aluminiumgehäuse untergebracht und man erhält alle Kabel des Standard-ICE. Als Bonus ist er billiger als der Standard-ICE. Das Beste am ICE ist, dass er ein HDI-Gerät ist und deshalb nicht anfällig für den Effekt ist, dass die seriellen USB-Schnittstellenleitungen unter macOS immer neue Namen erhalten, was ziemlich ärgerlich ist, wenn man den Namen der seriellen Schnittstelle irgendwo in einem Einstellungsmenü eingestellt hat.

Ich habe diesen speziellen Atmel-ICE-C von welectron gekauft, die sehr wettbewerbsfähige Preise haben. Die Basisversion ist für 89 € erhältlich, die C-Version für 109 €. Würde ich ihn wieder kaufen? Nun, ich hoffe, dass ich ihn verwenden kann, um meine Systeme in Kombination mit der MPLAB IDE von Microchip zu debuggen. Aber mal sehen und abwarten.

Fusebit-Doktor

Wenn es darum geht, AVR-Chips mit falschen Fuse-Bit-Einstellungen wiederzubeleben (siehe auch meinen Beitrag zu den AVR-Fuses), benötigen man Hochspannungsprogrammierung. Leider gibt es nur die recht teuren STK500/600 Boards von Microchip dafür. Für 8-Pin AVR ATtinys gibt es den HVSP Programmer von guloshop. Und dann gibt es noch eine Reihe von DIY-Boards (am besten nach HVPP und HVSP bei tindie.com oder eBay suchen). Ich denke, das am besten bekannte HV-Board ist Manekins Fusebit Doctor, bei dem die ursprünglichen Webseiten mittlerweile nur noch über die Wayback Machine erreichbar sind. Im Jahr 2013 bestellte ich ein paar neu gestaltete Leiterplatten in China. Interessanterweise enthielten die Leiterplatten zwei fehlende Verbindungen, funktionierten aber die meiste Zeit. Anstatt die ursprüngliche (nur binäre) Firmware von manekin zu verwenden, schrieb ich ein Arduino-Sketch namens RescueAVR, das man auch als eigenständiges Programm auf einem Breadboard-basierten „Fusebit Doctor“ verwenden kann. Würde ich einen solchen HV-Programmierer wieder bauen? Ja! Ich denke, es ist eine sehr wertvolle Ergänzung zu meiner Gruppe von Programmierern. Normalerweise sammle ich „tote“ AVR-Chips und lasse sie dann einmal im Jahr wieder auferstehen. Und es war nicht wirklich teuer. Ich glaube weniger als 30 €.

avrburn auf einem Gamebuino META

Abschließend möchte ich von einem kleinen Gadget erzählen, das ich gebaut habe, um MCUs im Feld flashen zu können. Und wenn ich „Feld“ sage, meine ich es auch so (siehe Foto). Als ich meine Geocaches besuchte, um eine neue Firmware zu brennen, musste ich mein Notebook und einen Programmierer mitnehmen, um die Firmware zu ändern. Natürlich wäre es viel bequemer, einen kleinen Programmer zu haben, der in der Lage ist, einzelne Fusebits zu programmieren (mit einem Menü ähnlich dem AVR® Fuse Calculator).

Ich fing an, darüber nachzudenken, dies auf einem Gamebuino zu implementieren. Der war aber nicht leistungsstark genug. 2018 habe ich mir dann einen Gamebuino META gekauft, den Nachfolger des Gamebuino (jetzt Classic genannt). Dies sind die technischen Daten des META:

  • 1,8″ Farbdisplay : 160 x 128 Pixel,
  • SAM21D Prozessor,
  • Arduino kompatible 8GB Speicherkarte mit 10 vorinstallierten Spielen,
  • 1000mAh Akku.

Über ein Jahr oder so entwickelte ich dann einen ISP-Programmer als zusätzliches „Spiel“ für den Gamebuino. Das einzige Problem war, dass der Gamebuino 3,3 Volt Logik verwendet und keine 5 Volt toleranten Eingänge hat. Aus diesem Grund habe ich auch ein „Rucksack“-Board mit Pegelwandler entwickelt. Jetzt kann man jede AVR-MCU im Feld programmieren, unabhängig davon, ob sie mit 3,3 Volt oder 5 Volt betrieben wird.

Die große Frage ist, ob es die Mühe wert war, dieses System aufzubauen. Nun, in den letzten Jahren hatte ich nicht viele Firmware-Updates „im Feld“. Und wenn ich meine Firmware aktualisiere, teste ich das System normalerweise zu Hause, bevor ich es aussetze. Also, wahrscheinlich war es die Mühe nicht wert. Wie üblich habe ich jedoch mal wieder viel gelernt.

Wenn jemand interessiert ist, findet er/sie den Arduino-Sketch und die Eagle-Designdateien in meinem avrburn GitHub-Repository. Außerdem habe ich noch zwei übrig gebliebene Leiterplatten, die ich bei Bedarf abgebe.

Views: 38