У меня есть два Pro XBee Pro S3B, один из которых подключен к моему компьютеру через USB, а другой подключен к микроконтроллеру AT90CAN64.
Вот настройки для каждого XBee, который я настроил с помощью XCTU:
- A (coordinator)
CE: Indirect Msg Coordinator [1]
ID: 71FF
SH: 13A200
SL: 418CCABF
DH: 13A200
DL: 418CCAB4
- B (router)
CE: Standard Router [0]
ID: 71FF
SH: 13A200
SL: 418CCAB4
DL: 418CCABF
У меня есть оба в прозрачном режиме.
Если я подключу и A, и B к моему компьютеру, если я использую терминал XCTU, я смогу обмениваться сообщениями между ними.
Моя основная проблема заключается в следующем: после включения AT90CAN64, если я подключаю DIN / DOUT (XBee) к TX / RX (AT90CAN64), загружаю XCTU и пытаюсь обмениваться сообщениями, у меня ничего не получается. Однако, если я не подключаю TX / RX - DIN / DOUT, подожду некоторое время, затем я подключаю TX / RX - DIN / DOUT и затем загружаю XCTU, я могу обмениваться сообщениями.
У меня есть заглянул в документацию и форумы и ничего не касается этой проблемы. Кто-нибудь имеет представление о том, что может быть проблемой, или какой-либо ключ к решению этой проблемы?
Ниже вы найдете код, работающий в микроконтроллере:
#ifndef __cplusplus
#define __cplusplus
#endif
#ifndef F_CPU
#define F_CPU 16000000
#endif
#include <avr/io.h>
#include <util/delay.h>
#include "usart.h"
void sendTest(void);
void sendTest(){
USART0_Transmit8(0x07);
}
int main(){
DDRG |= (1 << PG0)|(1 << PG1)|(1 << PG2)|(1<<PG3); //Make pins PG[0...3] output.
PORTG |= (1 << PG0)|(1 << PG1)|(1 << PG2)|(1<<PG3); //Turn all LEDs off
PORTG &= ~(1<<PG0); //Turn red LED on
_delay_ms(30000);
PORTG |= (1<<PG0); //Turn red LED off
USART0_Init8(103);
while (1){
//test1echo();
PORTG &= ~(1<<PG0); //Turn red LED on
sendTest();
_delay_ms(1000);
PORTG |= (1<<PG0); //Turn red LED off
}
}