Skocz do zawartości

[C] [LPC2106] Komunikacja przez Bluetooth (UART) - mikrokontroler wysyła nieprawidłowy ciąg znaków


e-cma

Pomocna odpowiedź

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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.