XBee / ZigBee中断Arduino

时间:2015-03-20 13:59:01

标签: arduino interrupt zigbee

我有2个运行ZigBee Pro(2007)的XBee Serie 2模块连接在2个不同的Arduinos Unos上。

由于Arduino Uno是单线程,我试图使用中断来暂停主函数,并在XBee模块收到数据时暂时不做。

我尝试使用Arduino中的attachinterrupt函数并将引脚2(int0)连接到XBee模块的Rx但是我没有任何中断,无论是从RISING状态,DOWN状态还是FALLING状态。

attachInterrupt(0, interruptXBee, RISING);

使用Rx引脚我做错了,我应该使用其他引脚吗? (我见过RTS / CTS引脚,但我的有效负载小于缓冲区,所以我没有办法使用这些引脚。)

谢谢!

1 个答案:

答案 0 :(得分:1)

在典型的应用程序中,您要让串口驱动程序处理串行中断,缓冲进来的字节,然后在主循环中定期检查缓冲区中是否有要处理的数据。

在具有单个线程的嵌入式平台上,我喜欢使用tick()函数对程序的每个部分进行编码。每个tick都会做一些工作,记住它的状态,然后返回主线程。根据程序需要的响应速度,您可能希望将每个调用的tick函数限制为20ms到100ms。有时刻度线会立即返回,因为它没有任何事情要做。

此外,您可能具有快速服务中断的中断服务程序,将数据存储在下一个tick可以找到并处理它的位置。

因此,在您的情况下,您在主循环中调用了xbee_tick()。它在串行接收缓冲区中查找数据,对其进行处理,然后返回主循环。