08.10.2013

2€ Arduino board bzw. USBASP 2.0 Firmware Hack

Wer für ganz wenig Geld mit AVR Basteleien anfangen möchte für den ist das hier vorgestellte Projekt vielleicht etwas.

Bei Ebay.de bekommt man für sagenhafte 2,30€ einen ISP Programmier Adapter, braucht zwar ca. 3 Wochen Versandzeit aber das ist bei dem Betrag nicht ganz so entscheidend.



USBASP Programmier Adapter


Auf der Kleinen Platine befindet sich ein Atmega8, 2 Led's, ein Externer 12Mhz Quarz,ein ISP Anschluß, ein usb Anschluß und ein 3,3V Pegelwandler.

Schaltplan USBASP 2.0

Bootloader Installieren:



Um den Programmier Adapter als eigenständigen Arduino zu nutzen müßen wir nur einen Bootloader haben der über eine Virtuelle Usb Schnitstelle das Programm Lädt. Zum glück gibt es diesen schon, der USBasploader ist genau das richtige, da dieser Bootloader für ein anderes Board geschrieben worden ist mußte ich ein Paar änderungen im Code machen, wie zb. die USB + und - Datenleitungen und einen Timeout der nach einem Reset für 20 Sekunden auf eine neue Programmierung wartet.



Um den Bootloader auf den Atmega zu bekommen benötigt man noch einen Programmier adapter, also am besten gleich 2 Bestellen oder einen Arduino verwenden. Wer dies noch nicht gemacht hat findet ein gutes Turtorial auf http://www.rogerclark.net/?p=702

Hier habe ich die fertigen Änderungen und die Hex datei zum Download bereitgestellt.

Um den Adapter mit einem Zweiten Programmier Adapter einfach WinAvr20100110.exe installieren danach mit dem Windows Terminal(CMD.exe suchen und ausführen) in den download Ordner von der firmware navigieren (cd commando) und die Folgenden Befehle eingeben.
Bitte die Brucke JP2 bei dem zu Programmierenden Adapter kurzschließen da sonst kein programmieren möglich ist, dazu am besten eine Zweier Stiftreihe einlöten und einen Jumper raufstecken da es nur einmal benötigt wird.

avrdude -p atmega8 -c usbasp -U hfuse:w:0xC8:m -U lfuse:w:0xBF:m
avrdude -p atmega8 -c usbasp -v -U flash:w:USBASP_Arduino_Board.hex
avrdude -p atmega8 -c usbasp -U lock:w:0x0F:m

Die Fusebits müßen genau wie angegeben eingestellt werden da es sonst passieren kann das der Chip nicht mehr nutzbar ist.

Umbau:

Da der Bootloader nur anspricht wenn man den Atmega8 mittels der Resetleitung Resetet muss ein Taster auf die Platine gelötet werden.
USBASP Adapter mit Reset
Dazu habe ich von einem Micro Taster einfach 2 Beine abgekniffen und die anderen beiden wie im Bild auf den Atmega8 gelötet.
Aufgelöteter Taster
Bei dem Taster jedoch unbedingt beachten welche 2 Pins Geschlossen werden und welche dauerhaft verbunden sind, zur not einfach mit einem Durchgangsprüfer nachmessen.


Arduino IDE Mod:

Wer es noch nicht hat lädt sich von http://www.arduino.cc/ die Version 1.0.5 als Installation oder ZIP Datei herunter und Installiert diese
Wir müssen Der Arduino IDE das Neue Board nun noch beibringen, im Installationsverzeichnis von der Arduino IDE gibt es den Ordner hardware und darin arduino in diesem Ordner befindet sich die Datei boards.txt.
in dieser Datei muss ganz am ende folgender Block eingefügt werden:

##############################################################
usbasploader_board.name=_Programmer_Board
usbasploader_board.upload.protocol=usbasp
usbasploader_board.upload.maximum_size=6144
usbasploader_board.upload.speed=19200
usbasploader_board.upload.disable_flushing=true
usbasploader_board.bootloader.low_fuses=0xBF
usbasploader_board.bootloader.high_fuses=0xC8
usbasploader_board.bootloader.unlock_bits=0x3F
usbasploader_board.bootloader.lock_bits=0x0F
usbasploader_board.build.mcu=atmega8
usbasploader_board.build.f_cpu=12000000L
usbasploader_board.build.core=arduino
usbasploader_board.build.variant=standard
usbasploader_board.upload.disable_flushing=true

die Datei Speichern und schließen und fertig ist der MOD.

Beim nächsten Öffnen von der Arduino IDE findet man unter Tools und Boards nun Eine neue Zeile mit:
_Programmer_Board

Arduino IDE

Die Programmierung:

wenn nun alles soweit vorbereit ist kann die erste Programmierung gemacht werden.
Den USBASP Adapter in einen freien USB Slot stecken und die Arduino IDE Öffnen, am Adapter sollte erstmal nichts passieren und der PC wird ein Unbekanntes USB Gerät finden.

