Digispark Clones / Attiny85 Board HowTo

Ich habe mir kürzlich ein paar Digispark Boards von eBay zugelegt.
Diese sind natürlich nicht Original, was, neben den Tutorials im Netz aus dem Jahr 2013,
zu zusätzlichen Problemen führt.

IMG_2636

Hier ein paar Findings was man beachten muss, bzw. wie man Sie updated.

Alles natürlich auf eigene Gefahr.
Ich habe mir einen erstmal unzugänglich gemacht (kann gerettet werden), und einen wohl mit zuviel Spannung zerlegt während ich rum probiert habe.

Ein wenig Vorkenntnisse mit Arduino und Hardware sollte auch vorhanden sein.

Version

Meine Boards sind alle Model A, d.h. das die interne LED auf Port 1 liegt.

Micronucleus Firmware updaten

Die neueste Version (beim Schreiben war das 1.11) gibts bei Github: https://github.com/micronucleus/micronucleus/tree/v1.11

Man muss die Versionen im Verzeichnis Upgrade nehmen.
Diese kann man einfach per USB auf den Digispark laden.

Die Firmware ist sozusagen in einem Programm für den Digispark eingepackt und das Programm wird dann vom Chip ausgeführt. Er flasht sich also selbst.

Man lade also micronucleus/commandline/builds/OSX/micronucleus herunter (Rechtsklick auf Raw bei Github).
Und die gewünschte Firmware aus micronucleus/upgrade/releases/ (micronucleus-1.11-upgrade.hex bei mir).

Bei MacOS muss man micronucleus ausführbar machen

chmod +x micronucleus

Dann kann man in der Kommandozeile die Firmware flashen:

./micronucleus --run micronucleus-1.11-upgrade.hex

Was bringt eine neue Version

Ich habe das natürlich gemacht weil ich dachte das die Firmware für meine Probleme verantwortlich ist.
Bei der einen Charge Boards war das nämlich noch Version 1.02, bei der anderen Version 1.06.

Die neuere Version bringt vor allem mehr Platz für eigene Programme/Sketches.
Wenn man also noch ein paar Byte braucht kann sich das lohnen.

Wo sieht man die Firmware Version?

Beim Hochladen von Programmen in der IDE wird die Version angezeigt, ziemlich am Anfang bei 30-40% (zumindest bei mir).

Was machen die verschiedenen Versionen?

entry-ext-reset-upgrade

Das ist die Version bei der Pin5 dazu genutzt wird in den Programmier-Modus zu schalten wenn man
das Board einsteckt. Wie gesagt, dazu müssen die Fuses richtig gesetzt sein.

entry-jumper-pb0-upgrade

