In diesem Kapitel werden wir uns mit dem ATmega8A Controller befassen. Seine Eigenschaften kennen wir bereits aus dem Kapitel
Einführung in BASCOM - Abschnitt 2.
Ziel in diesem Kapitel wird es sein, den ATmega8A mit einem USB-UART Converter zu koppeln und so eine Textausgabe im Terminal
oder eine Dateneingabe über ein Terminal möglich zu machen.
Ein UART (universal asynchron receiver
transmitter) regelt die asynchrone serielle Kommunikation. Der ATmega8A ist werkseitig bereits mit einem synchronen/asynchronen Receiver/Transmitter (USART) ausgerüstet. Sie sind kompatibel
zu den UARTs. Einige Eigenschaften seien hier aufgezählt:
- Full-Duplex Betrieb
- synchroner/asynchroner Betrieb
- 5 bis 9 Datenbits, 1 oder 2 Stoppbits
- ungerade/gerade Parität
Bei einer seriellen Datenübertragung wird die an RxD anliegende Information aus HIGH und LOW Zuständen mit der 16-fachen Baudrate vom Receiver abgetastet. Ein Zustand gilt dann
als gesichert empfangen, wenn mindestens zwei Samples den gleichen Wert aufweisen; ist das nicht der Fall geht die Information verloren, der Empfang ist gestört.
Abbildung 0 - Das Eingangssignal wird mit hoher Samplefrequenz abgetastet. Ein HIGH oder LOW gilt dann als "gesichert", wenn mindestens zwei Samples den gleichen Wert haben.
Bevor wir so weit sind, machen wir uns erst mit dem neuen Controller ATmega8A etwas vertraut.
- Aufgaben
- In einem ersten Versuch soll der BASCOM Compiler so eingestellt werden, dass Programme in den Flash-Speicher
des Controllers ATmega8A gebrannt werden können. Dazu wird eine einfache Schaltung aus LED und Widerstand aufgebaut und ein BASIC Programm geschrieben; die LED soll im
Sekundentakt blinken.
ATmega8A konfigurieren und testen |
Material |
- 1x USB-ISP-Programmer
- 1x Schwenkhebel-Modul (Nullkraft-Sockel) für Programmer
- 1x AVR Mikrocontroller, ATmega8A
- 1x Energiequelle, 5V; z. B. 3x1,5V Typ AA in einem Batteriehalter
- 1x LED, rot
- 1x Widerstand, 220 Ohm
- 3x Steckdraht
- 1x Steckbrett
- 1x PC mit der Software BASCOM
|
Aufgaben |
- Trenne alle Kabelverbindungen zwischen Steckbrett und PC.
- Baue die Schaltung nach Schaltskizze bzw. Verdrahtungsplan auf dem Steckbrett auf.
- Starte das Programm BASCOM und übertrage das Programm Piezo_LS2.bas in den Editor.
- Speichere das Programm ab, überprüfe es auf Syntaxfehler und korrigiere diese gegebenenfalls.
- Compiliere das Programm und brenne es anschließend in den ATtiny13.
- Trenne die Kabelverbindung zum Programmer und entnimm den ATtiny13.
- Setze den Controller in die aufgebaute Schaltung ein und lege die Spannungsversorgung an.
- Überprüfe mit Hilfe eines USB-Oszilloskops, ob am Ausgang B.0 ein Signal der Frequenz 500 Hz anliegt.
|
Schaltskizze und Schaltungsaufbau
Abbildung 1 - Die Spannungsversorgung und die Entstörkondensatoren sind nicht mit eingezeichnet.
Mit einem neuen Controllerbaustein müssen auch die Optionen-Einstellungen an die physikalischen Eigenschaften des µC angepasst werden. Dazu wird über
Datei - Project - New ein neues Projekt angelegt und anschließend mit Datei - Neu eine neue
Datei angelegt, die anschließend sofort über Datei - Speichern unter ... im Arbeitsverzeichnis auf dem PC abgelegt wird.
Erst jetzt kann man die neuen Einstellungen für den Compiler vornehmen. Unter Optionen - Compiler - Chip werden
folgende Eintragungen vorgenommen.
Abbildung 2 - Optionen - Compiler - Chip
Abbildung 3 - Optionen - Compiler - Output
Abbildung 4 - Optionen - Compiler - Communication. Hier wird die aktuelle Oszillatorfrequenz von 8 MHz eingestellt.
Abbildung 5 - Optionen - Communication. Hier wird der aktuelle COM-Port, die Baudrate und Parity None, Databits 8, Stopbits 1 und Handshake None eingestellt. Im allgemeinen sind das die Vorgabewerte des Programmes.
Abbildung 6 - Optionen - Simulator. Hier muss der aktuelle COM Port eingestellt werden und das Kästchen "Use integrated Simulator" aktiviert werden.
Abbildung 7 - Optionen - Programmer. Als Programmer wird (in meinem Fall) STK500 native driver gewählt und Auto Flash markiert. Der COM Port ist wieder auf COM11 und Clock auf 1.000.000 gesetzt.
Möchte man einen externen Quarzoszillator oder die Taktrate des internen Taktgebers bei einem ATMEL Controller verändern, dann
müssen spezielle Bits in den Fuses des Controllers gesetzt oder nicht gesetzt werden; die notwendigen Informationen dazu holt man sich aus dem
entsprechenden Datenblatt.
Kommt es auf höchste Präzision bei der Taktfrequenz (<< 3%) nicht an (das gilt meistens für Schulen und im Hobbybereich), dann kann auf einen Quarz verzichtet
werden. Das vereinfacht den Schaltungsaufbau erheblich.
Abbildung 8 - Grundbeschaltung eines ATmega8A mit einer Taktfrequenz von bis zu 8 MHz.
Die Fusebits lassen sich über BASCOM recht einfach auslesen und anschließend programmieren. Dazu geht
man wie folgt vor:
- Öffne über Programmieren - Zum Chip senden - Manuell programmieren ein weiteres Fenster und klicke auf das Icon
Identify Chip. Der aktuell im Brenner eingesetzte Chip sollte mit seiner Bezeichnung im Fenster Chip angezeigt werden.
- Öffne das Register Lock and Fuse bits.
In der gezeigten Voreinstellung arbeitet der ATmega8A mit einer Taktfrequenz von 1 MHz. Es gilt Fusebits: 0xE1, Fusebits High
0xD9 (Abb. 9).
Abbildung 9 - Werkseinstellungen der Fusebits eines ATmega8A.
Die Frequenz des internen Oszillators lässt sich auf bis zu 8 MHz über das Setzen entsprechender Fusebits erhöhen. Für die 8 MHz Einstellung gilt: Fusebits:
E4, Fusebits High D9.
- Dazu muss das Auswahlfenster von Fusebit KLA987 geöffnet und die entsprechende Einstellung gewählt werden (Abb.
10).
Abbildung 10 - Einstellung der Fusebits unter BASCOM
- Sind die Eintragungen abgeschlossen, werden die neuen Einstellungen mit Write FS in den Controller
gebrannt.
Der Controller und das Programm BASCOM sind jetzt voreingestellt. Mit einem ersten kleinen LED-Blinkprogramm testen wir aus, ob alle Einstellungen richtig
getroffen wurden.
- Bevor das Programm m8a_led1.bas in den Editor übertragen wird, öffne über das Hauptmenü Optionen - Compiler -
Chip noch einmal das Chip-Konfigurationsfenster und drücke den Button Add to Code. Alle Controller-spezifischen
Einstellungen für den Compiler werden jetzt in den Programmeditor eingefügt (Zeilen 6 - 10).
- Übertrage anschließend die restlichen Programmzeilen in den Editor und speichere das Programm ab.
- Über Programmieren - Compilieren wird das Programm übersetzt und anschließend mit Programmieren - Zum Chip senden - Programmieren in den Controller gebrannt.
- Setze den Controller in die Schaltung ein und schließe die Versorgungsspannung an. Die LED sollte jetzt im Sekundentakt blinken.
Das Programm m8a_led1.bas
Abbildung 11 - Einfaches LED Blinkprogramm zum Austesten eines neuen Controllers.
Nachdem überprüft wurde, dass der neue Controller einwandfrei läuft, werden wir jetzt daran gehen, ihn mit einem USB-UART-Converter auszustatten, so dass es möglich wird, Datenein- und -ausgaben über ein Terminalprogramm auf dem PC zu verfolgen bzw. zu
steuern.
Ein Controller verfügt über keinen USB-Anschluss, so wie wir das normalerweise von einem Arduino UNO, einer BASIC Stamp oder einem
Propeller Board gewohnt sind. Eine solche Schnittstelle wird in diesem Abschnitt installiert und damit eine serielle Verbindung zu einem PC hergestellt. Sie soll unser zukünftiger Standard
bei der Kommunikation zwischen PC und Mikrocontroller sein.
Das benutzte Bauteil ist ein sogenannter USB-UART Konverter, den es für wenig Geld zu kaufen gibt und dessen einzige Aufgabe es ist, Daten zwischen zwei verschiedenen
Geräten hin und her zu bewegen bei gleichzeitiger Pegelanpassung.
Folgende Verbindungen sind möglich
- PC und PC
- PC und Mikrocontroller, zum Beispiel mit einem ATmega8A oder ATmega88
- Mikrocontroller und Mikrocontroller
Ein USB-UART Konverter kann sowohl Schnittstellen mit TTL-Signalpegel (5V) als auch 3,3V Pegel auf USB konvertieren.
Damit bekommen wir die Möglichkeit, zukünftig Texte auf dem PC-Monitor, dem BASCOM Terminal oder auf CoolTerm darstellen zu lassen, kurz: die
Kommunikation mit dem Mikrocontroller wird stark verbessert. Ich benutze in meinen Versuchen einen Baustein von Conrad, der seine Aufgaben tadellos erfüllt.
Abbildung 12 - Von den 6 Anschlüssen werden nur drei benötigt. TxD, RxD und GND.
In diesem Abschnitt wird der USB-UART Converter getestet. Mit einem einfachen Programm soll ein Text im Terminal ausgegeben werden, die Eingabe nimmt der Benutzer
selber vor.
Einen Text im Terminalfenster von CoolTerm ausgeben |
Material |
- 1x USB-ISP-Programmer
- 1x Schwenkhebel-Modul (Nullkraft-Sockel) für Programmer
- 1x AVR Mikrocontroller, ATmega8A
- 1x Energiequelle, 5V; z. B. 3x1,5V Typ AA in einem Batteriehalter
- 1x USB-UART Converter
- diverser Steckdraht
- 1x Steckbrett
- 1x Programm CoolTerm (optional)
- 1x PC mit der Software BASCOM
|
Aufgaben |
- Trenne alle Kabelverbindungen zwischen Steckbrett und PC.
- Baue die Schaltung nach Schaltskizze bzw. Verdrahtungsplan auf dem Steckbrett auf.
- Starte das Programm BASCOM und übertrage das Programm uart_1.bas in den Editor.
- Speichere das Programm ab, überprüfe es auf Syntaxfehler und korrigiere diese gegebenenfalls.
- Compiliere das Programm und brenne es anschließend in den ATmega8A.
- Trenne die Kabelverbindung zum Programmer und entnimm den ATmega8A.
- Setze den Controller in die aufgebaute Schaltung ein und lege die Spannungsversorgung an.
- Starte das Programm CoolTerm und stelle den korrekten COM-Port in Baud-Wert ein.
- Überprüfe, ob im Terminal von CoolTerm ein Text ausgegeben wird.
|
Abbildung 13 - Schaltungsaufbau auf dem Steckbrett; TxD auf dem Converterboard ist mit dem RxD-Pin des ATmega8A verbunden. RxD auf dem Converterboard ist mit dem TxD-Pin des ATmega8A verbunden.
Die Ausgabe im Terminalprogramm CoolTerm