极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: yxwzyyk

nRF24L01软实现Spi,支持中断

[复制链接]
发表于 2013-10-21 15:51:29 | 显示全部楼层
maxims 发表于 2013-10-21 10:47
leonardo作接收端,请用非中断方式!中断方式我估计引脚对不上或中断工作方式与uno不一样!
中断是引发了 ...

谢谢!我先试试!
回复 支持 反对

使用道具 举报

发表于 2013-10-23 11:19:01 | 显示全部楼层
yxwzyyk 发表于 2013-10-15 07:10
不是必须,可以不使用中断,需要的时候调用dataready()检测是否有数据到来就可以了,中断只是方便点我写 ...

我用读取寄存器值得方式接收数据,怎么不能显示buf中的数据?
还望指点!

#include "NRF24L01.h"

#define RX_NAME  "32899"

/* 声明nRF24L01 */
nRF24L01 nrf24;

/* 建立接收数据缓存,初始化为0 */
char buf;

void setup()
{
  Serial.begin(9600);            
  nrf24.init();
  nrf24.payload = 1;
  nrf24.setRADDR(RX_NAME);
  nrf24.config();

  /* 设定中断 */
  //        attachInterrupt(0, readData, LOW) ;
}

void loop()
{
  //        Serial.println("Wait...");
  //        delay(1000);

  //        Serial.println("Interrupt!");
  if(nrf24.dataReady())//确认接收
  {
    Serial.println("Receiving the data!");
    nrf24.getData(&buf);//接收数据
    Serial.print("Data -> ");
    Serial.print(buf);
    Serial.println(" ");
  }
  else
  {
    Serial.println("NULL!");
  }
}

/*void readData (void) {
        Serial.println("Interrupt!");
        if(nrf24.dataReady()){
                Serial.println("Receiving the data!");
                nrf24.getData(&buf);
                Serial.print("Data -> ");
                Serial.print(buf);
                Serial.println(" ");
        } else {
                Serial.println("NULL!");
        }
}*/
回复 支持 反对

使用道具 举报

发表于 2013-10-23 11:22:35 | 显示全部楼层
human2010 发表于 2013-10-23 11:19
我用读取寄存器值得方式接收数据,怎么不能显示buf中的数据?
还望指点!

补充说明,通过串口能看到“Receiving the data!”和"Data -> ",这可以说明接收成功了,不知怎么就没数据?
回复 支持 反对

使用道具 举报

发表于 2013-10-23 11:30:32 | 显示全部楼层
maxims 发表于 2013-10-21 10:47
leonardo作接收端,请用非中断方式!中断方式我估计引脚对不上或中断工作方式与uno不一样!
中断是引发了 ...

根据您的提示,昨天再次用读寄存器值得方式,试了一下yxwzyyk提供的实例,能接收到信号,但数据丢失了。
还在努力中!!!(中断方式结果完全失败,MEGA2560中断0接口为2号引脚,LEONARDO为3号引脚,UNO为2号引脚)
回复 支持 反对

使用道具 举报

发表于 2013-10-23 12:04:31 | 显示全部楼层
感谢楼主!
回复 支持 反对

使用道具 举报

发表于 2013-10-23 22:24:10 | 显示全部楼层
本帖最后由 maxims 于 2013-10-23 22:27 编辑
human2010 发表于 2013-10-23 11:30
根据您的提示,昨天再次用读寄存器值得方式,试了一下yxwzyyk提供的实例,能接收到信号,但数据丢失了。
...


刚才完整的进行了测试,Leonardo作为接收端,UNO作为发射端,是没有问题的。用的是楼主的代码
回复 支持 反对

使用道具 举报

发表于 2013-10-23 22:54:00 | 显示全部楼层
maxims 发表于 2013-10-23 22:24
刚才完整的进行了测试,Leonardo作为接收端,UNO作为发射端,是没有问题的。用的是楼主的代码

我刚试了显示结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-10-23 22:56:03 | 显示全部楼层
MAGE2560做发射,2号引脚接IRQ
Leonardo做接收,3号引脚接IRQ
用的楼主原装程序
回复 支持 反对

使用道具 举报

发表于 2013-10-23 22:56:57 | 显示全部楼层
我已经快无语了!悲剧啊!
回复 支持 反对

使用道具 举报

发表于 2013-10-23 23:12:23 | 显示全部楼层
human2010 发表于 2013-10-23 22:56
我已经快无语了!悲剧啊!

看样子是你的发送端有问题。
我短信你,细聊 看
回复 支持 反对

使用道具 举报

发表于 2013-11-6 00:42:22 | 显示全部楼层
请问接收端是Mega2560和发射端是pro mini的IRQ应该怎样接线,我现在是Mega2560接2和pro mini接2,接收端老是显示“Wait...",发射端老是显示"Sending..."   "Failed to send!".
回复 支持 反对

使用道具 举报

发表于 2013-11-6 16:27:13 来自手机 | 显示全部楼层
vinsonxp 发表于 2013-11-6 00:42
请问接收端是Mega2560和发射端是pro mini的IRQ应该怎样接线,我现在是Mega2560接2和pro mini接2,接收端老是 ...

再去研究一下你的硬件的端口,是不是这么用的!
回复 支持 反对

使用道具 举报

发表于 2013-12-5 19:53:40 | 显示全部楼层
测试通过,,但是只会传文本如a=abc,可以告诉我如何传数字吗如a=128
回复 支持 反对

使用道具 举报

发表于 2013-12-9 19:38:15 | 显示全部楼层
为什么我传输2,3+个字符后就不动了呢
回复 支持 反对

使用道具 举报

发表于 2013-12-11 13:37:37 | 显示全部楼层
我在uno上用nRF24L01需要占用8、9、10、11、12、13一共六个数字接口,其中还有9、10、11这三个PWM口。实现了通信以后我的uno接口被占去一半,只剩下三个pwm接口,我不够用呀,有什么办法能省下pwm接口吗?
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-4 12:48 , Processed in 0.045265 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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