Serielles Interface

Diese Bibliothek bietet die Funktionen für das AVR asynchrone serielle Interface

Datentypen

  • usart
    Datentyp für USART Interfacekontroll-, Status- und Datenregisteradressen. usart Variablen sollten zu Beginn des Programms initialisiert werden. Für die Initialisierung gibt es eine Macrofunktion USART dessen einziger Parameter für den Index des Interface ist. (0 oder 1).
  • usart_databits
    Zählen der Datenbits, Aufzählungsdatentyp. Möglichkeiten:
    • USART_DATABITS_5 - 5 Datenbits.
    • USART_DATABITS_6 - 6 Datenbits.
    • USART_DATABITS_7 - 7 Datenbits.
    • USART_DATABITS_8 - 8 Datenbits.
    • USART_DATABITS_9 - 9 Datenbits.
  • usart_stopbits
    Zählen der Stop-Bits, Aufzählungsdatentyp. Möglichkeiten:
    • USART_STOPBITS_ONE - Ein Stop-Bit.
    • USART_STOPBITS_TWO - Zwei Stop-Bit.
  • usart_parity
    Paritätsmodus, Aufzählungsdatentyp. Möglichkeiten:
    • USART_PARITY_NONE - Ausgeschaltet.
    • USART_PARITY_EVEN - Gerade Parität.
    • USART_PARITY_ODD - Ungerade Parität.

Funktionen

  • USART_BAUDRATE_ASYNC(baud)

Makrofunktion um den USART Baudratenregisterwert im asynchronen Modus zu berechnen. Parameter:

  • baud - Gewünschte Baudrate
  • Gibt Baudratenregisterwert wieder.
  • void usart_init_async(usart port, usart_databits data_bits, usart_stopbits stop_bits, usart_parity parity, usart_baudrate baudrate)

Initialisiert asynchrones USART. Parameter:

  • port - USART Schnittstellenvariable.
  • data_bits - Datenbits.
  • stop_bits - Stop-Bits.
  • parity - Paritätsmodus.
  • baudrate - Baudratenregisterwert (kann mit der Makrofunktion USART_BAUDRATE_ASYNC errechnet werden).
  • void usart_send_char(usart port, char symbol)

Blockiert die Übertragung von Zeichen. Die Funktionen warten solange bis der Ausgabespeicher leer ist, bevor ein Zeichen in den Speicher geschrieben wird. Parameter:

  • port - USART Schnittstellenvariable.
  • symbol - zu sendendes Zeichen.
  • void usart_send_string(usart port, char *text)

Blockierende String-Übertragung. Parameter:

  • port - USART Schnittstellenvariable.
  • text - Zeiger auf einen String(char array). Der String muss mit einer Null enden.
  • bool usart_has_data(usart port)

Überprüft Empfangsspeicher auf Daten. Parameter:

  • port - USART Schnittstellenvariable.
  • Gibt true zurück wenn Zeichen im Empfangsspeicher und false wenn nicht.
  • char usart_read_char(usart port)

Liest ein Zeichen aus dem Empfangsspeicher. Zuvor muss der Nuter überprüfen ob tatsächlich ein Zeichen empfangen wurde. Parameter:

  • port - USART Schnittstellenvariable.
  • Gibt Zeichen aus.
  • bool usart_try_read_char(usart port, char *symbol)

Liest ein Zeichen aus dem Empfangsspeicher, falls eins vorhanden ist. Parameter:

  • port - USART Interfacevariable.
  • symbol - Verweis auf die Variable des Zeichens. Wenn ein Zeichen im Empfangsspeicher vorhanden ist, wird es der betreffenden Variable zugeschrieben.
  • Gibt true aus, wenn ein Zeichen im Empfangsspeicher vorhanden ist und false wenn nicht.

Beispiel

Die USART Schnittstelle ist konfiguriert um 8 Datenbits, ein Stop-Bit, 9600 bps Baudrate und keinen Paritätsmodus zu nutzen. Das Programm sendet einen String, wartet bis die Zeichen empfangen wurden und ließt sie dann aus.

#include <homelab/usart.h>
 
// Nutze USART Schnittstelle 0.
usart port = USART(0);
 
int main(void)
{	
	char c;
 
	// Initialisierung der Schnittstelle.
	usart_init_async(port,
		USART_DATABITS_8,
		USART_STOPBITS_ONE,
		USART_PARITY_NONE,
		USART_BAUDRATE_ASYNC(9600));
 
	// Senden des String.
	usart_send_string(port, "Hello\n");
 
	// Auf ankommende Daten warten.
	while (!usart_has_data(port)) {}
 
	// Empfangenes Zeichen auslesen.
	c = usart_read_char(port);
}
de/software/homelab/library/usart.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0