ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
158348
0-range (04.06.2009 23:01, просмотров: 1544)
Есть микроконтроллер atmega644p и соединённый с ним bluetooth-модуль spkebm001a. Установлено соединение между ноутбуком и bluetooth-модулем. На модуль данные вроде как приходят (моргает светодиод) но вот до контроллера они не доходят. Пробовали UART и SPI, результат один и тот же. При попытке сохранения полученного символа в eeprom контрллера, сохранятеся либо 00 либо ничего вообще. В чём проблема непонятно. Также пробовали ещё и соединение по COM-порту через схемы собранную на max232.Результат тот же. Листинг для SPI void SPI_MasterInit(void) { DDRB = (1<<DDB5)|(1<<DDB7) SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0); } void SPI_MasterTransmit(char cData) { SPDR = cData; while(!(SPSR & (1<<SPIF))) ; } void SPI_SlaveInit(void) { DDRB = (1<<DDB6); /* Enable SPI */ SPCR = (1<<SPE); } char SPI_SlaveReceive(void) { while(!(SPSR & (1<<SPIF))) ; return SPDR; } void main() { SPI_SlaveInit(); while (1) { char vh = SPI_SlaveReceive(); eeprom_write(0x00, vh); } } Листинг для UART void USART_Init( unsigned int baud ) { UBRRH0 = (unsigned char)(baud>>8); UBRRL0 = (unsigned char)baud; UCSR0B = (1<<RXEN0)|(1<<TXEN0); /* Set frame format: 8data, 2stop bit */ UCSR0C = (1<<USBS0)|(3<<UCSZ00); } void USART_Transmit( unsigned char data ) { while ( !( UCSR0A & (1<<UDRE0)) ) ; UDR0 = data; } unsigned char USART_Receive( void ) { while ( !(UCSR0A & (1<<RXC0)) ) ; return UDR0; } void main() { USART_Init(9600); while (1) { char vh = USART_Receive(); eeprom_write(0x00, vh); } }