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

Kapitel 4

1 - ATmega8A und LED

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.

2 - Grundeinstellungen für den Controller anpassen

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.

3 - Werkseinstellungen des Controllers ändern

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.

4 - Einstellung der Fuses

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.

5 - Ein Programm in den Flash-Speicher brennen

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

6 - Der USB-UART Konverter

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.

7 - Einen Text im Terminal von CoolTerm ausgeben

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.

Schaltungsaufbau

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.

Das Programm uart_1.bas

Die Ausgabe im Terminalprogramm CoolTerm

Kommentar schreiben

Kommentare

  • olaf (Sonntag, 10. Dezember 2017 08:35)

    wow...die mit Abstand beste Site, die ich bisher zu diesem Thema gesehen habe :-))
    Vielen Dank dafür. Hilft super beim Erklären!!

  • David Eisenblätter (Sonntag, 11. Februar 2018 13:38)

    Sehr schön erklärt, und zufällig heute, wo ich nochmal nach einer detailierten Gedankenstütze diesbezüglich gesucht habe!

    Vielen vielen Dank!

    David.

Bitte geben Sie den Code ein
* Pflichtfelder
Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf