I’m using a Seeed Xiao BL:E Sense board with nrf52840 on it. I observed the 5 millisecond delay being off a lot. It was often > 8 ms and changed each time. I used both delayMicroseconds() and nrf_delay_us(). The behaviors were the same. I also tried to disable interrupts just in case, but got no effect. BTW, I measured the delay time by sending pulses through a debug pin.
#define DBG_PIN 0
void DBG_pulse(void) {
digitalWrite(DBG_PIN, HIGH);
digitalWrite(DBG_PIN, LOW);
return;
}
void onBLEWrite(uint8_t* buffer, size_t size) {
...
noInterrupts();
DBG_pulse();
delayMicroseconds(5000);
//nrf_delay_us(5000);
DBG_pulse();
interrupts();
...
}
I noticed if I set the delay to under 3 ms, it seemed working fine. But if I set a 3 ms delay followed by a 2 ms delay, the actually delay went back to > 8 ms. Does someone have any ideas?