aboutsummaryrefslogtreecommitdiff
path: root/sensor_dht22.h
blob: 0776b779c71cf960c1827dbef2088c1d0a6b41bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>

#include "tasks.h"
#include "timer.h"

#ifndef _DHT22_H_
#define _DHT22_H_

struct dht22_value {
    uint8_t integral;
    uint8_t decimal;
};

struct dht22_port {
    volatile uint8_t *DDR;  // Address of DDR register
    volatile uint8_t *PORT; // Address of PORT register
    volatile uint8_t *PIN;  // Address of PIN register
    uint8_t MASK;   // _BV() of index of port
    volatile uint8_t *PCMSK;    // Address of relevant PCMSK register
    uint8_t PCMSK_MASK; // _BV() of index of PCMSK
};

extern const struct dht22_port dht22_ports[];

/*
 * Initialize port for sensor
 */
void dht22_init(uint8_t port);
/*
 * Read values from dht22
 * rh - relative
 * t  - temperature
 */
int8_t dht22_read(uint8_t portindex, struct dht22_value *rh,
                  struct dht22_value *t);

#endif /* _DHT22_H_ */