完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
nrf24l01 设置为发送模式,读取状态寄存器status的值为0x3e。相当于0011 1110,表明发送完成中断和发送超时中断同时触发了,这是什么原因啊,程序在这里感觉就是跑死了。
现在正在测试的方法是:一发多收,一个主机0频道0通道发送信息,两个或多个从机在同一个频道0同一个通道0上接收信息,均开启了自动应答,但是所有的从机却都能收到主机的信息!这是第一步。然后,两个或多个从机在同一个频道0同一个通道0上,同时的给一个主机发送信息。相当于多发一收。这是第二步,也都开启了自动应答。整体测试,先第一步后第二步。 这种情况是不是有可能会跑死啊,请问跑死后添加什么代码会使之自动返回。不跑死就行。 |
|
相关推荐
3个回答
|
|
没搞过,帮顶。。。。
|
|
|
|
谢谢帮原子哥帮顶,目前知道的情况是:当主机在接受状态,接收到其中一个从机的信号后,本身的status中的RX_DR位置1 ,如果在主机切换到发送状态之前,又有从机从机发来信号,主机会将发来的数据存到寄存器中,并且本身的status中的RX_DR位重新置1。这时,如果切换到发送状态发送数据并且发送完成,status中寄存器TX_OK(忘了怎么写了,就是0x20)位置1.而此时,接收标志位在之前已经置1 ,读取status值时,会出现两个中断位为1,低4位为0的情况。这时,程序进行至if(sta &TX_OK),就会发现,虽然有两个标志位,且后四位代表power_up的位均为0,但是条件仍然成立,仍会返回正确的值。这种情况会对我们后面的传输过程有很大影响,我们测试发现,这种情况有可能使我们的程序跑死。目前的解决方法是:增加if语句的严谨性,将if(sta &TX_OK)扩充为:if((sta &TX_OK) &&((sta &RX_DR)==0)&&((sta &MAX_TX)==0)&&(sta &0x20)),简单来说就是只有一个中断标志位时,且power_up位正常为1时,程序才能进行下去。还没有想到更好的办法 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2547 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2332 浏览 5 评论
3161 浏览 3 评论
2804 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2762 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
611浏览 1评论
857浏览 0评论
973浏览 0评论
625浏览 0评论
453浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 08:49 , Processed in 1.389465 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号