Hallo,
Und wie erfolgt nun die Umschaltung zwischen Senden und Empfangen?
Hier braucht man aber auch die Software dazu.
Deine erste Variante konnte ja nicht funktionieren.
Das praktisch Problem ist folgendes:
Das UART besteht aus zwei Registern, dem Datenregister und dem Schieberegister.
Das Datenregister ist per Software zugänglich, das Schieberegister leider nicht.
Deine Software schreibt nun in das Datenregister. Wenn das Schieberegister leer ist, werden die Daten aus dem Datenregister in das Schieberegister kopiert und gesendet.
Gleichzeitig wird das Transmit Register Empty Bit (TE) gesetzt und ein Interrupt ausgelöst, wenn freigegeben.
Nun ist aber das UART dann noch dabei, die Daten im Schieberegister zu senden.
Wenn also das TE-Bit aktiviert wird, musst du noch warten, bis alle Daten raus sind, bevor du deinen Treiber auf Empfang umschaltest.
Wie lange du warten musst, hängt von der verwendeten Baudrate und dem Datenformat ab. Da müssen ja Start und Stopp-Bit raus. Das Stopp-Bit kann 1 oder 2 Bit lang sein. Dann die Daten, meist sind 5, 7 oder 8 Bit einstellbar. Dann noch das Parity-Bit, wenn vorhanden. Manche UARTS beherrschen noch ein zusätzliches Master/Slave Bit.
Die Übertragung kann also zwischen 7 und 13 Bit dauern.
MfG Peter(TOO)
Lesezeichen