浏览代码

Так тоже работает.

Vladimir N. Shilov 5 年之前
父节点
当前提交
75270fd88c
共有 1 个文件被更改,包括 15 次插入14 次删除
  1. 15 14
      src/main.c

+ 15 - 14
src/main.c

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