#include "uart.h"
Funktionen | |
void | uart_init (void) |
int | uart_sendc (char c, FILE *dummy) |
int | uart_receive (FILE *dummy) |
uint8_t | uart_gets (char *buffer, uint8_t maxlen) |
void | uart_sends (char *s) |
void | uart_clear (void) |
ISR (USART_RXC_vect) | |
Variablen | |
volatile uint8_t | uart_str_complete = 0 |
volatile uint8_t | uart_str_count = 0 |
volatile uint8_t | uart_timeout = 0 |
volatile char | uart_string [UART_MAXSTRLEN+1] = {'\0'} |
void uart_init | ( | void | ) |
Initialisiert die UART Schnittstelle des Mikrocontrollers mit gewählter Baudrate (Asynchrone 8N1).
int uart_sendc | ( | char | c, | |
FILE * | dummy | |||
) |
Sendet ein Zeichen
c | Zeichen welches gesendet werden soll. | |
dummy | wir lediglich benötigt, um die Ausgabe Standard Ein-/Ausgabe umzuleiten (kann NULL gesetzt werden) |
int uart_receive | ( | FILE * | dummy | ) |
Wartet bis ein Zeichen verfügbar ist und gibt dieses zurück
dummy | wir lediglich benötigt, um die Ausgabe Standard Ein-/Ausgabe umzuleiten (kann NULL gesetzt werden) |
uint8_t uart_gets | ( | char * | buffer, | |
uint8_t | maxlen | |||
) |
Liest ankommende Zeichen in buffer bis maxlen bzw. newline
buffer | für Zeichenkette | |
maxlen | maximale Anzahl der empfangenen Zeichen (Länge der Zeichenkette) |
void uart_sends | ( | char * | s | ) |
Sendet eine Zeichenkette
s | Pointer auf Zeichenkette |
void uart_clear | ( | void | ) |
Löscht das Emfangsregister der seriellen Schnittstelle
ISR | ( | USART_RXC_vect | ) |
Interruptroutine zum Empfang von Zeichen
Speichert empfangene Zeichen in globale Variable 'string' unter Nutzung von 'maxstrlen' und 'str_count' (siehe uart.h).
Ist eine komplette Zeichenkette empfangen, wird das globale Flag 'str_complete' gesetzt (=1, siehe uart.h).
Das Flag dient der Hauptanwendung zur Signalisierung, dass die Zeichenkette verarbeitet werden kann.
Um neue Zeichenketten zu empfangen, muss das Flag wieder rückgesetzt werden (=0).
volatile uint8_t uart_str_complete = 0 |
Das Flag signalisiert der Hauptanwendung, dass eine komplette Zeichenkette in der Rx-Interruptroutine empfangen wurde und verarbeitet werden kann.
Eine komplette Zeichenkette wird durch das Erreichen von 'maxstrlen' oder dem empfangenen Zeichen für 'lf' signalisiert.
Um neue Zeichenketten zu empfangen, muss das Flag wieder rückgesetzt werden (=0).
str_complete=1 --> Zeichenkette komplett
str_complete=0 --> Zeichenkette nicht komplett (warten bis maxstrlen-Zeichen oder 'lf')
volatile uint8_t uart_str_count = 0 |
zählt die Anzahl der empfangenen Zeichen.
volatile uint8_t uart_timeout = 0 |
globale Variable zum Zählen der Timer-Interrupts
volatile char uart_string[UART_MAXSTRLEN+1] = {'\0'} |
Definiert globale Zeichenkette, welche empfangene Zeichen der Rx-Interruptroutine beinhaltet.
Die Größe der Zeichenkette wird durch maxsrtlen+1 festgelegt (maxstrlen+1 --> maxstrlen Zeichen + 'Stringende-Zeichen').