| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| de:examples:communication:rs232 [2011/10/06 13:57] – wittkoepper | de:examples:communication:rs232 [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| ===== Theorie ===== | ===== Theorie ===== |
| |
| [{{ :examples:communication:comm_rs232_cable.jpg?220|Cable RS-232. Left plug is „male” and the right one is „female” plug."}}] | [{{ :examples:communication:comm_rs232_cable.jpg?220|Cable RS-232. Der linke Stecker ist „male”, der rechte „female”."}}] |
| |
| Die RS-232 ist ein Standard unter den physischen Datenschnittstellen und wird zur Übertragung von Binärdaten genutzt. Dieser Standard wird überwiegend für serielle Anschlüsse von Computern verwendet, welche gewöhnlich als "COM"-Anschlüsse bezeichnet werden. Inzwischen wurden die RS-232 größtenteils durch USB-Schnittstellen ersetzt. Aufgrund ihrer Einfachheit werden sie jedoch weiterhin erfolgreich in Freizeitanwendungen verwendet, insbesondere wenn USB - RS-232 Konverter vorhanden sind. Der RS-232 Standard legt die Stecker, die elektronischen Parameter sowie die Bedeutung der Signale fest, nicht aber das Protokoll. | Die RS-232 ist ein Standard unter den physischen Datenschnittstellen und wird zur Übertragung von Binärdaten genutzt. Dieser Standard wird überwiegend für serielle Anschlüsse von Computern verwendet, welche gewöhnlich als "COM"-Anschlüsse bezeichnet werden. Inzwischen wurden die RS-232 größtenteils durch USB-Schnittstellen ersetzt. Aufgrund ihrer Einfachheit werden sie jedoch weiterhin erfolgreich in Freizeitanwendungen verwendet, insbesondere wenn USB - RS-232 Konverter vorhanden sind. Der RS-232 Standard legt die Stecker, die elektronischen Parameter sowie die Bedeutung der Signale fest, nicht aber das Protokoll. |
| Die RS-232 Schnittstelle wird hauptsächlich in Verbindung mit dem UART Datenübermittlungsmodul genutzt. Diese UART-Hardware verfügt über ein standardisiertes Protokoll, legt jedoch keine Stecker oder andere Dinge fest. Die RS-232 Schnittstelle erweitert somit das UART Modul. UART ist ein Peripheriemodul des Mikrocontrollers, dessen digitaler In- und Output nicht mit den elektronischen Parametern des RS-232 korrespondiert. Aus diesem Grund werden die beiden über einen speziellen Pegelkonverter miteinander verbunden. Der bekannteste Pegelkonverter für RS-232 und TLL/COMS ist der MAX232. | Die RS-232 Schnittstelle wird hauptsächlich in Verbindung mit dem UART Datenübermittlungsmodul genutzt. Diese UART-Hardware verfügt über ein standardisiertes Protokoll, legt jedoch keine Stecker oder andere Dinge fest. Die RS-232 Schnittstelle erweitert somit das UART Modul. UART ist ein Peripheriemodul des Mikrocontrollers, dessen digitaler In- und Output nicht mit den elektronischen Parametern des RS-232 korrespondiert. Aus diesem Grund werden die beiden über einen speziellen Pegelkonverter miteinander verbunden. Der bekannteste Pegelkonverter für RS-232 und TLL/COMS ist der MAX232. |
| |
| UART means universal asynchronous receiver/transmitter. USART is almost the same, with the difference that the data is sent with clock signal. The UART may be called also a serial interface. The serial interface is a data transferring mechanism, where each bit is transmitted one by one. For example, to transmit 1 bait, 8 bits are transmitted with certain interval. This means that on the serial interface line, which is one pin of the microcontroller, the value of voltage is changed after certain time, once low and then high. Usually there are two devices connected to the serial interface. One is transmitting the information (by changing the value of the pin) and the other is receiving it (by registering the value of the pin). Transmitting pin is TX, and receiving pin is RX. The info is moving always to one direction on one line. For sending data to the other direction an other line is used. If data is moved on two lines at the same time, it is called full duplex bus. | Die Bezeichnung UART steht für "Universal Asynchronous Receiver Transmitter". Die USART-Schnittstelle bietet ergänzend die Möglichkeit, Daten synchron zum Taktsignal zu senden. UART kann auch als serielle Schnittstelle bezeichnet werden. Die serielle Schnittstelle ist ein Datentransfermechanismus, wobei jedes Bit einzeln übermittelt wird. Um beispielsweise 1 Byte zu senden, werden 8 Bits in einem bestimmten Intervall übermittelt. Dadurch wird an der seriellen Leitungsschnittstelle, also an einen Pin des Mikrocontrollers, der Wert der Stromspannung nach einer bestimmten Zeit verändert, zunächst ist dieser niedrig und daraufhin hoch. Normalerweise gibt es zwei Geräte die an der seriellen Schnittstelle angeschlossen werden. Das eine dient zur Übertragung von Information (durch Veränderung des Pinwertes), das andere zum Empfang (durch Erfassung des Pinwertes). Der Übertragungspin ist mit TX, der Empfangspin mit RX gekennzeichnet. Auf einer Leitung geht der Informationsfluss immer nur in eine Richtung. Um Daten in die andere Richtung zu senden, muss eine andere Leitung genutzt werden. Werden Daten über zwei Leitungen gleichzeitig gesendet, wird dieses "Full Duplex Bus" genannt. |
| |
| [{{ :examples:communication:comm_uart_frame.png?319|the frame of UART, where S is start-bit , 0-7 are data-bits, P is parity-bit (if existing) and T is stop-bit (or 2).}}] | [{{ :examples:communication:comm_uart_frame.png?319|Der Rahmen des UART, mit S als Startbit , 0-7 als Datenbits, P als Paritätsbit (falls dieses existiert) und T als Stopbit (oder 2).}}] |
| |
| Transmitting data is done by frames of the UART interface, in which is 5-9 data bits (depending on the configuration). Most common is 8 bits (1 bait). In addition to the data bits also extra bits are transmitted with the frame, which are used to recognize the moments of arrival and ending of the data on the receiver’s side. The first is called start-bit and it is always 0. The second is called stop-bit (or bits), which is always 1. Before the stop-bit also parity bit may come. It is use to control regularity. The parity-bit shows whether in the amount of the data-bits is odd or even number of ones. Which reading it has depends on the configuration of the UART interface. The parity-bit is usually not used anymore and it can be banned in configuration. Like the parity-bit can be configured, also can the amount of data-bits and stop-bits. | Die Datenübertragung erfolgt über den Rahmen der UART-Schnittstelle, welcher je nach Konfiguration 5 bis 9 Datenbits enthält. Am häufigsten sind 8 Bits (1 Byte). Zusätzlich zu den Datenbits werden durch den Rahmen weitere Bits übertragen, welche dazu genutzt werden, den Augenblick der Ankunft von Daten sowie des Abschlusses der Übertragung auf der Empfängerseite zu erkennen. Ersteres wird Startbit genannt und hat immer den Wert 0. Das zweite ist das Stopbit, welches immer den Wert 1 hat. Vor dem Stopbit gibt es in einigen Fällen noch das Paritätsbit. Dieses dient zur Kontrolle der Richtigkeit. Das Paritätsbit zeigt an, ob die Anzahl der Einsen in den Datenbits gerade oder ungerade ist. Die Art der Ablesung hängt von der Konfiguration der UART Schnittstelle ab. Das Paritätsbit wird aber normalerweise nicht mehr verwendet und kann im Rahmen der Konfiguration unterdrückt werden. So wie das Paritätsbit konfiguriert werden kann, kann auch die Anzahl von Daten- und Stopbits variiert werden. |
| | |
| In addition to the frame structure, there is one more important parameter – it is //baud rate//, with which the number of transmitted symbols in one second is determined. Baud shows the number of symbols. When we are dealing with UART then 1 baud is 1 bit and that is why we talked about bits when we were talking about frame. Basically it does not matter which baud rate is used for data transmitting, but there is a certain amount of commonly used baud rates, which should be used. For example: 9600 bps, 19200bps, 38400 bps, 57600 bps, 115200 bps; | Zusätzlich zur Rahmenstruktur gibt es einen weiteren wichtigen Parameter - die //Baudrate//, wodurch die Anzahl der in einer Sekunde übertragenen Symbole festgelegt wird. Die Baudrate zeigt die Anzahl der Symbole an. Bei der Verwendung von UART entspricht 1 Baud einem Bit, weshalb im Zusammenhang mit dem Rahmen von Bits gesprochen wurde. Allgemein ist es egal, welche Baudrate zur Datenübertragung genutzt wird, es gibt jedoch eine einige häufig verwendete Baudraten, welche verwendet werden sollten. Diese sind zum Beispiel: 9600 bps, 19200bps, 38400 bps, 57600 bps, 115200 bps. |
| | |
| Furthermore, it is worth to know that the RS-232 standard includes in addition to the data-signals (RX, TX) also data flow control pins DTR, DCD, DSR, RI, RTS and CTS, which are used for controlling the communication between the devices. For example they can be used to notify whether it is ready to receive data or not. Since the RS-232 interface’s original goal is to connect the computers to a modem, some signals are (were) useful rather for showing the state of the telephone lines. | Darüber hinaus ist es wichtig zu wissen, dass der RS-232 Standard zusätzlich zu den Datensignalen (RX, TX) auch über Datenflusskontrollpins DTR, DCD, DSR, RI, RTS undCTS verfügt, welche zur Kontrolle der Kommunikation zwischen den Geräten dienen. Sie können zum Beispiel genutzt werden, um festzustellen ob das Gerät zum Empfang von Daten bereit ist oder nicht. Da die RS-232 Schnittstelle ursprünglich darauf abzielt, Computer an ein Modem anzuschließen, können (konnten) einige Signale dazu genutzt werden, um den Status von Telefonleitungen anzuzeigen. |
| |
| ===== Practice ===== | ===== Praktisches Beispiel ===== |
| |
| The Controller module board is equipped with one RS-232 type male plug. Through that can controller be connected to computer or to an other controller. For connecting to a computer a usual not inverted cable must be used, which one end is male and other one is female. For connection to an other controller a cable must be used where RX and TX and current control signals are perpendicularly inverted and both plugs are female. The inverted cable is also called zero modem cable. The following is an example program of using UART serial interface. When the program is started, it transmits a welcome through a RS-232 interface and displays messages, which are received. LCD and USART libraries are used. | Die Platine des Controllermoduls ist mit einem RS-232 male-Stecker ausgerüstet. Darüber kann der Controller an einen Computer oder einen anderen Controller angeschlossen werden. Um ihn an einen Computer anzuschließen, muss ein normales nicht invertiertes Kabel genutzt werden, dessen eines Ende male und anderes Ende female ist. Um den Controller an einen anderen Controller anzuschließen, muss ein Kabel verwendet werden, bei dem RX, TX sowie Kontrollsignale für die Stromstärke senkrecht invertiert sind und beide Stecker female sind. Das invertierte Kabel wird auch Nullmodemkabel genannt. Nachfolgend ist ein Beispielprogramm zur Nutzung der UART Schnittstelle dargestellt. Wird das Programm gestartet, übermittelt es ein "Willkommen" über die RS-232 Schnittstelle und zeigt empfangene Nachrichten an. Es werden das LCD-Display und die USART Bibliotheken genutzt. |
| |
| <code c> | <code c> |
| // | // |
| // Connecting the Controller module of the HomeLab to a computer through RS-232. | // Anschluss des Controllermoduls des HomeLab an einen Computer über die RS-232 Schnittstelle. |
| // The example is using digital input-output module with LCD. | // Im Beispiel wird ein digitales Input-Output-Modul mit LCD Display verwendet. |
| // The text inserted in the terminal of the computer is displayed on the LCD. | // Der im Terminal des Computers eingegebene Text wird auf dem LCD Display angezeigt. |
| // | // |
| #include <homelab/usart.h> | #include <homelab/usart.h> |
| |
| // | // |
| // Determining USART interface. | // Festlegung der USART Schnittstelle. |
| // | // |
| usart port = USART(0); | usart port = USART(0); |
| |
| // | // |
| // Main program | // Hauptprogramm |
| // | // |
| int main(void) | int main(void) |
| unsigned char row = 1; | unsigned char row = 1; |
| |
| // The set-up of the USART interface. | // Installation der USART Schnittstelle. |
| usart_init_async(port, | usart_init_async(port, |
| USART_DATABITS_8, | USART_DATABITS_8, |
| USART_BAUDRATE_ASYNC(9600)); | USART_BAUDRATE_ASYNC(9600)); |
| |
| // The set-up of the LCD. | // Installation des LCD. |
| lcd_alpha_init(LCD_ALPHA_DISP_ON_BLINK); | lcd_alpha_init(LCD_ALPHA_DISP_ON_BLINK); |
| |
| // Displaying welcome message on the screen. | // Anzeige eines Begrüßungstextes auf dem Display. |
| lcd_alpha_write_string("Waiting for the message"); | lcd_alpha_write_string("Waiting for the message"); |
| |
| // Putting the cursor in the beginning of the second row. | // Cursor an den Beginn der zweiten Reihe setzen. |
| lcd_alpha_goto_xy(0, row); | lcd_alpha_goto_xy(0, row); |
| |
| // Saying hello to the computer. | // "Hallo" zum Computer sagen. |
| usart_send_string(port, "Hello, write something!\r\n"); | usart_send_string(port, "Hello, write something!\r\n"); |
| |
| // Endless loop | // Endlosschleife |
| while (true) | while (true) |
| { | { |
| // Reading the sign from the serial interface. | // Zeichen aus der seriellen Schnittstelle lesen. |
| if (usart_try_read_char(port, &c)) | if (usart_try_read_char(port, &c)) |
| { | { |
| // Are we dealing with the sign of changing the row? | // Befassen wir uns mit dem Zeichen zur Änderung der Reihe? |
| if (c == '\r') | if (c == '\r') |
| { | { |
| // Changing the row. | // Änderung der Reihe. |
| row = 1 - row; | row = 1 - row; |
| |
| // Emptying the row from the previous message. | // Vorherige Nachricht aus der Reihe löschen. |
| lcd_alpha_clear_line(row); | lcd_alpha_clear_line(row); |
| } | } |
| else | else |
| { | { |
| // Issuing the sign directly to the screen. | // Ausgabe des Zeichens auf dem Display. |
| lcd_alpha_write_char(c); | lcd_alpha_write_char(c); |
| } | } |
| </code> | </code> |
| |
| [{{ :examples:communication:comm_hyperterminal.png?250|The window of the HyperTerminal}}] | [{{ :examples:communication:comm_hyperterminal.png?250|Das Fenster des HyperTerminal}}] |
| |
| With Windows XP OS comes a program called HyperTerminal. It is opened from the //Start// menu by selecting //Accessories// →// Communications// → //HyperTerminal//. Select 9600 bps, 1 start-bit and 1 stop-bit without parity- and stream-control for configuration. When the HyperTerminal is opened during the time when the microcontroller is starting, there will be a welcoming message on the display. The letters inserted through the window are displayed in the alphanumerical LCD. By pressing //Enter// button the row is changed on the LCD. | Windows XP OS beinhaltet das Programm HyperTerminal. Dieses Programm kann über das //Start// Menü geöffnet werden, indem //Zubehör// →// Kommunikation// → //HyperTerminal// ausgewählt wird. Wählen Sie zur Konfiguration 9600 bps aus, 1 Startbit und 1 Stopbit ohne Paritäts- und Datenstromkontrolle. Wenn HyperTerminal geöffnet ist, während der Mikrocontroller startet, erscheint ein Begrüßungstext auf dem Display. Die über das Fenster eingegebenen Buchstaben werden auf dem alphanumerischen LCD dargestellt. Durch Betätigung der //Enter// Taste wird die Reihe auf dem LCD gewechselt. |