首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XBee/ZigBee中断Arduino

XBee/ZigBee中断Arduino
EN

Stack Overflow用户
提问于 2015-03-20 13:59:00
回答 1查看 895关注 0票数 0

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

由于Arduino Uno是单线程,所以我尝试使用中断来暂停主函数,并在XBee模块接收到数据时将事情搁置一边。

我尝试使用从Arduino到Rx的Arduino和链接引脚2 (int0)的访问中断功能,但是我没有任何中断,无论是从上升状态、下降状态还是下降状态。

代码语言:javascript
复制
attachInterrupt(0, interruptXBee, RISING);

我用Rx引脚做错了吗?我应该用另一个引脚吗?(我见过RTS/CTS引脚,但我的有效负载比缓冲区小,所以我无法使用这些引脚)。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-21 16:19:44

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

在具有单个线程的嵌入式平台上,我喜欢用tick()函数编写程序的每个部分。每个滴答做一点点工作,记住它的状态,然后返回到主线程。根据您的程序需要的响应程度,您可能希望将滴答功能限制在每次调用20 of到100 of的工作范围内。有时,滴答会立即返回,因为它没有什么可做的。

此外,您可能有中断服务例程,快速服务中断,将数据存储在一个地方,下一个滴答可以找到和处理它。

因此,在您的示例中,您将在主循环中调用一个xbee_tick()。它在串行接收缓冲区中查找数据,对其进行处理,然后返回到主循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29168279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档