Als Test kann erst einmal der einfache Blink Code Herhalten.

Test Blink Code
Da an dem USBASP Adapter nicht am Arduino Ausgang 13 sondern am Analogeingang A1 und A0 die led's Angeschlossen sind müssen wir dies im Code Ändern

Änderung an Beispiel Code
Ist dies gemacht drücken wir auf den Upload Button(Kleiner Pfeil neben dem hacken) und ca. 2-3 Sekunden später auf den angelöteten Reset Taster auf dem USBASP Adapter. nun wird eine Led dauerhaft Leuchten was bedeutet das der Bootloader erfolgreich gestartet ist.

Wenn alles Richtig funktioniert hat sollte folgende Ausgabe in der Arduino IDE kommen. Und der USBASP Adapter sollte im 1 Sekunden Takt Blinken.

Erfolgreich Programmiertes Board.
Die angezeigte Fehlermeldung ist eher ein hinweis und kann ignoriert werden.

Falls es nicht funktioniert hat sind hier ein paar mögliche Lösungen.

Fehler: Die Led auf dem  USBASP Adapter leuchtet nach einen Druck auf die Reset Taste nicht.
Lösung: Bootloader ist nicht richtig installiert oder die Fusebits nicht richtig gesetzt.

Fehler: Led leuchtet aber keine Programmierung möglich.
Lösung: Ein anderer USBASP Programmier Adapter Steckt in einem Usb Port, Alle anderen entfernen.

Wenn mal eine Programmierung möglich ist und mal nicht kann es auch helfen in der Arduino IDE nicht mittels des kleinen Pfeils den Upload zu starten, Stattdessen auf Datei und dann auf Upload über Programmer Klicken, dazu muss vorher jedoch über Tools und Programmer  der USBasp als Programmer ausgewählt werden.

Programmer Auswahl



Wenn ihr soweit seid dann kann das Programmieren nun Losgehen man hat nun ca. 6Kb an Speicher zur Verfügung und kann natürlich externe dinge an die ISP Schnittelle anschließen.

Pinbelegung für Arduino/Amtega8
Hier die Pinbelegung der Ausgänge die in der Arduino IDE zur Verfügung sthen, achtung die pinnummern sind nicht gleich wie bei der Bauweise von dem USBASP Adapter einfach die bezeichnung der ausgänge in der schaltung von dem USBASP Adapter vergleichen.



wer bis hierhin gekommen ist, dem wünsche ich viel Spaß beim Basteln.

Kommentare:

  1. die Downloads installieren nur Müll auf dem PC!
    Die Idee mit dem Programmer ist ja gut, nur fehlen die richtigen Dateien.

    AntwortenLöschen
    Antworten
    1. Danke für den hinweis habe die Datei nun nochmal bei Dropbox bereitgestellt.

      Löschen
  2. Danke, jetzt hat es geklappt, muß noch auf die Lieferung warten.

    AntwortenLöschen
  3. Die Platinchen sind angekommen, gleich eine umgebaut und nach Anleitung geflasht, funktioniert prima! Nur die lange Wartezeit des Bootloaders stört etwas. wo kann ich diese kürzer machen?

    AntwortenLöschen
    Antworten
    1. Super das es geklappt hat.
      Die Bootloader zeit kann man durch erneutes Compilieren der Hex Datei verkürzen.
      Dazu WinAVR Runterladen (http://winavr.sourceforge.net/), die Benötigten Dateien sind im Ordner Firmware im Download.

      Löschen
  4. So, habe mal etwas mit dem Ding gespielt. Auch bei mir ist das Problem, daß es sich mal direkt und mal über Programmer ansprechen läßt. Zu den Anschlüssen, am ISP Stecker ist bei mir Pin3 frei undPin 8 läßt sich problemlos von Masse trennen. Da kann man z.B. PD6 und P7 draufklemmen. So hat man 8 Digitalpins (PB2-5, PD0,1,6,7)und Vcc/Gnd. An den beiden Jumpern 2 und 3 liegen die Analogpis PC6 und PC2 an. Ergibt schon eine brauchbare Konfiguration.

    AntwortenLöschen
  5. Hallo, Wo gibts Heute die Download? (Dropbox link seems broken)

    AntwortenLöschen
    Antworten
    1. Habe gerade die Datei neu hochgeladen ist nun wieder Online :)

      Löschen
  6. There is a post about this in hackaday
    http://atcnetz.blogspot.it/2013/10/2-arduino-bzw-usbasp-20-firmware-hack.html

    Have you tested it with the new IDE?

    AntwortenLöschen
  7. Hey. Thanks for your comment.
    Since i build it have have not realy used it again. So i dont know if its work with the new ide sorry :)

    AntwortenLöschen