野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14621|回复: 3

NRF24L01中断接收会死循环,求解(20141027已解决)

[复制链接]
发表于 2014-10-25 11:34:34 | 显示全部楼层 |阅读模式
本帖最后由 Tao8 于 2014-10-28 12:13 编辑

火哥,使用你的ISO板,测试无线NRF24L01,你教程提供的方法是主程序查询处理,包括查询发送或者查询接收处理。但是这样子比较消耗MCU资源file:///C:\Users\TAOS\AppData\Roaming\Tencent\Users\404777092\QQ\WinTemp\RichOle\}4ET}L2Z)XAS93XKXTZHX%9.jpg。后来我就改造为主程序顺序执行发送功能,即如下图1,中断接收处理。
NRF_SendData()这个函数就是控制NRF24L01发送数据的。
我现在遇到奇怪现象是
1、如果在主程序上不加延时处理,主程序运行一次循环大约1ms,主程序循环一次,NRF24L01发送一次数据的话,接收端几乎是一上电就进入了接收中断,然后中断死循环(解释:中断死循环,我指的是中断正常进入处理,执行完中断程序后,又马上再次中断,一直如此)
2、接收端一上电就是断死循环,我就怀疑是发送端发送太快,太频繁,于是在主程序上加上100ms延时(测试下使用,正常程序时延时100ms是个灾难),经过这样处理后,接收端不会一上电就中断死循环,但是过一段时间后,也同样会进入中断死循环。而且这个时间间隔与主程序上的延时有一定的关系,那就是主程序延时时间越长,接收端上电正常工作到进入中断死循环状态时间也越长。我延时100ms,接收端上电工作到进入中断死循环状态时间约是3-5秒。

问:为什么会出现这样奇怪的现象,查找问题原因要从哪个方面入手,要怎样解决这样的问题???

file:///C:\Users\TAOS\AppData\Roaming\Tencent\Users\404777092\QQ\WinTemp\RichOle\}4ET}L2Z)XAS93XKXTZHX%9.jpg

图2 中断处理程序

图2 中断处理程序

图1,发送程序

图1,发送程序
回复

使用道具 举报

发表于 2014-10-25 13:01:43 | 显示全部楼层
沙发,可惜我才走到KEIL安装这,而且还解决不了。哎,楼主好运
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-28 09:23:18 | 显示全部楼层
问题原因找到了, 原来是以前刚开始搞NRF时,改造过与教程不一样的底层驱动,导致出现莫名其妙的问题,问题原因如图1,不能注释NRF_CE_LOW();即不能//NRF_CE_LOW();这样,否则就会出现我这样的奇怪问题。

问题原因

问题原因
回复 支持 反对

使用道具 举报

发表于 2016-5-7 15:24:27 | 显示全部楼层
NRF_CE_LOW();这个是SPI使能啊,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 21:37 , Processed in 0.038662 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表