Start
Experimente
Grundlagen
Produkte
- ES-M32
-- Erster Test
-- USB
-- Bascom
-- RAM
-- ADC
-- Ports
-- Relais -- Morsen -- Datenlogger -- SIOS -- ASCII -- mV-Logger -- I/O12/24 V -- Bootloader
Neues
Impressum
|
ES-M32
Bascom-AVR
Bascom-AVR ist ein
einfach zu bedienender Basic-Compiler für AVR-Controller. Eine
freie Demoversion kann von der Homepage des Herstellers MCS Electronics
geladen werden. Die freie Version ist auf eine Codegröße von
4 KB limitiert, was für die ersten Schritte mehr als genug
ist.
Download: Der Quelltext (ESM32Test1.zip)
Bascom übersetzt einen
Basic-Quelltext in eine ausführbare Hex-Datei, die dann mit
ESM32.exe in den Controller geladen wird. Wer bereits in Visual Basic
programmiert hat, findet sich mit Bascom schnell zurecht. Das
vorhandene Programmbeispiel ESM32Test1.bas zeigt die wichtigsten
Details für die Ansteuerung des Boards und kann leicht
verändert und für spezielle Zwecke angepasst werden. Testen
Sie zuerst einmal, ob das Programm ohne Fehlermeldung übersetzt
wird. Wählen Sie Program/Compile oder F7 oder die zugehörige
Symbol-Schaltfläche, das schwarze schräge IC. Die
Erfolgsmeldung sagt, dass in diesem Fall 10% des Speichers verwendet
wurde. Im Verzeichnis des Quelltextes steht nun eine neue Datei
ESM32Test1.hex. Diese können sie in den Controller laden.
|
Erzeugen
Sie einmal absichtlich einen Fehler. Schreiben Sie z.B. einfach ein
Wort in eine Zeile, mit der der Compiler garantiert nichts anfangen
kann, z.B. „Gesundheit!“. Wenn sie nun neu kompilieren
kommt eine Fehlermeldung. Mit angegeben ist die Zeile, in der der
Fehler steht. Sie brauchen nur auf die Meldung zu klicken, dann springt
der Cursor genau in die fehlerhafte Zeile.
Jedes Bascom-Programm beginnt mit einem Vorspann, in dem man dem
Compiler wichtige Einstellungen mitteilt. $regfile = "m32def.dat" legt
fest, dass eine Register-Datei für den Mega32 verwendet werden
soll, die im Bascom-Verzeichnis bereits vorbereitet liegt. Wenn mal ein
anderer Controller verwendet werden soll, muss diese Einstellung
ausgetauscht werden. Man kann die Einstellung auch unter
Options/Compiler/Chip vornehmen und im Quelltext darauf verzichten.
Hier erfährt man auch die genauen Namen der Register-Dateien.
|
'Bascom ATmega32, LCD, Memory und Tastenabfrage $regfile = "m32def.dat" 'Register-Datei zum Mega32 $crystal = 11059200 'Crystal = Quarz, hier 11,0592 MHz $hwstack = 16 '16 Bytes für Hardware-Stapel $swstack = 32 '32 Bytes für Software-Stapel $framesize = 32 '32 Byte für Datenrahmen
Man kann
die Einstellung auch unter Options/Compiler/Chip vornehmen und im
Quelltext darauf verzichten. Hier erfährt man auch die genauen Namen
der Register-Dateien.
|
Im selben Fenster
stehen auch einige weitere Einstellungen wie HW-Stack, Soft Stack und
Framesize. Es handelt sich hier um reservierte Speicherbereiche, die
der Compiler benötigt. Wenn man die voreingestellten Werte stehen
lässt oder die Einstellungen im Programm verwendet muss man sich
zu nächst nicht darum kümmern. Erst bei sehr großen
Projekten kann es nötig werden hier etwas zu ändern. Die
entsprechenden Einstellungen im Quelltext überschreiben die
Voreinstellungen in dne Options.
Baud =
9600
'Übertragungsrate 9600 Bits/s
Die Einstellung Baud = 9600 betrifft die serielle Schnittstelle, falls
man z.B. mit Print Texte oder Zahlenwerte senden will. Das
Terminalprogramm muss dann ebenfalls auf eine Übertragungsrate von
9600 Baud eingestellt sein. Aber Achtung: Der Mega32 leitet die
Baudrate aus der Taktfrequenz ab. Die $crystal-Einstellung muss also
stimmen. Wenn man z.B. einen neuen Chip verwendet, arbeitet der
Controller noch mit dem internen Oszillator mit 1 MHz. Dann wird eine
krumme Baudrate erzeigt, und im Terminal sieht man nur komische
Zeichen. Dann müsste man entweder die Fuses für den externen Quarz programmieren oder im Programm die Taktrate 1.000.000 Hz einstellen.
Ein einem Bascom-Programm folgen dann Deklarationen der verwendeten
Unterprogramme (engl. Subroutine, kurz Sub), hier Sub Test1 bis Sub
Test4. Immer wenn man ein neues Unterprogramm einbaut, muss es vorne
mit Declare angegeben werden.
|
Declare Sub Test1 Declare Sub Test2 Declare Sub Test3 Declare Sub Test4
Es
folgt die Dimensionierung (Dim) von Variablen. Der Compiler muss
wissen, welchen Speicherplatz eine Variable verwendet. Es gibt z.B. die
Variablentypen Byte (8 Bit, Wertebereich 0 … 255),
Word (2 Bytes, 0…65635) oder Integer ( 2 Bytes, Wertebereich
-32768 …+32767). In diesem Fall werden zwei Variablen
für die PWM-Steuerung weiter unten gebraucht. Weil dort Zahlen im
Bereich bis 1023 vorkommen reicht ein Byte nicht aus. Man kann
Variablen im Programmkopf dimensionieren, dann sind sie im gesamten
Programm gültig (globale Varibalen). Oder man schreibt sie als
lokale Variablen in eine Sub. Allgemein ist der Umgang mit globalen
Variablen in Bascom einfacher und sicherer.
|
Dim Pwma As Integer Dim Pwmb As Integer
Dann
werden bestimmte Hardware-Baugruppen des Controllers eingerichtet. Hier
ist es zunächst ein Timer, der ebenfalls weiter unten verwendet
werden soll. Die beiden Zeilen sind mit dem Kommentarzeichen
ausgeschaltet (im Editor erscheinen sie grün), werden also nicht
mit übersetzt. Alternativ kann nämlich die Initialisierung
auch weiter unten im Programm, z.B. in einer Sub durchgeführt
werden.
|
'Config Timer0 = Timer , Prescale = 64 'Start Timer0
Wenn
man in einem Programm das Display verwenden möchte muss man dem
Compiler mitteilen, an welchen Anschlüssen es liegt (beim ES-M32
sind es sechs Leitungen am Port D) und wie viele Spalten (16) und
Zeilen (2) es besitzt. Dann muss einmal im Programm der Befehl Initlcd
zur Initialisierung stehen. Cls löscht das Display, Locate stellt
den Cursor an die gewünschte Stelle, und LCD
„Text“ schreibt einen Text.
|
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2 Config Lcd = 16 * 2
Initlcd Cls Locate 1 , 1 Lcd "AK Modul Bus" Locate 2 , 1 Lcd "ES-M32" Waitms 1500
Im
Programmbeispiel folgt nun eine tastengesteuerte Auswahl der vier
vorhandenen Unterprogramme. Im Folgenden sollen die einzelnen
Unterprogramme genauer beschrieben werden, weil sie die wichtigen
Grundelemente der Programmierung enthalten.
Siehe auch : Bootloader für Bascom: www.elektronik-labor.de/AVR/Bootloader.html
|
|