Digispark Mini mit BASCOM-AVR programmieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Digistump ist ein kleines, auf einem ATtiny85 basierendes Mikrocontrollermodul, das sich via USB programmieren lässt.


    Dieser Beitrag beschreibt, wie man solch ein Digispark-Mini mit Bascom programmieren bzw. flashen kann.


    Treiberinstallation

    Wird das Board zum ersten Mal in den USB-Port gesteckt, sieht man auf dem Board die Power-LED leuchten (rot) und im Windows Gerätemanager erscheint ein „Unbekanntes Gerät“, was in der Regel bedeutet, dass dem System der nötige Treiber fehlt.

    Der Link zum Digistump Treiberpaket: github.com/digistump/Digistump…6.7/Digistump.Drivers.zip
    Das Zip-File wird heruntergeladen und in einem beliebigen Verzeichnis entpackt.




    Wir führen Install-Drivers.exe aus.


    Am Ende des erfolgreichen Installationsprozesses erscheint das Digispark-Board im Gerätemanager, welches durch den Bootloader eindeutig etabliert wird.






    Der Bootloader

    Nun ist der Treiber installiert und auf dem Attiny85 scheint der synthetische USB-Anschluss zu funktionieren, dank des vorinstallierten Bootloaders “micronucleus tiny85”. Damit die BASCOM-IDE zur Programmierung mit dem Bootloader interagieren kann, braucht man noch das passende Gegenstück namens micronucleus.exe, welches ebenfalls im heruntergeladenen Paket enthalten ist. Alternativ gibt es dieses Bootloader-Bundle und weitere Informationen hier.


    Micronucleus ist ein Konsolenprogramm und hat selbst keine grafische Oberfläche. Um ein erstelltes Programm aus der BASCOM-IDE heraus auf den Attiny85 zu übertragen, müssen in der BASCOM-AVR IDE unter dem Menupunkt Options -> Programmer die Programmer-Einstellungen, abgesehen von den Laufwerks- und Verzeichnisangaben, wie folgt vorgenommen werden:







    "Do's and Don'ts"


    • Der Bootloader ist nach Spannungswiederkehr oder nach einem Reset für etwa 5 Sekunden aktiv. Das bedeutet, dass der Attiny vor einem erneuten Programmiervorgang resetet werden muss. Das kann durch Unterbrechung der USB-Verbindung geschehen oder durch einen Low-Pulse an PB5 (RESET) gegen GND.


    • Ein Problem mit der Übergabe des Hex-Files, bzw. mit dessen Dateinamen und Dateipfad besteht, wenn diese Leerzeichen aufweisen. Das erzeugte Hex-File trägt ja bekanntlich denselben Namen wie das BASCOM-Programmprogramm. Programmnamen also wie "Test 1" sind dann mit Unterstrichen oder ähnlichen gültigen Zeichen als Separator zu versehen, wie z.B "Test_1".




    Beispielprogramm

    Für den ersten Test, ein einfaches Beispielprogramm, das die Board-LED an PB1 blinken lässt:

    BASCOM-Quellcode

    1. $regfile="attiny85.dat"
    2. $crystal=16500000
    3. $hwstack=40
    4. $swstack=16
    5. $framesize=32
    6. config PORTB.1 = Output
    7. do
    8. toggle PORTB.1
    9. waitms 100
    10. loop
    Alles anzeigen



    Mit welcher Taktfrequenz arbeitet der Attiny85 auf dem Digispark-Board?

    Quelle: digistump.com/wiki/digispark/tricks

    Die Antwort lautet „um die 16Mhz“. Komische Sache das, aber es verhält sich wohl so, dass wenn eine USB Verbindung besteht, versucht wird, mithilfe des USB-Signals den internen Oszillator auf 16.5MHz zu kalibrieren. Betreibt man das Board autark, soll der Takt bei etwa 16MHz liegen.
    Es hat sich allerdings gezeigt, dass ohne USB-Anbindung ebenfalls ein Kalibrierwert, der von dem Auslieferungsstand abweicht, in das Kalibrierregister geschrieben wird, sodass man stets von den 16.5MHz ausgeht.
    Die unter o.g. Link gezeigte Methode macht also nur Sinn, wenn die Factory-settings geladen werden sollen um einen Betrieb mit annähernden 16MHZ zu gewährleisten.
    Bei Spannungswiederkehr wird der Werks-Kalibrierwert für den 8MHz Oscillator in das Register OSCCAL geladen. Der Bootloader schaltet die PLL hinzu und überschreibt den vom µC gesetzten Kalibrierwert mit ~140 um 16.5MHz zu erreichen. Besteht eine USB-Verbindung, wird auf dessen Basis versucht die Zielfrequenz von 16,5 MHz gegeben Falls genauer abzugleichen.



    DigisparkShematic

    583 mal gelesen