CodeBox c
#include <avr/io.h>
// =================================
// ===== USART initialisieren =====
// =================================
void init_usart ()
{
// Baudrate festlegen (Datenblattseite 190)
UBRR0L = 129;
// USART auf senden und empfangen einstellen
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
// Stopbits einstellen. (USBSn auf 1 = 2 Stopbits - 0 = 1 Stopbit?
UCSR0C = (1<<USBS0)|(3<<UCSZ00);
// 8-bit Übertragung
UCSR0C |= (1<<UCSZ01) | (1<<UCSZ0);
}
// =================================
// ===== USART-Sendefunktion =====
// =================================
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)) )
;
/* Put data into buffer, sends the data */
UDR0 = data;
}
// =================================
// ===== USART-Empfangsfunktion =====
// =================================
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSR0A & (1<<RXC0)) )
;
/* Get and return received data from buffer */
return UDR0;
}
int main(void)
{
while(1)
{
}
}
Das ist das Ergebnis von den gestrigen Abend. Leider kann der Compiler nichts mit UCSZ0 anfangen. Das Bit gibte aber, es liegt auch in diesem Register.