e-cma Napisano Listopad 13, 2014 Udostępnij Napisano Listopad 13, 2014 Cześć, Próbuję skomunikować się z mikrokontrolerem przez bluetooth podłączony do uarta. Na razie chcę chociaż móc wysyłać informacje z uc i odbierać je na komputerze, ale zamiast "Philips LPC" otrzymuję cały czas ciąg znaków, który w zapisie szesnastkowym wygląda tak: "80 80 F8 80 F8 80 F8 ". Korzystam z mikrokontrolera NXP LPC2106 i modułu bluetooth HC-06 I takiego programu: #include "LPC210x.h" #include "cstdlib" #define TEMT (1<<6) #define LINE_FEED 0xA #define CARRIAGE_RET 0xD static void Uart0Init() { //Wybor RXD i TXD PINSEL0 |= TXD0_P00_SEL | RXD0_P01_SEL; //Ustaw predkosci transmisji U0LCR = (1<<7); //U0DLAB //baudrate 9600 czestotliwosc 16M U0DLL = 105; U0DLM = 0; //Dlugosc 8 bit U0LCR |= (1<<0) | (1<<1); //Wlacz fifo U0FCR = (1<<0); //Wylacz przerwania i kasuj flagi przerwan U0IER = 0; U0IIR = 0; //Wszystkie znaczniki odebrania znaku U0LSR = 0; U0LCR = (0<<7); //U0DLAB } //Nadawanie znaku static void Uart0Puts(const char *str) { //Wysylaj kolejne znaki while(*str) { //Czekaj az bedzie mozna zapisac do bufora nadajnika while (!(U0LSR & 0x20)); //Wyslij znak i przejdz do nast znaku U0THR = *str++; } } //Odbior znaku /* static void Uart0Gets(char *str) { char c; char* strm; do { while (!(U0LSR& 0x20& 0x20)); c = U0RBR; *str++ = c; while (!(U0LSR& 0x20)); U0THR = c; } while (c != '\r'); strm=(str-1) *strm = 0; }*/ //Bufor odebranych znakow //char buf[256]; /* Funkcja glowna main */ int main(){ char c[]="Philips LPC\n"; int k,i; char x = 0x1; Uart0Init(); IODIR = (1<<20); while(1) { i=0; /* Keep Transmitting until Null character('\0') is reached */ while(c[i]) { U0THR=c[i]; i++; } //U0THR=LINE_FEED; //U0THR=CARRIAGE_RET; /* Wait till U0THR and U0TSR are both empty */ while(!(U0LSR & TEMT)){} IOSET = (1<<20); for(k=0;k<1000000;++k); IOCLR =(1<<20); for(k=0;k<1000000;++k); } return 0; } Mógł by ktoś powiedzieć w którym miejscu robię błąd? Z góry dzięki za pomoc Link do komentarza Share on other sites More sharing options...
Gość Czerwiec 1, 2015 Udostępnij Czerwiec 1, 2015 Hello e-cma! Looks like HC-06 wants 38400 UART baud rate, not 9600. This helped me to get rid of "80" and "F8" bytes with HC-05 module. Best regards, Andrej. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »