Hallöchen!

Zuerst - TOP 1: Verschiedene Versionen der ATmega8(L)-Beschreibung von Atmel

Beim ADC ist mir aufgefallen, dass eine Atmel-Beschreibung bei der U-Messung der
Akku-/Batt.-Spg. 8 bit breit sein soll, ich aber einen echten 10 bit-Wert erhielt.
Dann nachgeguckt: auf meiner CD-(Kopie): Rev. 2486M-AVR-12/03
Auf einem schon etwas früher geholten PDF-File: 2486Q-AVR-10/06
(Steht unten auf der ersten Seite!)
Vielleicht gibt es noch 'ne neuere Version! (Da ich auf dem Land, also in der DFÜ-
Diaspora lebe, wäre es nett, wenn ein ADSL-Kollege sich bei Atmel schlau machen könnte!)

TOP 2: Aus der Beschreibung von Atmel:
C Code Example(1)

void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}

[Note: 1. See "About Code Examples" on page 8.]

The function simply waits for the transmit buffer to be empty by checking the UDRE
Flag, before loading it with new data to be transmitted.
If the Data Register Empty Interrupt
is utilized, the interrupt routine writes the data into the buffer.
(Page 140)
------------------------
* Bit 6 - TXC: USART Transmit Complete
This flag bit is set when the entire frame in the Transmit Shift Register has been shifted
out and there are no new data currently present in the transmit buffer (UDR). The TXC
Flag bit is automatically cleared when a transmit complete interrupt is executed, or it can
be cleared by writing a one to its bit location. The TXC Flag can generate a Transmit
Complete interrupt (see description of the TXCIE bit).

* Bit 5 - UDRE: USART Data Register Empty
The UDRE Flag indicates if the transmit buffer (UDR) is ready to receive new data. If
UDRE is one, the buffer is empty, and therefore ready to be written. The UDRE Flag can
generate a Data Register Empty interrupt (see description of the UDRIE bit).
UDRE is set after a reset to indicate that the Transmitter is ready.
(Page 154)
------------------------
<table><tr><td>Bit</td><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td>
<td>0</td><td></td></tr>
<tr><td></td><td>RXC</td><td>TXC</td><td>UDRE</td><td>FE</td><td>DOR</td><td>PE</td>
<td>U2X</td><td>MPCM</td><td>UCSRA</td></tr>
<tr><td>Read/Write </td><td>R</td><td>R/W</td><td>R</td><td>R</td><td>R</td><td>R</td>
<td>R/W</td><td>R/W</td><td></td></tr>
<tr><td>Initial Value </td><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td>
<td>0</td><td>0</td><td>0</td><td></td></tr></table>

(wenn obige HTML-Tabelle nicht funktionieren:
Bit 7 6 5 4 3 2 1 0
RXC TXC UDRE FE DOR PE U2X MPCM UCSRA
Read/Write R R/W R R R R R/W R/W
Initial Value 0 0 1 0 0 0 0 0)
-----------------
Zu * Bit 6 - TXC: USART Transmit Complete -> 1. Satz ist eindeutig!
Das mit dem "cleared" ist es leider nicht, da 'ne "1" so viel wie "gelöscht" bedeutet!

Das Bsp. ganz oben von Atmel zeigt, dass "wir" es hier schon richtig machen! !)

"or it can be cleared by writing a one to its bit location." machen wir ja auch am Anfang!
(UCSRA=UCSRA | TXC; // clear transmitter flag )

cu Helmut