USBASP-Programmer
mit Attiny85
Mein altes Notebook war noch mit einer richtigen parallelen
Schnittstelle ausgestattet, und ich hatte mir einen SP12-Programmer
gebaut, der sehr zuverlässig funktionierte (wenn auch etwas langsam).
Ich hatte zwar auch mal einen USBASP-Programmer (auf Lochrasterplatine)
getestet, aber der hatte damals Probleme mit bestimmten Versionen von
avrdude.
Mein neues Notebook hat nur noch USB-Schnittstellen, und so musste ein
neuer Programmer her. Im Büro lag noch ein aus dem Kollegenkreis
"geerbter" AVRISP MKII herum, der es eigentlich werden sollte. Unter
Linux funktionierte der ganz gut, aber unter Windows ist die
Installation äußerst umständlich.
Der AVRISP MKII nervte mich auch durch seine Sicherheitsfunktionen -
insbesondere durch die Tatsache, dass er den zu flashenden
Mikrocontroller nicht mit Betriebsspannung versorgen kann.
So kramte ich die alte USBASP-Platine hervor und stellte fest, dass sie
recht gut mit Bascom und avrdude 5.10 und 5.11 harmoniert. Leider ist
sie recht groß und hässlich (wegen des AtMega8 und der zahlreichen
Drahtbrücken).
Die meisten Pins des AtMega8 sind unbenutzt, so dass eigentlich ein
kleinerer Mikrocontroller reichen würde, aber die USBASP-Firmware setzt
einen Hardware-SPI voraus, und den gibt es nicht bei den AtTinies.
Die USBASP-Firmware auf Soft-SPI umzustricken traute ich mir nicht zu,
aber netterweise hat das schon jemand erledigt! Er verkauft für wenig
Geld kompakte USBASP-Bausätze auf AtTiny85-Basis in mehreren
Geschmacksrichtungen, und auf seiner Homepage ist der Sourcecode
erhältlich.
Links:
https://guloshop.de/shop/
http://guloshop.de/f (Doku und Software)
Man könnte also den Programmer sogar komplett selbst bauen und
programmieren, aber angesichts des günstigen Preises und des
unbürokratischen Versands (Briefsendung) lohnt sich das kaum
(insbesondere, weil man den AtTiny85 nicht nur flashen, sondern auch
den Reset-Pin "wegfusen" muss und so Gefahr läuft, ihn zu "schrotten").
Für 5 Euro gibt es einen SMD-Bausatz, der mir aber nicht gefällt, weil
die ISP-Buchse 10-polig ist und ich so langsam mal auf die neuere
6-polige Norm umsteigen möchte.
Daneben gibt es noch eine originelle Bausatz-Variante, bei der man den
Programmer auf einem Steckbrett (Breadboard) aufbaut, und einen reinen
Teilesatz (unter "Kleinteile und Zubehör" -
"guloprog-Kleinteilesortiment").
Den Teilesatz (4 Euro; vorprogrammierter AtTiny85, 7 Widerstände,
Abblockkondensator, 2 Z-Dioden) habe ich auf einer kleinen
Lochrasterplatine aufgebaut und verfüge nun über einen kompakten,
zuverlässigen Programmer.
Statt des mitgelieferten USB-A-Steckers habe ich allerdings eine
USB-B-Buchse verwendet und die Betriebspannung mit zwei
Gleichrichterdioden auf ca. 3,5V herabgesetzt, damit man auch 3,3V-
Schaltungen gefahrlos flashen kann.
Über einen Jumper (bzw. DIP-Switch) kann man wahlweise das Target (also
den zu programmierenden Controller) mit Betriebsspannung versorgen, und
der Programmer nimmt es auch nicht übel, von der Target-Schaltung mit
5V fremdgespeist zu werden. Eine LED dient als Betriebsspannungsanzeige.
Zunächst hatte ich die LED (an Stelle der Gleichrichterdioden)
verwendet, um die Betriebsspannung herabzusetzen und sie gleichzeitig
damit anzuzeigen, aber das erwies sich nicht als betriebssicher genug
(die Spannung war etwas zu niedrig und die LED nicht gegen Überstrom
geschützt).
Die Programmierleitungen sind mit 470 Ohm-Strombegrenzungswiderständen
zum Schutz von Programmer und Target versehen. Ausnahme: die
MOSI-Leitung ist mit nur 100 Ohm beschaltet, damit sich das
Programmiersignal besser "durchsetzen" kann, wenn der Eingang des
Target mit Hardware beschaltet ist. Wer es sicherer möchte, sollte auch
hier 470 Ohm verwenden und einen Jumper vorsehen, mit dem man den
470-Ohm-Widerstand bedarfsweise überbrücken kann.
Download: Dieser Artikel als PDF
Elektronik-Labor
Projekte
AVR