diff options
| author | Glenn Ruben Bakke <glennbakke@gmail.com> | 2018-04-12 23:14:10 +0200 |
|---|---|---|
| committer | Damien George <damien.p.george@gmail.com> | 2018-07-18 17:12:26 +1000 |
| commit | 24258cf0b9ab903d506b894b011473075aedce96 (patch) | |
| tree | 63f573af48a0cca8c8f9c79463d26c66d7e22ea7 | |
| parent | 63c748bfcc09d05564ea66f79d63f313e9554d45 (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.c | 4 |
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 |
