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:
Vielen DankCode:#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; }
Martin







Zitieren

Lesezeichen