ISR(TIMER1_CAPT_vect){ TCNT1 = 0; dht_save_time_id++; if ( dht_save_time_id > 3 ) { dt[dtcnt] = ICR1<<8; dtcnt++; if ( ICR1<1500 ) { data[dNum] &= ~(1<= 65) { dht_en_timer =0; dht_done = false; dtcnt=0; interrupt_flag = 1; dht_check_act = true; DHT_DDR |= (1 << DHT_BIT); // Пин как выход DHT_PORT |= (1 << DHT_BIT); // Выход HIGH dht_save_time_id = 0; } } // Прерывание таймера ISR(TIMER1_COMPA_vect) { TCNT1 = 0; dht_check_act = true; TCCR1B = 0b00000000; if ( interrupt_flag < 3 ) { interrupt_flag++; } } // Установка таймера void setup_timer() { // Настраиваем таймер 1 в режиме CTC TCCR0B = 0b00000101; // Устанавливаем значение сравнения для частоты 1 Гц OCR0A = 250; // Разрешаем прерывание сравнения A TIMSK0 |= (1 << OCIE0A); // Настраиваем таймер 1 в режиме CTC TCCR1A = 0b00000000; TCCR1B = 0b00000000; // Устанавливаем значение сравнения для частоты 1 Гц OCR1A = 250; // Разрешаем прерывание сравнения A TIMSK1 = 0b00100010; }