Skocz do zawartości

Pomocna odpowiedź

Napisano

Witam.

Proszę zerknijcie co zrobiłem nie tak 🙂 Bo mi nie najlepiej działa ten bluetooth.

Zielona dioda cały czas się świeci, Czerwona miga jak coś wysyłam. Ale nie mogę się z urządzeniem połączyć z kompa.

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>	// for itoa() call
#include <stdio.h>	// for printf() call


#define SetBit(x,y)	x |= (1<<y)
#define ClrBit(x,y) x &= ~(1<<y)
#define NegBit(x,y) x ^= (1<<y)


volatile unsigned char bufor_RXD=0;
volatile int a=1;               

void send_string(char *string)
{
  char znak;
  while (0!=(znak=*(string++)))
  {
  while ( !( UCSRA & (1<<UDRE)) );
  UDR=znak;
  }

  while ( !( UCSRA & (1<<UDRE)) );
  UDR = 0b00001010;
} 


ISR (USART_RXC_vect)
{
	bufor_RXD = UDR;
a=1;
}


int main(void)
{

//ustawienia portów I/O
	DDRD  = 0b00000000;   	
	DDRA  = 0b11111111;   	


//1 - oznacza wyjście  0 - wejście
	PORTA = 0b00000000;
PORTA = 0b10011001;   // diowy. 0 - zapalona

//**************************************
//ustawienie USART
//**************************************

UCSRB = 0b00011000;
UCSRC = 0b00000110;
unsigned int baud=51;
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;	   		//prędkość transmisji 19200
SetBit(UCSRB,7);      	//włączenie przerwania od USART RX

sei();

char buf[10];
int num=3000;

 while(1)
 {    	

	if(a==1)
	{
		sprintf(buf,"%d %d\n ", num, num);
		a=1;
		send_string(buf);
	}

	_delay_ms(1000);
 }
}

  • 4 tygodnie później...

Odpuściłbym sobie takie patenty na połączeniach komunikacyjnych. Jeżeli koniecznie chcesz diody sygnalizujące transmisję to podłącz je sobie bezpośrednio do atmegi i zapalaj/gasiś je przy zapisie do rejestru UART i na przerwaniach UART.

  • 1 miesiąc później...

Jeżeli nie jesteś w stanie uzyskać połączenia PC<->BT-x22 - to prawdopodobnie źle coś polutowałeś bo sam układ po podaniu napięcia zasilającego powinien być w stanie sparować się z komputerem(przeprowadzić transmisję też).

Jeżeli problem jest już z transmisją to zastanowiłbym się nad tymi diodami.

Wybacz ale kodu nie sprawdzę bo nigdy nie chciało mi się baudów liczyć, zawsze korzystałem z makr w setbaud.h.

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ę »
×
×
  • Utwórz nowe...