Witam,
mam problem z modułem bluetooth BTM222 podłączonym do ATmegi8. Napisałem sobie program w C, wysyłam znaki z ATmegi przez UART do BTM-a i dostaje je z powrotem(czyli echo działa) . Za to wysłanie jakiejkolwiek komendy AT nie przynosi rezultatu - BTM zwraca po prostu wszystkie znaki. Nie mam zielonego pojęcia co robię źle, próbowałem już różnych kombinacji. Wrzucam napisany przeze mnie kod, proszę o pomoc/naprowadzenie na rozwiązanie. Dodam, że całość chodzi na wew. oscylatorze 1 MHz
mam problem z modułem bluetooth BTM222 podłączonym do ATmegi8. Napisałem sobie program w C, wysyłam znaki z ATmegi przez UART do BTM-a i dostaje je z powrotem(czyli echo działa) . Za to wysłanie jakiejkolwiek komendy AT nie przynosi rezultatu - BTM zwraca po prostu wszystkie znaki. Nie mam zielonego pojęcia co robię źle, próbowałem już różnych kombinacji. Wrzucam napisany przeze mnie kod, proszę o pomoc/naprowadzenie na rozwiązanie. Dodam, że całość chodzi na wew. oscylatorze 1 MHz
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
volatile char znak_nadawany[5]={'A','T','E','0',13}; //tablica ze znakami do wysłania
volatile char znak_odebrany=0;
uint8_t liczba=0; //licznik obiegów pętli nadawczej
SIGNAL(SIG_UART_TRANS){
while(!(UCSRA & (1<<UDRE)))
;
if (liczba<4){
liczba=(liczba+1);
_delay_ms(60);
//_delay_ms(262);
//_delay_ms(262);
//_delay_ms(262);
//_delay_ms(262);
//_delay_ms(262);
UDR=znak_nadawany[liczba];
}
}
SIGNAL (SIG_UART_RECV){
znak_odebrany=UDR;
PORTB=~znak_odebrany;
}
int main(){
DDRB=0B11111111;
PORTB=0B11111111;
void usart_init(unsigned int baud) {
//ustawienie predkosci transmisji
UBRRH=(unsigned char)(baud>>8);
UBRRL=(unsigned char)(baud);
//Ustawienie odbiornika i nadajnika
UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<TXCIE)|(1<<RXCIE);
//Ustawienie parametrow ramki
UCSRC=(1<<URSEL)|(0<<USBS)|(3<<UCSZ0);
}
void rozpocznij_nadawanie(){
while(!(UCSRA & (1<<UDRE)))
;
UDR=znak_nadawany[0];
}
cli();
usart_init(2);
sei();
rozpocznij_nadawanie();
while(1){
}
return 0;
}