|
@@ -26,7 +26,7 @@
|
|
#define DHT_TOUT1 55
|
|
#define DHT_TOUT1 55
|
|
#define DHT_MAX_COUNT 41
|
|
#define DHT_MAX_COUNT 41
|
|
/* Timer2 settings */
|
|
/* Timer2 settings */
|
|
-#define TIMER2_HZ 252
|
|
|
|
|
|
+#define TIMER2_HZ 400
|
|
#define TIMER2_PRESCALER 1024
|
|
#define TIMER2_PRESCALER 1024
|
|
#define TIMER2_CS (1<<CS22 | 1<<CS21 | 1<<CS20)
|
|
#define TIMER2_CS (1<<CS22 | 1<<CS21 | 1<<CS20)
|
|
#define TIMER2_CNT (0x100 - (F_CPU / TIMER2_PRESCALER / TIMER2_HZ))
|
|
#define TIMER2_CNT (0x100 - (F_CPU / TIMER2_PRESCALER / TIMER2_HZ))
|
|
@@ -99,7 +99,7 @@ static void dhtProcess(void);
|
|
static void dhtEnd(void);
|
|
static void dhtEnd(void);
|
|
static void dhtTimeout(void);
|
|
static void dhtTimeout(void);
|
|
static void dhtNoAck(void);
|
|
static void dhtNoAck(void);
|
|
-static void dhtErrorCRC(void);
|
|
|
|
|
|
+//static void dhtErrorCRC(void);
|
|
void usart_putc (char send);
|
|
void usart_putc (char send);
|
|
void usart_puts (const char *send);
|
|
void usart_puts (const char *send);
|
|
|
|
|
|
@@ -297,7 +297,7 @@ static void dhtStart(void) {
|
|
}
|
|
}
|
|
|
|
|
|
static void dhtProcess(void) {
|
|
static void dhtProcess(void) {
|
|
- uint8_t cnt1, cnt2, buf, parity;
|
|
|
|
|
|
+ uint8_t cnt1, cnt2, buf;//, parity;
|
|
uint16_t tcnt_old;
|
|
uint16_t tcnt_old;
|
|
|
|
|
|
DHT_PIN_INPUT;
|
|
DHT_PIN_INPUT;
|
|
@@ -316,22 +316,22 @@ static void dhtProcess(void) {
|
|
RTOS_SetTask(dhtTimeout, 0, 0);
|
|
RTOS_SetTask(dhtTimeout, 0, 0);
|
|
}
|
|
}
|
|
// begin of data
|
|
// begin of data
|
|
- parity = 0;
|
|
|
|
- for (cnt1=0; cnt1<40; cnt1+=8) { // 0 8 16 24 32
|
|
|
|
|
|
+// parity = 0;
|
|
|
|
+ for (cnt1=0; cnt1<32; cnt1+=8) { // 0 8 16 24 32
|
|
buf = 0;
|
|
buf = 0;
|
|
for (cnt2=0; cnt2<8; cnt2++) {
|
|
for (cnt2=0; cnt2<8; cnt2++) {
|
|
buf <<= 1;
|
|
buf <<= 1;
|
|
|
|
+// cli();
|
|
// "0", начало периода
|
|
// "0", начало периода
|
|
while(bit_is_clear(PINB, PB0)); // ждём начало импульса
|
|
while(bit_is_clear(PINB, PB0)); // ждём начало импульса
|
|
- cli();
|
|
|
|
tcnt_old = TCNT1; // начало импульса
|
|
tcnt_old = TCNT1; // начало импульса
|
|
while(bit_is_set(PINB, PB0) && TCNT1<DHT_TIMEOUT); // ждём конец импульса
|
|
while(bit_is_set(PINB, PB0) && TCNT1<DHT_TIMEOUT); // ждём конец импульса
|
|
if ((TCNT1 - tcnt_old) > 12) {
|
|
if ((TCNT1 - tcnt_old) > 12) {
|
|
buf |= 1;
|
|
buf |= 1;
|
|
}
|
|
}
|
|
- sei();
|
|
|
|
|
|
+// sei();
|
|
}
|
|
}
|
|
- parity += buf;
|
|
|
|
|
|
+// parity += buf;
|
|
switch (cnt1) {
|
|
switch (cnt1) {
|
|
case 0:
|
|
case 0:
|
|
Humidity = buf << 8;
|
|
Humidity = buf << 8;
|
|
@@ -352,12 +352,12 @@ static void dhtProcess(void) {
|
|
RTOS_SetTask(dhtTimeout, 0, 0);
|
|
RTOS_SetTask(dhtTimeout, 0, 0);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+/*
|
|
if (parity != buf) {
|
|
if (parity != buf) {
|
|
dhtErrorCRC();
|
|
dhtErrorCRC();
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+*/
|
|
dhtData.Humidity = (uint8_t)((Humidity + 5) / 10);
|
|
dhtData.Humidity = (uint8_t)((Humidity + 5) / 10);
|
|
dhtData.Temperature = (uint8_t)((Temperature + 5) / 10);
|
|
dhtData.Temperature = (uint8_t)((Temperature + 5) / 10);
|
|
|
|
|
|
@@ -368,7 +368,7 @@ static void dhtEnd(void) {
|
|
/*uint8_t i, k;*/
|
|
/*uint8_t i, k;*/
|
|
char buffer[6];
|
|
char buffer[6];
|
|
|
|
|
|
- usart_puts("DHT22 timing data:\r\n");
|
|
|
|
|
|
+ usart_puts("DHT22 data:\r\n");
|
|
|
|
|
|
usart_puts("Humidity: ");
|
|
usart_puts("Humidity: ");
|
|
itoa(Humidity, buffer, 10);
|
|
itoa(Humidity, buffer, 10);
|
|
@@ -376,7 +376,8 @@ static void dhtEnd(void) {
|
|
usart_puts(" %/% ");
|
|
usart_puts(" %/% ");
|
|
itoa(dhtData.Humidity, buffer, 10);
|
|
itoa(dhtData.Humidity, buffer, 10);
|
|
usart_puts(buffer);
|
|
usart_puts(buffer);
|
|
- usart_puts(RETURN_NEWLINE);
|
|
|
|
|
|
+
|
|
|
|
+ usart_putc('\t');
|
|
|
|
|
|
usart_puts("Temperature: ");
|
|
usart_puts("Temperature: ");
|
|
itoa(Temperature, buffer, 10);
|
|
itoa(Temperature, buffer, 10);
|
|
@@ -412,7 +413,7 @@ static void dhtTimeout(void) {
|
|
usart_puts("DHT22 Timeout reached.\r\n");
|
|
usart_puts("DHT22 Timeout reached.\r\n");
|
|
dhtEnd();
|
|
dhtEnd();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+/*
|
|
static void dhtErrorCRC(void) {
|
|
static void dhtErrorCRC(void) {
|
|
char buffer[6];
|
|
char buffer[6];
|
|
|
|
|
|
@@ -428,7 +429,7 @@ static void dhtErrorCRC(void) {
|
|
usart_puts(buffer);
|
|
usart_puts(buffer);
|
|
usart_puts(RETURN_NEWLINE);
|
|
usart_puts(RETURN_NEWLINE);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+*/
|
|
/**
|
|
/**
|
|
* @brief Обработка кнопок.
|
|
* @brief Обработка кнопок.
|
|
* @param : None
|
|
* @param : None
|