I am trying to make the nRF24LE1 as a sensor node. So I want to configure it to work as a receiver/transmitter and simultaneously use the ADC and UART. But the moment I added code to set it as a receiver the ADC and UART stopped working. Here is my code. Please let me know what is wrong with the code
#include "nrf24le1.h" // I/O header file for NRF24LE1 #include "hal_clk.h" // library containing clock functions #include <stdint.h> // standard integers library #include "hal_nrf.h" // library containing wireless communication functions #include <Nordic/reg24le1.h> //#include <reg24le1.h> #include "nrf24le1.h" #include "hal_adc.h" #include <intrins.h> #include "hal_uart.h" // library containing serial communication functions #include "hal_delay.h" // header file containing delay functions #include <stdio.h> #include <string.h> #include <math.h> #include <stdint.h> // standard integers library #include "hal_nrf.h" // library containing wireless communication functions #include <stdbool.h> // standard boolean library // Global variables uint8_t payload[3]; // payload to be received int val = 0 ,val1 = 0; void delay(unsigned int us) { while(us--) { _nop_(); } } // Repeated putchar to print a string void putstring(char *s) { while(*s != 0) hal_uart_putchar(*s++); //hal_uart_putchar(val); } void tostring(char str[], int num) { int i, rem, len = 0, n; n = num; while (n != 0) { len++; n /= 10; } for (i = 0; i < len; i++) { rem = num % 10; num = num / 10; str[len - (i + 1)] = rem + '0'; } str[len] = '\0'; } // main function void main() { char str[10];int num=0, result=0; uint8_t payload[1]; // payload to be transmitted P0DIR = 0xf0; // set P03 as output and P04 as input; // Initializes the UART hal_uart_init(UART_BAUD_9K6); // Enable global interrupts EA = 1; P1DIR = 0; P10 = 0; // Configure ADC hal_adc_set_input_channel(HAL_ADC_INP_AIN6); hal_adc_set_reference(HAL_ADC_REF_VDD); hal_adc_set_input_mode(HAL_ADC_SINGLE); hal_adc_set_conversion_mode(HAL_ADC_CONTINOUS); hal_adc_set_sampling_rate(HAL_ADC_2KSPS); hal_adc_set_resolution(HAL_ADC_RES_8BIT); hal_adc_set_data_just(HAL_ADC_JUST_RIGHT); #ifdef MCU_NRF24LE1 while(hal_clk_get_16m_source() != HAL_CLK_XOSC16M) { putstring("stuck here"); // Wait until 16 MHz crystal oscillator is running } #endif #ifdef MCU_NRF24LU1P // Enable radio SPI RFCTL = 0x10; #endif // Set P0 as output //P0DIR = 0; // Enable the radio clock RFCKEN = 1; // Enable RF interrupt RF = 1; // Enable global interrupt //EA = 1; // Configure radio as primary receiver (PTX) hal_nrf_set_operation_mode(HAL_NRF_PRX); // Set payload width to 3 bytes hal_nrf_set_rx_payload_width((int)HAL_NRF_PIPE0, 3); // Power up radio hal_nrf_set_power_mode(HAL_NRF_PWR_UP); // Enable receiver CE_HIGH(); // Enable MISC interrupts to enable ADC interrupt MISC = 1; // Enable global interrupts //EA = 1; // Start ADC conversion hal_adc_start(); //infinite loop while(1) { // Print "Hello Everyone" putstring("\nADC value is ") ; //delay_ms(1000); // delay of 1sec tostring(str,val); putstring(str); delay_ms(100); } } // ADC (MISC) interrupt ADC_ISR() { val = hal_adc_read_LSB(); //P10 = 1; /*delay(1000); delay(val * 4); P10 = 0; delay(19000 - val * 4);*/ } // Radio interrupt NRF_ISR() { uint8_t irq_flags; // Read and clear IRQ flags from radio irq_flags = hal_nrf_get_clear_irq_flags(); // If data received if((irq_flags & (1<<(uint8_t)HAL_NRF_RX_DR)) > 0) { // Read payload while(!hal_nrf_rx_fifo_empty()) { putstring("I am here 1\n"); hal_nrf_read_rx_payload(payload); } putstring("I am here 2\n"); // Write received payload[0] to port 0 val1 = payload[0]; } putstring("I am here 3\n"); }