1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

drivers: dht: adapt to xtimer

This commit is contained in:
Kaspar Schleiser 2015-07-30 15:58:43 +02:00
parent 7d2286e3ec
commit ada06e9d22
2 changed files with 11 additions and 7 deletions

View File

@ -341,3 +341,7 @@ endif
ifneq (,$(filter srf02,$(USEMODULE)))
USEMODULE += xtimer
endif
ifneq (,$(filter dht,$(USEMODULE)))
USEMODULE += xtimer
endif

View File

@ -23,7 +23,7 @@
#include <stdint.h>
#include "hwtimer.h"
#include "xtimer.h"
#include "timex.h"
#include "periph/gpio.h"
@ -79,9 +79,9 @@ static void dht_read_data(gpio_t dev, uint32_t *data, uint8_t *checksum)
{
/* send init signal to device */
gpio_clear(dev);
hwtimer_wait(HWTIMER_TICKS(20 * MS_IN_USEC));
xtimer_usleep(20 * MS_IN_USEC);
gpio_set(dev);
hwtimer_wait(HWTIMER_TICKS(40));
xtimer_usleep(40);
/* sync on device */
gpio_init(dev, GPIO_DIR_IN, GPIO_PULLUP);
@ -101,14 +101,14 @@ static void dht_read_data(gpio_t dev, uint32_t *data, uint8_t *checksum)
we must not shift the last bit */
/* wait for start of bit */
while (!gpio_read(dev)) ;
unsigned long start = hwtimer_now();
unsigned long start = xtimer_now();
/* wait for end of bit */
while (gpio_read(dev)) ;
/* calculate bit length (long 1, short 0) */
unsigned long stop = hwtimer_now();
unsigned long stop = xtimer_now();
/* compensate for overflow if needed */
if (stop < start) {
stop = HWTIMER_MAXTICKS - stop;
stop = UINT32_MAX - stop;
start = 0;
}
if ((stop - start) > 40) {
@ -143,7 +143,7 @@ int dht_init(dht_t *dev, dht_type_t type, gpio_t gpio)
}
gpio_set(gpio);
hwtimer_wait(HWTIMER_TICKS(2000 * MS_IN_USEC));
xtimer_usleep(2000 * MS_IN_USEC);
DEBUG("dht_init: success\n");
return 0;