Witam
Właśnie zacząłem uruchamiać modułu btm 222.
Uklady znajdują się nawzajem, łączą się. Chciałbym jednak jakoś móc wpływać na parametry tranmisji szeregowej.
Chcę aby moduły po załączeniu zasilania same się znajdowały i łączyły się (tak też mam to zrobione). Później chciałbym np zmienić parametry transmisji dlatego przechodze do trybu komend AT i wysylam poszczegolne komendy AT do modulu. Jednak nie udaje mi sie odczytac danych jakie wysyla modul w odpowiedzi do procka i nie wiem dlaczego.
Modul jednak wysyla odpowiedz na poszczegolne komendy bo podgladam to na terminalu na kompie.
pozniej wklejam kod, moze ktos z Was zobaczy jaki bla robie:
#define F_CPU 7372800// Clock Speed
#define BAUD 19200
#define MYUBRR ((F_CPU/(16*BAUD))-1)
//-------------------------------------------------------
void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH = (F_CPU/(BAUD*16L)-1) >> 8; //(unsigned char)(baud>>Cool;
UBRRL = (unsigned char)(F_CPU/(BAUD*16L)-1); //(unsigned char)baud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXCIE)|(1<<TXEN)|(1<<RXEN)|(1<<TXCIE);
/* Set frame format: 8data, 1stop bit */
UCSRC = (1<<URSEL)|(3<<UCSZ0);
}
//------------------------------------------------------
SIGNAL(SIG_UART_RECV)
{
znak[ii]=UDR; zapis do bufora
ii++;
if(ii>20) ii=0;
}
//------------------------------------------------------
SIGNAL(SIG_INTERRUPT0) // przerwanie zewnetrzne INT0
{
wyslij_text(znak2);
}
//------------------------------------------------------
int main(void)
{
//ustawienia UART 19200, 1 bit stopu, brak parzystsci:
USART_Init(19200);
//komenda AT ktora wysylam do BTM
znak2[0]='A';
znak2[1]='T';
znak2[2]='P';
znak2[3]='?';
znak2[4]=0x0D;
while(1)
{
if(bit_is_clear(PIND, 4)) //nacisniecie przycisku wyswietla mi bufor
//zeby sprawdzic co dostaje w odpowiedzi
{
for(int t=0; t<20; t++)
{
pisz_znak(znak[t]);
}
}
}
}
Właśnie zacząłem uruchamiać modułu btm 222.
Uklady znajdują się nawzajem, łączą się. Chciałbym jednak jakoś móc wpływać na parametry tranmisji szeregowej.
Chcę aby moduły po załączeniu zasilania same się znajdowały i łączyły się (tak też mam to zrobione). Później chciałbym np zmienić parametry transmisji dlatego przechodze do trybu komend AT i wysylam poszczegolne komendy AT do modulu. Jednak nie udaje mi sie odczytac danych jakie wysyla modul w odpowiedzi do procka i nie wiem dlaczego.
Modul jednak wysyla odpowiedz na poszczegolne komendy bo podgladam to na terminalu na kompie.
pozniej wklejam kod, moze ktos z Was zobaczy jaki bla robie:
#define F_CPU 7372800// Clock Speed
#define BAUD 19200
#define MYUBRR ((F_CPU/(16*BAUD))-1)
//-------------------------------------------------------
void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH = (F_CPU/(BAUD*16L)-1) >> 8; //(unsigned char)(baud>>Cool;
UBRRL = (unsigned char)(F_CPU/(BAUD*16L)-1); //(unsigned char)baud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXCIE)|(1<<TXEN)|(1<<RXEN)|(1<<TXCIE);
/* Set frame format: 8data, 1stop bit */
UCSRC = (1<<URSEL)|(3<<UCSZ0);
}
//------------------------------------------------------
SIGNAL(SIG_UART_RECV)
{
znak[ii]=UDR; zapis do bufora
ii++;
if(ii>20) ii=0;
}
//------------------------------------------------------
SIGNAL(SIG_INTERRUPT0) // przerwanie zewnetrzne INT0
{
wyslij_text(znak2);
}
//------------------------------------------------------
int main(void)
{
//ustawienia UART 19200, 1 bit stopu, brak parzystsci:
USART_Init(19200);
//komenda AT ktora wysylam do BTM
znak2[0]='A';
znak2[1]='T';
znak2[2]='P';
znak2[3]='?';
znak2[4]=0x0D;
while(1)
{
if(bit_is_clear(PIND, 4)) //nacisniecie przycisku wyswietla mi bufor
//zeby sprawdzic co dostaje w odpowiedzi
{
for(int t=0; t<20; t++)
{
pisz_znak(znak[t]);
}
}
}
}
