Hi
I have bought your nRF24LE1 development kit along with nRFgo starter kit.
I am using this kit for developing a wireless application. My project involves the following things I need to convert analog signals to digital and transmit them to the receiver. At the receiver the data is received and is sent to a serial port so that it can be connected to a computer to view the signals transmitted. I have developed programs for the transmitter and the receiver using the SDK provided with the kit. But I dont know whether there is a transmission or not. I am using the keil compiler for program development and nRFstudio for flashing the microcontroller. I am attaching the codes I have written. Please take a look at them and tell me what is wrong with them.
this is the program for the transmitter side
#include <Nordic\reg24le1.h> #include <stdint.h> #include "hal_adc.h" #include "hal_nrf.h" #include "hal_nrf_hw.h" code const uint8_t address[HAL_NRF_AW_5BYTES] = {0x22,0x33,0x44,0x55,0x01}; void radio_int(void); void main() { uint8_t xdata rf_payload[1];
hal_adc_set_input_channel(HAL_ADC_INP_AIN1); //selecting channel 1 hal_adc_set_reference(HAL_ADC_REF_VDD); // reference VDD // hal_adc_set_input_mode(HAL_ADC_DIFF_AIN2); // differential input hal_adc_set_conversion_mode(HAL_ADC_CONTINOUS); //continuous conversion mode hal_adc_set_sampling_rate(HAL_ADC_2KSPS); //sampling rate hal_adc_set_acq_window(HAL_ADC_AQW_12US);//acquistion time hal_adc_set_resolution(HAL_ADC_RES_8BIT); //resolution hal_adc_set_data_just(HAL_ADC_JUST_RIGHT);//Justification
RFCKEN = 1; RF = 1; EA = 1;
CE_LOW();
while(1) { hal_adc_start(); while(hal_adc_busy()); rf_payload[0] = hal_adc_read_LSB(); //rf_payload[1] = hal_adc_read_LSB();
hal_nrf_write_tx_payload(rf_payload, 1);
CE_PULSE();
delay_10ms();
} }
void radio_int(void) { hal_nrf_enable_ack_payload(true); // Enable dynamic ack hal_nrf_enable_dynamic_payload(true); // Enable dynamic payload hal_nrf_setup_dynamic_payload(0xFF); // All pipes uses dynamic ack.
hal_nrf_close_pipe(HAL_NRF_ALL); // First close all radio pipes // Pipe 0 and 1 open by default hal_nrf_open_pipe(HAL_NRF_PIPE0, true); // Open pipe0, with autoack
hal_nrf_set_crc_mode(HAL_NRF_CRC_16BIT); // Operates in 16bits CRC mode hal_nrf_set_auto_retr(15, 250); // 250 µs delay, 15 retransmits
hal_nrf_set_address_width(HAL_NRF_AW_5BYTES); // 5 bytes address width hal_nrf_set_address(HAL_NRF_TX, address); // Set device's addresses hal_nrf_set_address(HAL_NRF_PIPE0, address); // Pipe0 used for auto ACK
hal_nrf_set_operation_mode(HAL_NRF_PTX); hal_nrf_set_power_mode(HAL_NRF_PWR_UP); hal_nrf_set_output_power(HAL_NRF_0DBM); hal_nrf_set_rf_channel(40); hal_nrf_set_datarate(HAL_NRF_1MBPS); } void rf_irq() interrupt 0//INTERRUPT_RFIRQ { hal_nrf_get_clear_irq_flags(); }
program for the receiver
#include <Nordic\reg24le1.h> #include <stdint.h>
#include "hal_nrf.h" #include "hal_nrf_hw.h" #include "hal_uart.h"
uint8_t rf_status; uint8_t xdata rf_payload[1]; uint8_t temp_data; bool hal_nrf_tx_complete(void); code const uint8_t address[HAL_NRF_AW_5BYTES] = {0x22,0x33,0x44,0x55,0x01};
void main() {
RFCKEN = 1; RF = 1; EA = 1; hal_uart_init(UART_BAUD_9K6); CE_LOW(); // Disable radio
hal_nrf_enable_ack_payload(true); // Enable dynamic ack hal_nrf_enable_dynamic_payload(true); // Enable dynamic payload hal_nrf_setup_dynamic_payload(0xFF); // All pipes uses dynamic ack.
hal_nrf_set_operation_mode(HAL_NRF_PRX);
hal_nrf_set_datarate(HAL_NRF_1MBPS); hal_nrf_set_rf_channel(40); hal_nrf_set_power_mode(HAL_NRF_PWR_UP); hal_nrf_set_rx_payload_width(HAL_NRF_PIPE0, 1);
RFCE = 1;
while(1) { } }
void rf_irq() interrupt 2 { rf_status = hal_nrf_get_clear_irq_flags();
switch( rf_status ) { case (1<<HAL_NRF_RX_DR): hal_nrf_read_rx_payload(rf_payload); temp_data = rf_payload[0]; P0DIR = 0xDF; hal_uart_putchar(temp_data); if(hal_nrf_tx_complete()) { TI0 = 0; } break;
case (1<<HAL_NRF_TX_DS): break;
case (1<<HAL_NRF_MAX_RT): break; } }