Hier wird Pin 0 genutzt um in den Programmiermodus zu kommen, nicht Pin5.
(http://digistump.com/board/index.php/topic,320.msg8590.html#msg8590)

ledpb1-upgrade

Todo

PINs nutzen

Ich hatte geplant die sechs Pins voll zu nutzen, mit zwei Potis, einem Taster und einem RGB-Strip an den drei PWM-Ausgängen.

Pin 5

Eigentlich sollte das ein IO sein beim Digispark, aber nicht so bei den Nachbauten. Hier ist es ein bzw. der Reset-Pin. Ein Taster daran resettet also das Board.
Das ist der Default beim Attiny.

Die Originalen haben ein Fuse-Bit beim Attiny gesetzt, dadurch kann man den Pin als IO nutzen. Die Firmware wartet ja beim Starten 5 Sekunden damit Programme geladen werden können.

Andere Firmware

Jetzt könnte man meinen das man wenigstens um die 5 Sekunden rumkäme, immerhin gibt es ja auch Firmware die den Pin nutzt um den Attiny in den Programmiermodus zu schalten, dafür nicht wartet (entry-ext-reset-upgrade).
So einfach ist es aber nicht, diese Firmware fragt nämlich wie ein normaler Sketch den Pin ab, geht also davon aus das dieses Fuse Bit gesetzt ist.

Setzen des Fuse

Man kann den Pin5 recht einfach umschalten damit man ihn in Sketches als Input nutzen kann.
Hierzu muss man den Attiny per ISP programmieren.
Ich habe dazu einen Arduino Uno genutzt.

Diesen schließt man normal per USB an. In der Arduino IDE lädt man aus dem Menü Datei->Beispiele->ArduinoISP den Sketch. Im Menü Werkzeuge->Platine auf Arduino/Genuino Uno stellen und schon kann man den Sketch hochladen.

Man kann dann den UNO und den Digispark wie im verlinkten Bild verdrahten:
http://www.instructables.com/id/How-to-unlock-Digispark-ATtiny85-and-convert-it-to/step4/Programming-Digispark-via-ISP/
Der Kondensator zwischen Reset und Ground ist nur beim Uno nötig, nicht bei anderen Boards.

Jetzt geht es auf die Kommandozeile / ins Terminal. Dort geht man in den Ordner in den man micronucleus für die IDE kopiert hat.
Bei mir ist das (siehe oben) ~/Library/Arduino15/avr/bin.

Dort kann man nun

./avrdude -C~/Library/Arduino15/avr/etc/avrdude.conf -v -pattiny85 -cstk500v1 -P/dev/cu.usbmodem1411 -b19200 -U hfuse:w:0x55:m

ausführen.

Das geht aber nur einmal, denn danach kann man den Attiny nicht mehr per ISP programmieren, weil der RESET Pin ja fehlt.
Rückgängig kann man das nur machen indem man in per HVSP umprogrammiert, das ist in dem Instructable oben erklärt.

Siehe auch
http://www.mikrocontroller.net/articles/AVR_Fuses
http://digistump.com/board/index.php?topic=1039.0

Wofür ist das Resetten?

Normalerweise programmiert man Attinys per ISP-Programmer, der Reset setzt den Chip in den Programmier-Modus.
Das USB-Programmieren ist ja das Besondere des Digispark, bzw. der Micronucleus Firmware.

Siehe auch https://digistump.com/wiki/digispark/tutorials/programming#creating_digispark_compatible_clones

Pin 3 und 4

Für Taster (digitalRead)

Das hat mich auch einige Nerven gekostet, denn diese Pins haben, für die USB-Kommunikation, eine Zener-Diode.
Pin3 hat auch noch einen Pullup-Widerstand.
Ein normaler Button der 5V auf den Pin gibt, mit einem Pull-Up-Widerstand auf Ground funktioniert nicht.

Funktioniert hat es umgekehrt, der Button schaltet den Pin auf Ground, der Pull-Up bleibt auf Ground.

Für Poti (analogRead)

Todo

Pin 3 als digital Ausgang (digitalWrite)

Als Ausgang gibt es keine Merkwürdigkeiten.

Pin 4 als PWM Ausgang

Das funktioniert (inzwischen überraschenderweise) auch ohne Probleme.

Pin 1 als PWM Ausgang

Pin1 ist ja nicht nur IO, daran hängt auch noch die interne LED.
Deswegen wird diese auch mit gedimmt wenn man analogWrite(1, 50) ausführt.
Man kann die interne LED aber abklemmen (mechanisch) ohne das dies Auswirkungen haben soll.

Fritzing

Den Digispark für die Fritzing Software gibts hier: http://tuxamito.com/wiki/index.php/Digispark

Fazit

Selbst beim Original Digistump Digispark wird man die IDE zusammen basteln müssen.

Ich würde nach dieser Erfahrung zu einen Arduino Nano Clone greifen, die sind nicht viel teurer, sollten aber „out of the box“ funktionieren. Ein Nano ist eine kleinere Bauform des Uno.

Oder ein Mini Pro, der hat aber kein USB, was ich nachher aber auch nicht brauche sondern nur zum Programmieren praktischer finde.
Wobei das Ein-Ausstöpseln des Digispark einfach nur nervt, und man nachher wieder basteln muss um die 5 Sekunden beim Starten wegzubekommen. Da ist die ISP Programmierung schneller.

 

Advertisements
Digispark Clones / Attiny85 Board HowTo

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s