kramann.info
© Guido Kramann

Login: Passwort:










Mikrocontroller
1 Einfuehrung
..1.1 Entwicklungsgeschichtliches
..1.2 Maschinensprache
..1.3 Assemblerbeispiel
..1.4 Sprachwahl
..1.5 Praxis
....1.5.1 Digital_IO
....1.5.2 Byteoperationen
....1.5.3 AVR_Studio
....1.5.4 Testboard
....1.5.5 Aufgaben
....1.5.6 Do_it_yourself
......1.5.6.1 Ampel
......1.5.6.2 Programmierer
..1.6 Literatur
..1.7 Programmierer
....1.7.1 Bauverlauf
....1.7.2 KurzreferenzLow
....1.7.2 Kurzreferenz_16PU
..1.8 Uebung1
..1.9 BoardAtHome
....1.9.1 Software
....1.9.2 Hardware
....1.9.3 Knoppix
....1.9.4 Aufbau
....1.9.5 LED
2 Oszillator
..2.1 Assembler
..2.2 Interner_RC
..2.3 Quarz
..2.4 Taktgenerator
3 DigitalIO
..3.1 Elektrische_Eigenschaften
..3.2 Pullup_Widerstaende
..3.3 Bitmasken_Eingang
..3.4 Bitmasken_Ausgang
..3.5 Tic_Tac_Toe
....3.5.1 DuoLEDs
....3.5.2 Schaltplan
....3.5.3 Spielfeld
....3.5.4 Anwahl
....3.5.5 Kontrolle
..3.6 Laboruebung2
..3.7 Laboruebung2_alt
4 PWM
..4.1 Prinzip
..4.2 Nutzen
..4.3 Generierung
..4.4 Programmierung
..4.5 Servos
..4.7 Laboruebung3
..4.8 LoesungUE3
..4.9 Uebung6
5 LichtKlangKugeln
..5.1 LED
..5.2 RGB
..5.3 Sensoren
..5.4 lautsprecher
..5.5 tonerzeugung
6 UART
..6.1 Bussysteme
..6.2 UART
..6.3 RS232
..6.4 Hardware
..6.5 Senden
..6.6 Hyperterminal
..6.7 Empfangen
..6.8 Broadcast
..6.9 Uebung4
7 Infrarot
..7.1 schalten
..7.2 seriell
..7.3 Uebung
8 OOP
..8.1 Probleme
..8.2 Konzept
..8.3 Statisch
..8.4 Datentypen
..8.5 RS232
....8.5.1 Prozedural
....8.5.2 Analyse
....8.5.3 Umsetzung
....8.5.4 Vererbung
....8.5.5 Statisch
....8.5.6 Performance
..8.6 Fahrzeug
9 ADW
..9.1 ADW
..9.2 Zaehler
10 Peripherie
..10.1 RS232Menue
..10.2 ASCIIDisplay
..10.3 Tastenmatrix
..10.4 Schrittmotor
..10.5 Zaehler
..10.6 Uebung7
11 SPI
..11.1 Testanordnung
..11.2 Register
..11.3 Test1
..11.4 Test2_Interrupt
..11.5 Test3_2Slaves
..11.6 Laboruebung
12 EEPROM
13 I2C
..13.1 MasterSendByte
..13.2 MasterSend2Bytes
..13.3 MasterReceiveByte
..13.4 MasterReceive2Bytes
14 Anwendungen
..14.1 Mechatroniklabor
....14.1.1 Biegelinie
....14.1.2 Ausbruchsicherung
....14.1.3 Einachser
....14.1.4 AV
....14.1.5 Vierradlenkung
....14.1.6 Kommunikation
..14.2 Sinuserzeugung
....14.2.1 Variante1
....14.2.2 Variante2
....14.2.3 Variante3
....14.2.4 Variante4
..14.3 Laboruebung8
..14.4 Loesung_Ue8
..14.5 SPI_Nachtrag
20 Xubuntu

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

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

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