Hi,
wenn ich über meinen UART Daten übertrage ist das 1. Bit immer 1 ich schicke eine 0 hin 00000000 und bekomme 10000000 zurück und das bei allen zahlen.

Ich benutze einen AtMega16 mit internem 1MHZ die übetragung läuft über einen max232 Chip

Eigenschaften:
Baud 9600 kein parity 8 bit 1 stop

Programm:

Code:
#define F_CPU       1000000UL

#define BAUD        9600UL
#define UBRR_BAUD   ((F_CPU/(16UL*BAUD))-1)

void uart_init(void)
{
    // Baudrate einstellen (Normaler Modus)
    UBRRH = (unsigned char) (UBRR_BAUD>>8);
    UBRRL = (unsigned char) (UBRR_BAUD & 0x0ff);

    // Aktivieren des Empfängers, des Senders und des "Daten empfangen"-Interrupts
    UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);

    // Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit
    UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}

SIGNAL(SIG_UART_RECV)
{
    unsigned char buffer;

    // Daten aus dem Puffer lesen ...
    buffer = UDR;

    // ... warten bis der Sendepuffer leer ist ...
    while ( !( UCSRA & (1<<UDRE)) )
        ;
    // ... und gleich wieder zurück schicken
    UDR = buffer;
}
Vielen Dank
Martin