USBASP-Programmer mit Attiny85      

von Ralf Beesner                
Elektronik-Labor   Projekte   AVR 



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