Witam!
Problem jak w temacie. Zakupiłem moduł bluetooth BTM 112, zrobiłem pod niego płytką z wszelkimi potrzebnymi elementami (wg. schematu z datasheeta) i wyprowadzeniem sygnałów na goldpiny.
Po podaniu zasilania moduł się włącza i przechodzi w stan "mrugającej diody połączenia".
Od strony PC mogę się bez problemu połączyć i następnie wysyłać do modułu dane przez Hyper Terminal. Jak zewrę linie RX i TX modułu to znaki bez problemu wracają do Terminala. Nie ma więc błędów w lutowaniu itp.
Linie CTS oraz RTS są zwarte a reset podłączony do VCC przez kondensator (wszystko wg. datasheeta).
Problemem jest natomiast kompletny brak komunikacji między mikrokontrolerem a modułem BT.
Przeczytałem już wszystkie wątki i nikt nie miał problemu za samym połączeniem bo coś tam zawsze mu moduł odsyłał a u mnie brak jakiejkolwiek odpowiedzi.
Próbowałem już na kilka sposobów pisać program, ustawiać różne prędkości transmisji i nic. Używałem głównie wewnętrznego oscylatora 8Mhz...może to stanowi problem? Teraz włożyłem jednak kwarc 8 Mhz i dalej nic....
Jak zewrę linie rx i tx uC to znaki wracają i wszystko jest ok!
Poniżej program na uC, którego używam. Normalnie brak reakcji. Natomiast jak komputer się połączy z modułem to zapala się dioda sygnalizująca że coś odebrał uC. Ale nie ma żadnych znaków zapisanych na eepromie?! Wygląda to jakby były jakieś makabryczne błędy transmisji czy coś? Dodam że uC jest na płytce stykowej, moduł oczywiście na normalnym pcb.
Pomóżcie!!!
bo ja już nie wiem co może być grane:/
Pozdrawiam
Problem jak w temacie. Zakupiłem moduł bluetooth BTM 112, zrobiłem pod niego płytką z wszelkimi potrzebnymi elementami (wg. schematu z datasheeta) i wyprowadzeniem sygnałów na goldpiny.
Po podaniu zasilania moduł się włącza i przechodzi w stan "mrugającej diody połączenia".
Od strony PC mogę się bez problemu połączyć i następnie wysyłać do modułu dane przez Hyper Terminal. Jak zewrę linie RX i TX modułu to znaki bez problemu wracają do Terminala. Nie ma więc błędów w lutowaniu itp.
Linie CTS oraz RTS są zwarte a reset podłączony do VCC przez kondensator (wszystko wg. datasheeta).
Problemem jest natomiast kompletny brak komunikacji między mikrokontrolerem a modułem BT.
Przeczytałem już wszystkie wątki i nikt nie miał problemu za samym połączeniem bo coś tam zawsze mu moduł odsyłał a u mnie brak jakiejkolwiek odpowiedzi.
Próbowałem już na kilka sposobów pisać program, ustawiać różne prędkości transmisji i nic. Używałem głównie wewnętrznego oscylatora 8Mhz...może to stanowi problem? Teraz włożyłem jednak kwarc 8 Mhz i dalej nic....
Jak zewrę linie rx i tx uC to znaki wracają i wszystko jest ok!
Poniżej program na uC, którego używam. Normalnie brak reakcji. Natomiast jak komputer się połączy z modułem to zapala się dioda sygnalizująca że coś odebrał uC. Ale nie ma żadnych znaków zapisanych na eepromie?! Wygląda to jakby były jakieś makabryczne błędy transmisji czy coś? Dodam że uC jest na płytce stykowej, moduł oczywiście na normalnym pcb.
Pomóżcie!!!
Pozdrawiam
#define F_CPU 8000000
#define BAUD 9600
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
#include <avr/eeprom.h>
uint8_t eepromInd = 0;
void usartInit()
{
#include <util/setbaud.h>
UBRRH = UBRRH_VALUE;
UBRRL = UBRRL_VALUE;
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
// Set frame format to 8 data bits, no parity, 1 stop bit
UCSRC = (1<<UCSZ1)|(1<<UCSZ0);
sei();
}
void usartSendByte(unsigned char inByte)
{
// Wait if a byte is being transmitted
while((UCSRA&(1<<UDRE)) == 0);
// Transmit data
UDR = inByte;
}
void usartSendString(unsigned char * inString)
{
while (*inString != 0x00)
{
usartSendByte(*inString++);
_delay_ms(60);
}
}
unsigned char usartReceiveByte()
{
// Wait until a byte has been received
while((UCSRA&(1<<RXC)) == 0);
// Return received data
return UDR;
}
ISR(SIG_UART_RECV)
{
unsigned char c = UDR;
PORTB &= ~(1 << PB0);
_EEPUT(0x10+eepromInd, c);
eepromInd++;
}
int main()
{
_delay_ms(3000);
DDRB = 0b11111111;
PORTB |= (1 << PB0);
usartInit();
usartSendString("AT\r");
while(1)
{
}
return 0;
}
