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 }