diff options
Diffstat (limited to 'drivers/dht/dht.c')
-rw-r--r-- | drivers/dht/dht.c | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/drivers/dht/dht.c b/drivers/dht/dht.c index 04c590e0ce..95b0744510 100644 --- a/drivers/dht/dht.c +++ b/drivers/dht/dht.c @@ -29,24 +29,9 @@ #include "py/runtime.h" #include "py/mperrno.h" #include "py/mphal.h" +#include "extmod/machine_pulse.h" #include "drivers/dht/dht.h" -STATIC mp_uint_t time_pulse_us(mp_hal_pin_obj_t pin, int pulse_value, mp_uint_t timeout) { - mp_uint_t start = mp_hal_ticks_us(); - while (mp_hal_pin_read(pin) != pulse_value) { - if ((mp_uint_t)(mp_hal_ticks_us() - start) >= timeout) { - return (mp_uint_t)-1; - } - } - start = mp_hal_ticks_us(); - while (mp_hal_pin_read(pin) == pulse_value) { - if ((mp_uint_t)(mp_hal_ticks_us() - start) >= timeout) { - return (mp_uint_t)-1; - } - } - return mp_hal_ticks_us() - start; -} - STATIC mp_obj_t dht_readinto(mp_obj_t pin_in, mp_obj_t buf_in) { mp_hal_pin_obj_t pin = mp_hal_get_pin_obj(pin_in); mp_hal_pin_open_drain(pin); @@ -79,7 +64,7 @@ STATIC mp_obj_t dht_readinto(mp_obj_t pin_in, mp_obj_t buf_in) { } // time pulse, should be 80us - ticks = time_pulse_us(pin, 1, 150); + ticks = machine_time_pulse_us(pin, 1, 150); if (ticks == (mp_uint_t)-1) { goto timeout; } @@ -87,7 +72,7 @@ STATIC mp_obj_t dht_readinto(mp_obj_t pin_in, mp_obj_t buf_in) { // time 40 pulses for data (either 26us or 70us) uint8_t *buf = bufinfo.buf; for (int i = 0; i < 40; ++i) { - ticks = time_pulse_us(pin, 1, 100); + ticks = machine_time_pulse_us(pin, 1, 100); if (ticks == (mp_uint_t)-1) { goto timeout; } |