Hallo
Ich bekomm keine richtigen Zeichen gesendet über BT auf meinen PC
Egal welche Zeichen ich versende, das kommt: "ðððððððððððððððððððððððððððððððð"
Was noch ist: es kommt nicht jedes Zeichen direkt, immer so 50 auf einmal alle 25 sec.
Code:Habt ihr da eine Idee?Code:#define BAUD 19200 // Baudrate #define F_CPU 8000000 // Berechnungen #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) // clever runden #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler. #if ((BAUD_ERROR<990) || (BAUD_ERROR>1010)) #error Systematischer Fehler der Baudrate groesser 1% und damit zu hoch! #endif //-------------- INCLUDES #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> void USART_Init( void ) { UCSR0B |= (1<<TXEN0); //UART TX (Transmit - senden) einschalten UCSR0C |= (3<<UCSZ00); //Modus Asynchron 8N1 (8 Datenbits, No Parity, 1 Stopbit) UBRR0H = 0; //Highbyte ist 0 UBRR0L = (F_CPU/(BAUD*16))-1; //Lowbyte ist 103 (dezimal) -> (Frequenz_in_Hz / (Baudrate * 16)) - 1 <- Quarfrequenz = 16*1000*1000 Hz!!!! } void USART_Transmit( unsigned char data ) { /* Wait for empty transmit buffer */ while ( !( UCSR0A & (1<<UDRE0)) ); /* Put data into buffer, sends the data */ UDR0 = data; } 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) { DDRC |= 1<<PINC0; //LED init PORTC &= ~(1<<PINC0); DDRB |= 1<<PINB6; PORTB |= 1<<PINB6; USART_Init(); // USART einstellen _delay_ms(250); PORTB &= ~(1<<PINB6); //LED aus while(1) { USART_Transmit('t'); //Send thomas USART_Transmit('h'); USART_Transmit('o'); USART_Transmit('m'); USART_Transmit('a'); USART_Transmit('s'); PORTC ^= 1<<PINC0; //toggle LED (red) _delay_ms(250); } }//end main







Zitieren

Lesezeichen