Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00036 
00037 
00038 
00039 
00040 #ifdef MCU_NRF24LE1
00041 #include "nrf24le1.h"
00042 #include "hal_clk.h"
00043 #endif
00044 
00045 #ifdef MCU_NRF24LU1P
00046 #include "nrf24lu1p.h"
00047 #endif
00048 
00049 #include <stdint.h>
00050 #include <stdbool.h>
00051 #include "hal_nrf.h"
00052 #ifndef MCU_NRF24LU1P
00053 #include "hal_clk.h" 
00054 #endif
00055 
00056 
00057 static bool volatile radio_busy;
00058 
00059 void main(void)
00060 {
00061   uint8_t payload[3];
00062 
00063   #ifdef MCU_NRF24LE1
00064   while(hal_clk_get_16m_source() != HAL_CLK_XOSC16M)
00065   {
00066     
00067   }
00068   #endif
00069 
00070   #ifdef MCU_NRF24LU1P
00071   
00072   RFCTL = 0x10U;
00073   #endif
00074 
00075   
00076   RFCKEN = 1U;
00077 
00078   
00079   RF = 1U;
00080 
00081   
00082   EA = 1U;
00083 
00084   
00085   hal_nrf_set_power_mode(HAL_NRF_PWR_UP);
00086 
00087   for(;;)
00088   {
00089     
00090     payload[0] = ~P0;
00091 
00092     
00093     hal_nrf_write_tx_payload(payload, 3U);
00094 
00095     
00096     CE_PULSE();
00097 
00098     radio_busy = true;
00099     
00100     while (radio_busy)
00101     {
00102     }
00103   }
00104 }
00105 
00106 
00107 NRF_ISR()
00108 {
00109   uint8_t irq_flags;
00110 
00111   
00112   irq_flags = hal_nrf_get_clear_irq_flags();
00113 
00114   switch(irq_flags)
00115   {
00116     
00117     case (1 << (uint8_t)HAL_NRF_TX_DS):
00118       radio_busy = false;
00119       
00120       break;
00121     
00122     case (1 << (uint8_t)HAL_NRF_MAX_RT):
00123       
00124       
00125       
00126       
00127       hal_nrf_flush_tx();
00128       radio_busy = false;
00129       break;
00130     default:
00131       break;
00132   }
00133 }