Добавить timers.h

This commit is contained in:
Артём Новиков 2024-02-29 10:33:29 +00:00
parent 9703f5efc0
commit 40bd72bc4d

83
timers.h Normal file
View File

@ -0,0 +1,83 @@
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<<dPos);
} // 0
else
{
data[dNum] |= (1<<dPos);
} // 1
dPos--;
if ( dPos < 0)
{
dPos=7; dNum++;
}
}
if ( dht_save_time_id == 42 )
{
interrupt_flag++;
dht_check_act = true;
dht_done = true;
DHT_DDR |= (1 << DHT_BIT); // Пин как выход
DHT_PORT |= (1 << DHT_BIT); // Выход HIGH
}
}
// Прерывание таймера
ISR(TIMER0_COMPA_vect)
{
TCNT0 = 0;
dht_en_timer++;
if ( dht_en_timer >= 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;
}