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:
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
Habt ihr da eine Idee?