Hello, I am using a nRF51822 chip to communicate with a sensor. The sensor continuously outputs its reading via UART every couple of seconds. This is what I am currently doing which works perfectly...... unless the sensor is bad, or not installed. Either of these functions will prevent the firmware from continuing to run, and essentially locks everything up.
I am using this to initialize the UART:
void UART_init( uint8_t pin_rx, uint8_t pin_tx )
{
uint32_t err_code;
const app_uart_comm_params_t comm_params =
{
pin_tx, //nRF51 RX
pin_rx, //nRF51 TX
2, //not used
3, //not used
APP_UART_FLOW_CONTROL_DISABLED,
false,
UART_BAUDRATE_BAUDRATE_Baud9600
};
APP_UART_FIFO_INIT(&comm_params,
UART_RX_BUF_SIZE,
UART_TX_BUF_SIZE,
uart_error_handle,
APP_IRQ_PRIORITY_LOW,
err_code);
APP_ERROR_CHECK(err_code);
}
And I use this to read the UART data:
void Read_string( char *resultPointer )
{
uint8_t charResponse;
char cToStr[2];
cToStr[1] = '\0';
for(int i = 0; i < RX_BUF_SIZE; i++)
{
while(app_uart_get(&charResponse) != NRF_SUCCESS);
cToStr[0] = charResponse;
strcat(resultPointer,cToStr);
if(charResponse == '\n'){ break; }
}
return;
}
Do you know of a good way, such as if I don't get a reading after X amount of time, then to just exit and try later? Or is there a better way of handling this? There are other firmware functions that I would like to continue running even if the sensor goes bad.
Thanks and any help or advice is greatly appreciated!