使用带有微控制器(AT90CAN64)的UART的XBee Pro S3B / XSC问题

问题描述 投票:0回答:1

我有两个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
    }   
}
microcontroller xbee
1个回答
0
投票

看看您如何连接DIN,以及可能的RTS信号。

我相信,如果您将DIN保持为低电平(连续中断),则可以输入XBee模块的引导程序。如果您在一段时间内不与引导加载程序进行交互,它将开始运行XBee固件。 IIRC,这是RTS高时发生的情况。

如果RTS为低,则以DIN低启动将以默认的9600波特率和命令模式启动XBee固件。如果您不知道模块的波特率,这是一种恢复模式。

如果AT90CAN64以该I / O引脚作为输入/浮动引脚,则可以在该行上使用上拉电阻。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.