我有2个XBee Serie2模块运行ZigBee Pro (2007)连接在两个不同的Arduinos上。
由于Arduino Uno是单线程,所以我尝试使用中断来暂停主函数,并在XBee模块接收到数据时将事情搁置一边。
我尝试使用从Arduino到Rx的Arduino和链接引脚2 (int0)的访问中断功能,但是我没有任何中断,无论是从上升状态、下降状态还是下降状态。
attachInterrupt(0, interruptXBee, RISING);我用Rx引脚做错了吗?我应该用另一个引脚吗?(我见过RTS/CTS引脚,但我的有效负载比缓冲区小,所以我无法使用这些引脚)。
谢谢!
发布于 2015-03-21 16:19:44
在一个典型的应用程序中,您可以让串口驱动程序处理串行中断,缓冲进来的字节,然后在主循环中定期检查缓冲区以获取要处理的数据。
在具有单个线程的嵌入式平台上,我喜欢用tick()函数编写程序的每个部分。每个滴答做一点点工作,记住它的状态,然后返回到主线程。根据您的程序需要的响应程度,您可能希望将滴答功能限制在每次调用20 of到100 of的工作范围内。有时,滴答会立即返回,因为它没有什么可做的。
此外,您可能有中断服务例程,快速服务中断,将数据存储在一个地方,下一个滴答可以找到和处理它。
因此,在您的示例中,您将在主循环中调用一个xbee_tick()。它在串行接收缓冲区中查找数据,对其进行处理,然后返回到主循环。
https://stackoverflow.com/questions/29168279
复制相似问题