Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Kapitel 1

1 - BASCOM einrichten

Nachdem man sich eine Kopie des Programms BASCOM aus dem Internet heruntergeladen und auf dem PC installiert hat, erscheint nach dem Start des Programms der Startbildschirm:

Abbildung 2 - Startbildschirm des Programms BASCOM

Als erstes wird unter Options - IDE - Environment die Sprache gewählt.

Abbildung 3 - Im Menü Options - IDE - Environment wird im Feld "Language" die Sprache eingestellt

Unter Options - IDE - Programmer muss im zweiten Schritt der USB-ISP-Programmer eingestellt werden. Die dazu notwendigen Einstellungsdaten entnimmt man den Herstellerangaben des jeweiligen Programmers. Für den von mir eingesetzten ERFOS AVR-ISP-Programmer zeigt Abb. 4 die Einstellungen, wobei der COM-Port individuell verschieden ist.

Abbildung 4 - Im Menü Options - IDE - Programmer müssen die Felder Programmer, COM-Port und Clock eingestellt und zusätzlich die Option Auto Flash ausgewählt werden.

Mehr Einstellungen nehmen wir erst einmal nicht vor und beginnen mit einem einfachen Programm.

2 - Ein erstes Programm brennen

Die Reihenfolge der Arbeitsschritte ist am Anfang immer gleich.

  • Entwickle eine Schaltung (Schaltskizze) auf dem Papier und lege dort fest, mit welchen I/O-Ports des Controllers die Schaltung verbunden ist. Überlege dabei auch, welcher Port Signale empfangen soll (Eingang) und welcher "nur" Ausgang ist.
  • Abb. 5 zeigt einen Schaltungsvorschlag, der in diesem Beispiel umgesetzt werden soll. Eine LED an PB2 mit Vorwiderstand soll zum Blinken gebracht werden.
Abbildung 5 - Schaltskizze mit einer LED und Vorwiderstand am Ausgang PB2 des Controllers ATtiny13.
  • Baue die Schaltung auf dem Steckbrett auf.

 

 

 

 

 

 

 

 

 

 

 

 

Abbildung 6 - Schaltungsaufbau auf einem Steckbrett des Board of Education mit angeschlossener Versorgungsspannung. Es kann auch ein beliebiges Steckbrett genommen werden.

Hat man ein Arduino Board oder ein anderes Board mit fester Spannungsversorgung, dann lässt sich darüber die Versorgungsspannung abnehmen und muss nicht durch eine Zusatzschaltung erzeugt werden.

Ich selbst benutze ein normales Steckbrett mit vorinstalliertem 30-poligen Nullkraft-Sockel und Spannungsversorgungsleitungen mit Entstör-Kondensatoren von 100nF (Abb. 7). Die Versorgungsspannung wird über einen Batteriehalter für 3xAA Batterien zugeführt.

Abbildung 7 - Nullkraft-Sockel mit ATtiny13 und externer Beschaltung.
  • Starte das Programm BASCOM.
  • Wähle Datei - Project - New
  • Strg + N (Create a New File) öffnet ein neues Editorfenster. Die leere Seite wird über Datei - Speichern unter ... mit dem Namen "test1.bas" im Arbeitsverzeichnis abgespeichert. Der Dateiname erscheint oben im Registerfeld.
Abbildung 8 - Das leere Blatt wird unter dem Namen "test1.bas" im Arbeitsverzeichnis abgelegt.
  • Über Optionen - Umgebung im Registerblatt Environment wird der Eintrag Line numbers markiert.
  • Über Optionen - Communication werden der COM Port die Baudrate, Parity Check, Databits und Stopbits gesetzt. Die Eintragungen aus Abb. 6 können übernommen werden.
Abbildung 9 - Eintragungen im Registerfeld Communication
  • Über Optionen - Compiler - Chip wird der in der Schaltung benutzte Mikrocontroller ausgewählt. Das ist in meinem Beispiel der ATtiny13a; wähle im Fenster Chip die Datei attiny13a.dat und setze für HW Stack, Soft Stack und Framesize die Werte 16, 5, 16 ein. Warum das so sein soll, wird später erklärt. Wenn auf deinem AVR-Chip nur ATtiny13 steht, muss die entsprechende Datei dazu ausgewählt werden.
  • Als COM-Port wird der aktuelle Port eingestellt, an dem der Programmer angeschlossen ist. Das bekommt man zum Beispiel dadurch heraus, dass man den Arduino Editor startet und unter Werkzeuge - Port nachschaut, welcher Port dort angegeben ist. Das ist der Port, an dem der Programmer hängt und dieser Wert wird im Feld Select Com-Port eingestellt.
Abbildung 10 - Eintragungen im Registerfeld Compiler
  • Mit einem Klick auf das Feld Add to Code werden fünf Zeilen in das Editorfeld geschrieben, die Auskunft über die gewählten Einstellungen geben.
