欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 中斷方式實現nRF24L01無線數據接收 [打印本頁]

作者: yantao    時間: 2010-6-1 22:44
標題: 中斷方式實現nRF24L01無線數據接收

hi

 

當前在用nRF24L01進行無線數據通信的解決方案中,在接收方是通過無限循環來接收數據的,這樣無疑會降低程序的運行效率,增大最終系統的功耗。

 

能不能將nRF24L01接收端改為中斷出發方式,當有數據產生中斷觸發時,在運行接收程序,接收數據。插入P3.2那根線應該就是中斷源,不知我分析得對不對?還有就是把無線接收程序寫為中斷服務程序是否可行?


作者: admin    時間: 2010-6-2 00:32

   完全可以,用中斷來喚醒,然后用中斷函數來接受數據,接受完畢后再讓24l01 進入休眠模式.最大限度的降低功耗,只不過網上這方面的例子很少

 

void ISR_int1(void) interrupt 0    //外部中斷0
{
 sta=nRF24L01_SPI_Read(STATUS);   //讀寄存器STATUS狀態
 if(RX_DR){                 //接收數據產生中斷
  nRF24L01_SPI_Read_Buf(RD_RX_PLOAD,rx_buf,REBACK_WIDTH);//從FIFO中讀接收數據
  flag_r=1;             //接收到數據標志
 }
 if(TX_DS){             //發送完成
  flag_t=1;             //發送完成標志
 }
 if(MAX_RT){             //沒有應答
   nRF24L01_SPI_RW_Reg(FLUSH_TX,0); //清發送FIFO       ?  
  flag_e=1;              //出錯標志 
 }
 // 清RX_DR 或 TX_DS 或 MAX_RT 中斷標志位
 nRF24L01_SPI_RW_Reg(WRITE_REG+STATUS,sta);
   nRF24L01_Sleep_Mode(0); //休眠
}
你可參考一下這種方式 來修改原來的程序.

作者: hfbjjs    時間: 2011-1-12 13:27

能不能將nRF24L01接收端改為中斷出發方式-----觸發方式!

不管你用什么方式,千萬注意一個關鍵問題:

無線電接收是無時無刻的現象,不管是不是你發射的.-------就是只要你的接收電路一旦開始工作,不管是不是發射也工作了,都會接收到無數多的無線電信號.---你如果使用中斷,也會不停進入中斷的!

接收是否正確,實際是依靠你程序的判斷來決定是否接收有效.-----不停中斷,不停否認!

所以啊!中斷方式和輪詢方式,都要有間隔時間,否則其它子程序就不能運行了,或者很少機會運行了!

這也絕非 nRF24L01 所有,其它無線數據傳輸都會遇見這個問題.

你有手機吧?它就不停接到信號,只不過不是你的號碼就忽略了!

僅供參考!






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1