Attiny85 mit BASCOM programmieren

Rund um den Digispark
Antworten
Heinrichs
Beiträge: 185
Registriert: Do 21. Okt 2010, 18:31

Attiny85 mit BASCOM programmieren

Beitrag von Heinrichs » Mi 6. Nov 2019, 13:23

Für wenig Geld (ca. 1,50 €) kann man ein Attiny85-Board vom Typ Digispark erwerben. Der Mikrocontroller besitzt einen Bootloader, über den man ihn bequem via USB-Kabel programmieren kann. Hier wollen wir zeigen, wie der PC und BASCOM dazu vorbereitet werden müssen. Außerdem geben wir an, was man beim Umgang mit diesem Board beachten sollte, wenn man unliebsame Überraschungen vermeiden möchte.

attiny85.jpg
Attiny85-Board
attiny85.jpg (31.79 KiB) 26105 mal betrachtet

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.

geraete_manager.jpg
Eintrag für den Digispark-Treiber
geraete_manager.jpg (19.93 KiB) 26103 mal betrachtet


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:

programmersettings.jpg
Einstellungen des BASCOM-Programmers
programmersettings.jpg (33.54 KiB) 26100 mal betrachtet

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.
Nun öffnet sich die Windows-Konsole und zeigt den Ablauf der Brennvorgangs an; innerhalb kurzer Zeit ist die Übertragung beendet und das Konsolenfenster schließt sich automatisch.

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.).

attiny85_shematic_digispark.jpg
Schaltbild für das Attiny85-Board (Digispark)
attiny85_shematic_digispark.jpg (27.44 KiB) 26069 mal betrachtet

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:

synchro.jpg
Synchronpulse an P3
synchro.jpg (9.64 KiB) 26062 mal betrachtet

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.

attiny85_mit_led_array.jpg
Attiny85-Board mit LED-Array
attiny85_mit_led_array.jpg (41.95 KiB) 26079 mal betrachtet

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:

attiny85_lauflicht.wmv
Video zum Lauflicht
(457.01 KiB) 2546-mal heruntergeladen

.

Antworten