Abbildung 9 - Die für den ausgewählten Mikrocontroller voreingestellten Werte werden in das Programm übernommen.
  • Schließe die Konfigurationsarbeit mit einem Klick auf den Button Ok ab.
  • Abschließend muss noch der Programmcode für die blinkende LED hinzugefügt werden.
Abbildung 11 - Das komplette Programm test1.bas. Über "Anzeigen - Pin Layout" kann über das Hauptmenü die Pinbelegung des benutzten Controllers eingeblendet werden.
  • Mit F7 (Compile program) wird das fertig erstellte Programm kompiliert (in Maschinencode übersetzt).

Sollte keine Fehlermeldung auftauchen, dann hat man tatsächlich sein erstes fehlerfreies Programm vorliegen. In jedem anderen Fall muss man den Fehler suchen, bevor es weiter gehen kann.

Beliebte Fehlerquellen bei diesem kleinen Programm sind:

  • Punkt und Komma wurden vertauscht.
  • Es wurde ein Gleichheitszeichen gesetzt, wo keines hingehört.
  • Verbinde jetzt den ISP-Programmer über das USB-Kabel mit dem PC und setze in den Modul mit Schwenkhebel (Nullkraftsockel) den Controller seitenrichtig ein.
  • Mit Strg-F7 (Syntax prüfen) wird das Programm test1.bas auf syntaktische Fehler untersucht; es wird geprüft, ob die festgelegten Regeln der Sprache BASIC vom Programmierer (das bin ich in diesem Fall selbst) korrekt angewendet worden sind und vom Compiler verstanden werden können.
  • Wenn keine syntaktischen Fehler vorliegen, kann mit F7 (Compilieren) das BASIC Programm in Maschinencode übersetzt werden und anschließend
  • mit F4 (Program chip) in den Speicher des Controllers gebrannt werden.
  • Es gibt noch eine vierte Option, die zukünftig noch sehr hilfreich werden kann. Sie ist über Strg-W (Programmieren - Ergebnis anzeigen) aufzurufen und zeigt noch einmal alle eingestellten Konfigurationen beim Controller an und gibt Auskunft u.a. über Speicherplatz, Stackgröße, Framesize und anderes. Einen Auszug daraus zeigt Abb. 11.
Abbildung 12 - BASCOM Report über das Programm test1.bas

Eigenständige Schaltung

Baut man den fertig programmierten Mikrocontroller jetzt in eine Schaltung ein, dann beginnt die LED zu blinken, so wie wir es vorher festgelegt hatten. Dazu sind nur ein paar Schritt notwendig:

 

  • Ziehe das USB-Kabel zwischen Programmer und PC aus dem USB-Port.
  • Entnehme den Controller aus dem Nullkraftsockel und platziere ihn auf dem Steckbrett.
  • Baue die Schaltung nach Abb. 5 oder 6 auf.
  • Verbinde zum Schluss deine Schaltung mit dem Plus- und Minuspol einer 5V-Quelle.
  • Jetzt sollte, wenn alles richtig gemacht wurde, die LED im Sekundentakt anfangen zu blinken.

3 - Wie arbeitet das Programm?

Von den acht Anschlüssen des Controllers ATtiny13 werden zwei für die elektrische Spannungsversorgung benötigt (P4, P8) - bleiben noch sechs Anschlüsse, die der Hersteller summarisch als PortB anspricht. Es ist ein sogenannter 6-Bit breiter bidirektionaler I/O Anschluss mit internen Pull-up Widerständen, die einzeln angewählt werden können. PB5 ist als Reseteingang vorgesehen.

Alle Informationen vom oder zum Controller laufen über Speicher , die ausgelesen oder beschrieben werden können. Der ATtiny13 hat sechs Portpins, auf die über das sogenannte I/O Register PORTB zugegriffen werden kann. Jeder einzelne Pin dieses Ports wird mit PINBx oder kürzer PBx bezeichnet, wobei x eine Zahl zwischen 0 und 7 ist. Die Pins werden von 0 an hochgezählt.

 

Eingang oder Ausgang

Am Anfang muss festgelegt werden, ob ein Portpin Eingang oder Ausgang ist. Dies erfolgt über das data direction register  (DDR). Nach jedem Programmstart sind alle Pins auf Eingang geschaltet.

In unserem ersten Testprogramm wird nur PB2 als Ausgang benötigt, über den die LED ein- und ausgeschaltet werden soll. Deshalb steht in Programmzeile 14

  • Config PORTB.2 = Output
    
    

In der Endlosschleife DO ... LOOP wird das Blinken der LEDs gesteuert.

Mit

  • PORTB.2 = 1
    
    

wird PB2 auf HIGH gesetzt und mit

  • PORTB.2 = 0
    
    

auf LOW. Der BASCOM Befehle

  • waitms (wait milliseconds)
    
    

gibt an, wieviele Millisekunden das Programm anschließend anhalten soll.

Im folgenden Kapitel 2 geht es um den Timer0 des ATtiny13A, was es ist und was er kann.  -> weiter mit Kapitel 2

Druckversion | Sitemap
© Reinhard Rahner - Gettorf