I seem to be getting odd behavior of the UARTE0. Actually, this same behavior happens with the standard UART0.
I have a loop that sends a two byte message every 1 second. But actually, the message is sent at random times.
When the message is sent, it is correct data and bit timing is as expected with 9600 baudrate. I checked the loop
by illuminating an LED and it is 1 second as expected. I've studied the nRF52810 data sheet and it seems like I
have all the configuration registers set properly. Hopefully someone has some tips.
void uart_init( void ) { NRF_UARTE0->PSEL.RXD = TESTRX; /// Set UARTE0 Rx pin NRF_UARTE0->PSEL.TXD = TESTTX; /// Set UARTE0 Tx pin NRF_UARTE0->BAUDRATE = UARTBAUD; /// Set UARTE0 baudrate NRF_UARTE0->TXD.PTR = (uint32_t)&uarte0TxBuffer; /// Assign UARTE0 Tx buffer NRF_UARTE0->RXD.PTR = (uint32_t)&uarte0RxBuffer; /// Assign UARTE0 Rx buffer NRF_UARTE0->TXD.MAXCNT = TXBUFMAX; /// Set Tx buffer max size to 8 bytes NRF_UARTE0->RXD.MAXCNT = RXBUFMAX; /// Set Rx buffer max size to 8 bytes NRF_UARTE0->ENABLE = 0x08; /// Enable UART0 nrf_delay_ms(1); } while (nrf_gpio_pin_read(TESTMODE) == LOW) { // do stuff uarte0TxBuffer[0] = 0xDF; uarte0TxBuffer[1] = 0xA2; NRF_UARTE0->TASKS_STARTTX = true; nrf_delay_ms(1000); }