summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Ruben Bakke <glennbakke@gmail.com>2018-04-12 23:14:10 +0200
committerDamien George <damien.p.george@gmail.com>2018-07-18 17:12:26 +1000
commit24258cf0b9ab903d506b894b011473075aedce96 (patch)
tree63f573af48a0cca8c8f9c79463d26c66d7e22ea7
parent63c748bfcc09d05564ea66f79d63f313e9554d45 (diff)
nrf: Return immediatly from mp_hal_delay_us if 0us is given
After nrfx 1.0.0 a new macro was introduced to do a common hardware timeout. The macro function triggers a counter of retries or a timeout in us. However, in many cases, like in nrfx_adc.c the timeout value is set to 0, leading to a infinite loop in mp_hal_delay_us. This patch prevents this from happening. Path of error: nrfx_adc.c -> NRFX_WAIT_FOR -> NRFX_DELAY_US -> mp_hal_delay_us.
-rw-r--r--ports/nrf/mphalport.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ports/nrf/mphalport.c b/ports/nrf/mphalport.c
index fc6882d79..e0f42ac58 100644
--- a/ports/nrf/mphalport.c
+++ b/ports/nrf/mphalport.c
@@ -82,6 +82,10 @@ void mp_hal_stdout_tx_str(const char *str) {
void mp_hal_delay_us(mp_uint_t us)
{
+ if (us == 0) {
+ return;
+ }
+
register uint32_t delay __ASM ("r0") = us;
__ASM volatile (
#ifdef NRF51