Als erstes muss die gewünschte Baudrate im Register UBRR festgelegt werden. Der in dieses Register zu schreibende Wert errechnet sich nach der folgenden Formel:
UBRR = Taktfrequenz / 16 * Baudrate - 1
Beim AT90S4433 kann man den Wert direkt in das Register UBRR laden, beim ATmega8 gibt es für UBRR zwei Register: UBRRL (Low-Byte) und UBRRH (High-Byte). Im Normalfall steht im UBRRH 0, da der berechnete Wert kleiner als 256 ist und somit in UBRRL alleine passt.
Um den Sendekanal des
UART zu aktivieren, muss das Bit TXEN im
UART Control Register UCSRB auf 1 gesetzt werden.
Danach kann das zu sendende Byte in das Register UDR eingeschrieben werden - vorher muss jedoch sichergestellt werden, dass das Register leer ist, die vorhergehende Übertragung also schon abgeschlossen wurde. Dazu wird getestet, ob das Bit UDRE ("UART Data Register Empty") im Register UCSRA auf 1 ist.
Genaueres über die UART-Register findet man im Datenblatt des Controllers.
Der ATmega8 bietet noch viele weitere Optionen zur Konfiguration des UARTs, aber für die Datenübertragung zum PC sind im Normalfall keine anderen Einstellungen notwendig.
Das Beispielprogramm überträgt die Zeichenkette "Test!" in einer Endlosschleife an den PC. Die folgende Version ist für den ATmega8 geschrieben; wer den AT90S4433 verwendet findet die passende Version hier.
Lesezeichen