Achtung: Die folgenden Hinweise beziehen sich auf Boards, bei denen der Attiny85 den Digispark-Bootloader besitzt.
Installation des Digispark-USB-Treibers
Laden Sie zunächst hier die Treiber-Datei "Digispark.Drivers.zip" herunter und entpacken Sie sie. In dem entpackten Ordner finden Sie den Unterordner "Digistump Drivers" (ohne Punkt!). Öffnen Sie nun diesen Unterordner; dort gibt es zwei Installationsprogramme: DPinst.exe (für Windows 32 Bit) und DPinst64.exe (für Windows 64 Bit). Starten Sie das Installationsprogramm für Ihr System und führen Sie damit die Installation durch.
Sie können mit Hilfe des Hardware-Managers kontrollieren, ob die Installation erfolgreich war. Öffnen Sie dazu den Hardware-Manager und schließen anschließend das Attiny85-Board über ein USB-Kabel an Ihren PC an. War die Installation erfolgreich, dann erscheint ein entsprechender Eintrag, in der folgenden Abbildung rot eingekreist. Trennen Sie anschließend das Attiny85-Board wieder vom PC.
Einrichten von BASCOM
Damit BASCOM die Programme über das USB-Kabel an das Attiny85-Board übertragen kann, muss der Programmer von BASCOM passend eingestellt werden. Dazu wählen wir im Menü "Optionen - Programmierer" aus. Es erscheint das Programmer-Formular; hier nehmen wir folgende Einstellungen vor:
Natürlich müssen Sie dabei den Pfad zum externen Brenn-Programm "micronucleus.exe" anpassen. Achten Sie bitte darauf, dass der Pfad zu dem Ordner, in welchem sich das Brenn-Programm befindet, keine Leerzeichen besitzt. Kopieren Sie ggf. das Brennprogramm in einen anderen passenden Ordner. Vergessen Sie bitte auch nicht das Einstellen der Häkchen! Bestätigen Sie Ihre Eingaben am Schluss, indem Sie die OK-Schaltfläche betätigen!
Ein einfaches BASCOM-Programm
Auf dem Attiny85-Board befindet sich eine LED, diese wollen wir nun zum Blinken bringen. Die LED ist an PortB.1 angeschlossen. Das Board schließen wir noch nicht an den PC an.
Wir geben zunächst das folgende Programm ein:
Code: Alles auswählen
' Test-Programm für das Attiny85-Board
' ACHTUNG beim Uploaden: ZUERST Platine über USB-Kabel mit PC verbinden;
' DANN INNERHALB VON 5 SEKUNDEN die Program-Chip-Schaltfläche betätigen.
$regfile = "attiny85.dat"
$crystal = 16500000
$hwstack = 40
$swstack = 16
$framesize = 32
Ddrb.1 = 1
Do
Portb.1 = 1
Waitms 200
Portb.1 = 0
Waitms 1000
Loop
Anschließend gehen wir folgendermaßen der Reihe nach vor:
- Wir speichern den Quellcode ab und kompilieren das Programm.
- Wir schließen das Attiny85-Board an den PC an; der PC quittiert dies mit einem akustischen Signal.
- Innerhalb von 5 Sekunden betätigen wir nun die Schaltfläche "Program Chip" oder die Taste F4.
Trennen Sie das Attiny85-Board nicht vom USB-Kabel; über dieses wird das Board weiterhin mit Strom versorgt. Wenige Sekunden nach der Übertragung startet unser Programm: Die Test-LED blinkt!
Was Sie noch beachten sollten...
Das Attiny85-Board besitzt die Anschlüsse P0 bis P5; diese stehen für PortB.0 bis PortB.5. P5 ist der Reset-Eingang. P2 und P4 werden von der USB-Schnittstelle beim Übertragen benutzt (D- und D+). Wenn an diesen Anschlüssen irgendwelche anderen Bauteile angeschlossen sind, wird dies die Übertragung (höchstwahrscheinlich) stören.
Gelegentlich kann es vorkommen, dass trotz korrekter Durchführung der oben angegebenen Schritte die Übertragung nicht gelingt. Versuchen Sie es einfach ein zweites Mal.
Wenn Sie andere Bauteile (wie z. B. LEDs, s. u.) an den Pins P0 bis P4 betreiben wollen, können Sie diese in der Regel schon vor der Übertragung mit dem Board verbinden; allerdings sollten Sie diese erst dann mit Masse verbinden, wenn die Übertragung abgeschlossen ist und das Programm auf dem Mikrocontroller schon gestartet ist. Bei Bedarf können Sie Ihr Programm so gestalten, dass der Start des Programms durch ein kurzes Aufblitzen der Test-LED angezeigt wird.
Messungen zeigen, dass während der Laufzeit des obigen Programms an P3 ein periodisches Signal anliegt. Dieses Signal kann nicht von unserem Programm kommen, da dieses lediglich an P1 ein Signal ausgibt. In der Tat stammt es vom USB-Anschluss des PCs; es gelangt über die Leitung D- zum Attiny85 und wird von ihm zur Synchronisierung genutzt (s. u.).
Ein Logic-Analyzer zeigt, dass dieses Synchronisationssignal aus Pulsen der Pulsweite 1,33 us besteht; sie haben einen konstanten zeitlichen Abstand von 0,9988 ms:
Wenn diese Signale an P3 stören, kann man das Board auch ohne den PC betreiben. Sie haben dazu verschiedene Möglichkeiten:
- Sie schließen das Board über ein USB-Kabel an eine Powerbank an.
- Sie schließen eine elektrische Quelle von 5 V an die Anschlüsse VIN bzw. GND an.
Wie man am Quellcode (s. o.) erkennen kann, arbeitet der Attiny85 hier mit einer Taktfrequenz von 16,5 MHz. Dies gilt allerdings nur, wenn das Board an einen PC angeschlossen ist. In diesem Fall erhält der Mikrocontroller nämlich das oben erwähnte Synchronisationssignal; mit dessen Hilfe kann er diese Taktfrequenz mit einer Genauigkeit von ca. 1% halten. Wird das Board durch eine andere (Quelle betrieben, steht diese externe Synchronisation nicht zur Verfügung. Nun greift der Mikrocontroller auf einen internen Oszillator zurück. Die Taktfrequenz beträgt dann etwa 16 MHz; sie kann je nach äußeren Bedingungen (Höhe der Versorgungsspannung, Temperatur) um bis zu 10 % schwanken.
Lauflicht mit einem LED-Array
An das Attiny85-Board schließen wir ein LED-Array an; dieses besteht aus 8 LEDs, die mit jeweils einem Vorwiderstand auf eine kleine Platine gelötet sind. Die gemeinsame Masse liegt an dem schwarzen Kabel (s. Abb.). Beim Einstecken wird darauf geachtet, dass an P5 keine LED angeschlossen ist.
Das Programm für das Lauflicht ist:
Code: Alles auswählen
' Test-Programm für das Attiny85-Board
' ACHTUNG beim Uploaden: ZUERST Platine über USB-Kabel mit PC verbinden;
' DANN INNERHALB VON 5 SEKUNDEN die Program-Chip-Schaltfläche betätigen.
$regfile = "attiny85.dat"
$crystal = 16500000
$hwstack = 40
$swstack = 16
$framesize = 32
Dim Zeit As Word
Ddrb = &B00011111
Zeit = 250
Do
Portb = &B00000001
Waitms zeit
Portb = &B00000010
Waitms Zeit
Portb = &B00000100
Waitms Zeit
Portb = &B00001000
Waitms Zeit
Portb = &B00010000
Waitms Zeit
Loop
Ein kurzes Video zum Lauflicht:
.