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.3 RS232

Wie sieht das spezielle bei PC und ATmega32 implementierte Busprotokoll für die UART aus?

  • RS232 verwendet den UART mit einem speziellen Protokoll.
  • Sie ist gebräuchlich bei der Kommunikation zwischen PCs und einer Menge an Peripheriegeräten (z.B. GPS, Oszilloskop, etc.)
  • Die RS232 stammt aus den 60er Jahren und gilt allgemein als etwas veraltet.
  • Sie erfreut sich dessen ungeachtet aber einer weiten Verbreitung und verdient es hier besprochen und getestet zu werden.
  • Wir werden sie sowohl dazu verwenden, mehrere Mikrocontroller ATmega32 miteinannder zu verbinden, als auch dazu einen Mikrocontroller mit einem PC zu verbinden.
  • Die UART mit RS232-Protokoll zählt zu der in den ATmega32 direkt integrierten Peripherie.
  • D.h. man kann nach Aktivierung dieser Schnittstelle in ein bestimmtes dafür vorgesehenes Register parallel ein Byte hineinschreiben und der Baustein sorgt dann dafür, dass diese 8 Bit seriell über diese Schnittstelle gesendet werden.
  • Dann kann man die nächsten 8 Bit in das Register schreiben usw.

Hinweis

  • Neben TxD und RxD existieren bei der seriellen Schnittstelle am PC weitere Leitungen, die z.B. die Funktionstüchtigkeit eines Gerätes anzeigen u.ä.
  • Diese Leitungen werden hier nicht behandelt.
  • Anstatt ein echtes Bussystem mit der RS232 aufzubauen, werden wir hier nur eine Verbindung zweier Geräte mit gekreuzten Leitungen aufbauen.
  • Verbindungen von mehreren Geräten werden wir zu einem späteren Zeitpunkt am Beispiel der SPI-Schnittstelle kennenlernen.
Null-Modem-Kabel

Bild 6.3-1: Null-Modem-Kabel für RS232 zwischen Mikrocontroller und PC.

RS232 - Protokoll

  • Die Übertragung der Daten erfolgt Byteweise - d.h. 8 Bit werden direkt als eine Folge von Low und High-Pegeln über den TxD-Kanal geschickt.
  • Beispielsweise sieht die Übertragung des Bytes 0b11010001 seriell aufgelöst so aus:
Null-Modem-Kabel

Bild 6.3-2: Serielle Übertragung von 8 Bit mittels RS232.

  • Man beachte, dass zuerst Bit0 (unbedeutenstes / leastr significant Bit) gesendet wird und am Ende Bit 7 (bedeutenstes / most significant Bit).
  • Beim PC liegt der Low-Pegel bei ungefähr -10Volt gegenüber GND und der High-Pegel bei +10Volt.
  • Dagegen liefert der ATmega32 auf Pin 15 (TxD) nur einen TTL-Pegel (5Volt) und kann auch nur auf Pin 14 (RxD) mit TTL-Pegeln umgehen.
  • Um diese Differenz auszugleichen, werden wir einen Adapter-IC benutzen, den MAX232, der intern aus 5Volt und 0-Volt-Pegeln +/-10Volt-Pegel erzeugen kann.
  • Damit diese Art der Datenübertragung auch wirklich funktioniert, müssen Sender und Empfänger zwischen dem Senden eines Bytes jedesmal neu synchronisiert werden.
  • Da diese Synchronisation nicht über eine gesonderte Taktleitung erfolgt, sondern aufgrund der übertragenen Pegel, wird diese Schnittstelle dennoch als "asynchron" bezeichnet.
  • Zwischen dem Senden zweier Bytes gibt es eine Pause.
  • In dieser Pause wird der Spannungspegel auf High gesetzt.
  • Zur Synchronisation des Empfängers mit dem Sender, wird dann vor dem Senden des ersten Bits der Spannungspegel erst einmal auf Low gesetzt.
  • Durch diese Konvention kann sich der Empfänger mit dem Sender synchronisieren.
  • Die Pause wird als "Stop-Bits" definiert und kann verschieden lang gewählt werden. Die Mindestlänge wird mit der Angabe eingestellt, ob ein oder zwei Stopbits verwendet werden.
  • Die Low-Phase zu Beginn wird als Startbit bezeichnet.
  • Der gesamte Ablauf beim Übertragen eines Bytes sieht deshalb z.B. folgendermaßen aus:
Mit Start-Bit

Bild 6.3-3: Vollständiger Ablauf bei Übertragung von 8 Bit mit einem Start und einem Stop-Bit via RS232.