12.11.2012 Aufrufe

Programmierung der AVR-Microcontroller mit C - UlrichRadig.de

Programmierung der AVR-Microcontroller mit C - UlrichRadig.de

Programmierung der AVR-Microcontroller mit C - UlrichRadig.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

wur<strong>de</strong>.<br />

Das Zeichen muss nun schnellstmöglich aus <strong>de</strong>m Datenregister ausgelesen<br />

wer<strong>de</strong>n. Falls dies nicht erfolgt bevor ein weiteres Zeichen komplett<br />

empfangen wur<strong>de</strong> wird eine Überlauf-Fehlersituation eintreffen. Mit <strong>de</strong>m<br />

Auslesen <strong>de</strong>s Datenregisters wird das Bit automatisch gelöscht.<br />

TXC UART Trans<strong>mit</strong> Complete<br />

Dieses Bit wird vom <strong>AVR</strong> gesetzt, wenn das im Sen<strong>de</strong>-Schieberegister<br />

befindliche Zeichen vollständig ausgegeben wur<strong>de</strong> und kein weiteres<br />

Zeichen im Sen<strong>de</strong>datenregister ansteht. Dies be<strong>de</strong>utet also, wenn die<br />

Kommunikation vollumfänglich abgeschlossen ist.<br />

Dieses Bit ist wichtig bei Halbduplex-Verbindungen, wenn das Programm<br />

nach <strong>de</strong>m Sen<strong>de</strong>n von Daten auf Empfang schalten muss. Im<br />

Vollduplexbetrieb brauchen wir dieses Bit nicht zu beachten.<br />

Das Bit nur dann automatisch gelöscht, wenn <strong><strong>de</strong>r</strong> entsprechen<strong>de</strong><br />

Interrupthandler aufgerufen wird, ansonsten müssen wir das Bit selber<br />

löschen.<br />

UDRE UART Data Register Empty<br />

Dieses Bit wird vom <strong>AVR</strong> gesetzt, wenn ein Zeichen vom<br />

Sen<strong>de</strong>datenregister in das Send-Schieberegister übernommen wur<strong>de</strong> und<br />

<strong><strong>de</strong>r</strong> UART nun wie<strong><strong>de</strong>r</strong> bereit ist, ein neues Zeichen zum Sen<strong>de</strong>n<br />

aufzunehmen.<br />

Das Bit wird automatisch gelöscht, wenn ein Zeichen in das<br />

Sen<strong>de</strong>datenregister geschrieben wird.<br />

FE Framing Error<br />

Dieses Bit wird vom <strong>AVR</strong> gesetzt, wenn <strong><strong>de</strong>r</strong> UART einen<br />

Zeichenrahmenfehler <strong>de</strong>tektiert, d.h. wenn das Stopbit eines empfangenen<br />

Zeichens 0 ist.<br />

Das Bit wird automatisch gelöscht, wenn das Stopbit <strong>de</strong>s empfangenen<br />

Zeichens 1 ist.<br />

OR OverRun<br />

Dieses Bit wird vom <strong>AVR</strong> gesetzt, wenn unser Programm das im<br />

Empfangsdatenregister bereit liegen<strong>de</strong> Zeichen nicht abholt bevor das<br />

nachfolgen<strong>de</strong> Zeichen komplett empfangen wur<strong>de</strong>.<br />

Das nachfolgen<strong>de</strong> Zeichen wird verworfen.<br />

Das Bit wird automatisch gelöscht, wenn das empfangene Zeichen in das<br />

Empfangsdatenregister transferiert wer<strong>de</strong>n konnte.<br />

UDR UART Data Register.<br />

Hier wer<strong>de</strong>n Daten zwischen UART und CPU übertragen. Da <strong><strong>de</strong>r</strong> UART im<br />

Vollduplexbetrieb gleichzeitig empfangen und sen<strong>de</strong>n kann han<strong>de</strong>lt es sich hier<br />

physikalisch um 2 Register, die aber über die gleiche I/O-Adresse angesprochen wer<strong>de</strong>n.<br />

Je nach<strong>de</strong>m, ob ein Lese- o<strong><strong>de</strong>r</strong> ein Schreibzugriff auf <strong>de</strong>n UART erfolgt wird automatisch<br />

das richtige UDR angesprochen.<br />

UBRR UART Baud Rate Register.<br />

In diesem Register müssen wir <strong>de</strong>m UART <strong>mit</strong>teilen, wie schnell wir gerne<br />

kommunizieren möchten. Der Wert, <strong><strong>de</strong>r</strong> in dieses Register geschrieben wer<strong>de</strong>n muss,<br />

errechnet sich nach folgen<strong><strong>de</strong>r</strong> Formel:<br />

UBRR = Taktfrequenz / (Baudrate * 16) - 1<br />

Es sind Baudraten bis zu 115200 Baud und höher möglich.<br />

8.2 Die Hardware<br />

Der UART basiert auf normalem TTL-Pegel <strong>mit</strong> 0V (LOW) und 5V (HIGH). Die<br />

Schnittstellenspezifikation für RS232 <strong>de</strong>finiert jedoch -3V ... -12V (LOW) und +3 ... +12V (HIGH).<br />

Zu<strong>de</strong>m muss <strong><strong>de</strong>r</strong> Signalaustausch zwischen <strong>AVR</strong> und Partnergerät invertiert wer<strong>de</strong>n. Für die

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!