Hallo
Ich hab jetzt mein BCA8-BTM mit BTM222 Modul endlich bekommen, nur schaff ich es nicht eine Verbindung zwischen dem BT Modul und dem AVR aufzubauen. Zwischen BTM222 und USB-BT Adapter am PC schaff ich es, erkenntlich am helleren Leuchten einer LED.
Der Code:
Hardware: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 ) { /* Set baud rate */ UBRR0H = UBRR_VAL >> 8; UBRR0L = UBRR_VAL & 0xFF; /* Enable receiver and transmitter */ UCSR0B = (1<<RXEN0)|(1<<TXEN0); /* Set frame format: 8data, 1stop bit */ //UCSRC = (1<<URSEL)|(3<<UCSZ0); UCSR0C |= (1<<UCSZ00) | (1<<UCSZ01); // 1 Stopp Bit UCSR0C &= ~(1<<UMSEL00)&(1<<UMSEL01); } 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) { DDRD |= 1<<PIND0; PORTD |= 1<<PIND0; USART_Init(); // USART einstellen _delay_ms(250); PORTD &= ~(1<<PIND0); //LED aus USART_Transmit('O'); USART_Transmit('N'); _delay_ms(1000); PORTD |= 1<<PIND0; //LED ein while(1) { USART_Transmit('x'); } }//end main
-) ATmega328P
-) BTM222
-) Belkin USB-BT-Adapter
Kann es sein dass ich "zu schnell" Zeichen versende? Oder gibt es für das Modul eine Art Initialisierung (AT Befehl senden o.ä.)?







Zitieren


Lesezeichen