kramann.info
© Guido Kramann

Login: Passwort:










7.4 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 7.4-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:
Baudraten

Bild 7.4-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 7.4-1: Programm, das den ATmega32 unempfindlich für das Kurzschließen der Pins 14 und 15 macht.

Bild 7.4-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 7.4-4: An PC angeschlossener D-Sub9-Stecker

Bild 7.4-5: Über Tastatur gesendete und unmittelbar wieder empfangene Zeichen nach Starten des Hyper-Terminals.