Hardware - Verbinden eines ATmega32 mit einem PC über die RS232 Schnittstelle
Wie kann eine Verbindung zwischen Mikrocontoller und PC zur seriellen Datenübertragung aufgebaut werden?
- Der Transceiver vom Typ MAX232, hier MAX232N von Texas-Instruments, setzt
die 5V Spannung in 10V um.
- Hierzu werden die Kondensatoren benötigt.
- Manche Typen, wie der hier verwendete kommen mit 0,1μF aus, andere benötigen
1μF oder 10μF.
- Zum Testen der Schaltung ohne Mikrocontroller wird einfach die Sende und die Empfangsleitung kurzgeschlossen (Pin9/10 am MAX232, s. Bild unten).
- Nach Einrichten des Hyperterminals (vergl. Kapitel 5.6) werden an der Tastatur des PCs eingegebene Zeichen dann direkt wieder zurückgespielt.
- Wenn dies funktioniert werden die Leitungen aufgetrennt und wie im Bild unten zu sehen mit dem ATmega32 direkt verbunden.
|
Bild 0-1: Transceiverbeschaltung, -test, und Anschluss an den ATmega32
- Um Daten mit dem PC empfangen und senden zu können wird unter Windows eine HyperTerminal-Verbindung aufgebaut (s. auch Kapitel 5.6):
- Starten mit Start->Programme->Zubehör->Kommunikation->HyperTerminal
- Ortskennzahl: beliebig
- Neue Verbindung: COM1
- Stopbits: 1 (Programm abhängig, hier 1)
- Flußsteuerung: keine
- Baudrate: 115200 (Quarz-abhängig, hier für 9,2160MHz Quarz)
|
Baudrate
- Die Bausrate gibt an, wieviele Zeichen pro Sekunde mit der RS232 übertragen werden können.
- D.h. sie gibt an, wieviele Folgen von Startbit, 8 Datenbits und Stopbit pro Sekunde erfolgen können.
- Folgende Baudraten sind über das Hyperterminal möglich:
|
Bild 0-2: Mögliche Baudraten mit Hyperterminal
- Um eine gut synchronisierbare Verbindung aufbauen zu können, muß der verwendete Quarz am ATmega32 möglichst genau ein ganzzahliges Vielfaches der eingestelleten Baudrate sein.
- Zwei spezielle Register (UBRRH und UBRRL) speichern dieses Verhältnis in folgender Form: QUARZFREQUENZ/16/BAUDRATE-1, hier: 9216000/16/115200 - 1 = 4
- Als Taktgenerator ist beim ATmega32 unbedingt ein Quarz zu verwenden, da der RC-Oszillator zu ungenau ist, wegdriftet und Fehler bei der Datenübertragung verursachen würde.
|
Achtung!
- Um den Test ohne Mikrocontroller durchführen zu können, sollte man unbeding Port D hochohmig, also als Eingang, schalten und erst anschließend die Pins 14 und 15 des OBEREN Mikrocontrollers kurzschließen!
- Vergessen Sie nicht später das Anzeige-Programm (material.zip, Kapitel 1.5.5) wieder auf den Mikrocontroller drauf zu spielen.
- Alternativ könnte man auch den oberen Mikrocontroller (den für die 7-Segment-LED-Anzeige) auch temporär herausnehmen.
- Belegung der RS232-Buchse am Testboard und Verbindung zum PC: vergl. Kapitel 1.5.4
|
#include
int main()
{
DDRA = 0b00000000;
DDRB = 0b00000000;
DDRC = 0b00000000;
DDRD = 0b00000000;
while(1)
{
}
}
Code 0-1: Programm, das den ATmega32 unempfindlich für das Kurzschließen der Pins 14 und 15 macht.
Bild 0-3: Testboard nach Übertragen des Deaktivierungsprogramms auf den oberen Mikrocontroller mit angeschlossenem RS232-Verbindungskabel mit D-Sub9-Stecker zum Anschluß an die COM-Buchse eines PCs.
Bild 0-4: An PC angeschlossener D-Sub9-Stecker
Bild 0-5: Über Tastatur gesendete und unmittelbar wieder empfangene Zeichen nach Starten des Hyper-Terminals.