Bascom AVR:
Bascom und ATtiny13
Basic-Programme sind meist sehr viel leichter zu lesen als Assemblerprogramme. Zwar ist es wichtig, die entscheidenden Assembler-Grundlagen zu kennen, weil sie sehr nah an der Hardware liegen. Für schnelle und leichte Entwicklungen und die Lösung kleiner Aufgaben wird jedoch oft Basic bevorzugt. Für die AVR-Familie hat sich BASCOM-AVR von MCS-Electronics aus den Niederlanden weitgehend durchgesetzt.
von B. Kainka
Eine freie Demoversion von BASCOM-AVR erhalten Sie auf der Homepage des Herstellers www.mcselec.com. Hier wurde die „BASCOM-AVR Demo Version 1.11.8.3" verwendet. Die freie Software ist auf eine Code-Größe von 4 KB begrenzt, was jedoch wesentlich mehr ist als der ATtiny13 aufnehmen kann. Installieren Sie die Software auf Ihrem PC um die folgenden Versuche durchzuführen.
Ein Blinkprogramm
Im Verzeichnis Samples/Chips findet man kleine Beispielprogramme zu den verschiedenen AVR-Chips. Laden Sie das Beispiel attiny13.bas.
Das Beispielprogramm enthält einen Verweis auf das Registerfile „attiny13.dat".
Damit ist die Hardware-Plattform definiert.
Hardware-Register wie der in diesem Programm verwendete Port B und der PWM-Ausgang können also ihren Registeradressen zugeordnet werden.
$regfile

=

"attiny13.dat"
$crystal

=

9600000
Config

Portb

=

Output
'final

use

pwm

mode

of

timer0
Config

Timer0

=

Pwm

,

Prescale

=

1

,

Compare

A

Pwm

=

Clear

Down
Do


Pwm0a

=

Pwm0a

+

10


Toggle

Portb


Waitms

1000
Loop
End
Demoprogramm in BASCOM-AVR
| Ganzen Artikel lesen... |  |
Unter Options/Output muss das Hex-File angeklickt sein. Kompilieren Sie das Programm mit Program/Compile oder F7. Dabei wird im gleichen Verzeichnis die Datei attiny13.hex erzeugt. Laden Sie das Programm mit der Upload-Funktion in LPmiko in den Controller. Dabei fällt schon auf, dass wesentlich mehr Code erzeugt wurde als mit einem vergleichbaren Assemblerprogramm. Das ist verständlich, weil Basic praktisch aus vielen vorbereiteten universell einsetzbaren Unterprogrammen besteht, die selbst in Assembler entwickelt wurden. Dazu kommt die Verwendung von Variablen und umfangreiche Rechenfähigkeiten.
Der geladene Programmcode
Das geladene Programm funktioniert auf Anhieb. Alle Anschlüsse am Port B wurden als Ausgänge definiert (Config Portb = Output). In einer Schleife werden Die Portzustände immer wieder umgedreht (Toggle Portb). Sie können also an PB3 oder PB4 eine LED mit Vorwiderstand anschließen, die dann langsam blinkt. Außerdem wird der PWM-Ausgang initialisiert und in der Schleife schrittweise erhöht (Pwm0a = Pwm0a + 10). Mit einer LED an PB0 sehen Sie daher einen treppenförmigen Helligkeitsverlauf.
Die Endlosschleife ( Do .... Loop) enthält einen Wartebefehl für 1000 ms (Waitms 1000). Das Programm ist jedoch deutlich langsamer. Das liegt offensichtlich daran, dass die Taktfrequenz mit 9,6 MHz angegeben wurde ($crystal = 9600000), während sie tatsächlich nur 1,2 MHz beträgt. Passen Sie also diese Zeile an ($crystal = 1200000), kompilieren Sie erneut und laden Sie das Programm neu. Nun ist deutlich der Sekundentakt erkennbar.
Die passende Ergänzung zu diesem Artikel:
 | Lernpaket Mikrocontroller Lieferumfang: 15 Bauteile, Platine, Sub-D-9-Kabel, CD-ROM, Handbuch 160 Seiten ISBN 978-3-7723-4899-0 Versandkostenfrei* direkt beim Verlag bestellen
49,95 € 
|

Lernen Sie die ganze Vielfalt vom Franzis Buch- und Softwareverlag kennen