На главную страницу | Новости | FAQ | Ссылки | Для детей | Контакты
Рассмотрены базовые принципы для работы с таймерами платы Arduino
Arduino UNO имеет три таймера: Timer0, Timer1 и Timer2.
Timer0 уже настроен для генерации миллисекундных прерываний, обновляя счетчик миллисекунд, передаваемый в millis ().
Timer0 являющийся 8-битным, считает от 0 до 255 и генерирует прерывание, при переполнении (превышении значения в 255). Он использует тактовый делитель на 64 по умолчанию, чтобы дать нам частоту прерываний 976.5625 Гц (достаточно близко к 1 кГц для наших целей).
В регистрах сравнения хранятся данные, которые постоянно сравниваются с состоянием таймера/счетчика. Установим регистр сравнения (OCR0A) для генерации другого прерывания где-то в середине этого счета. Приведенный ниже код будет генерировать прерывание TIMER0_COMPA всякий раз, когда значение счетчика проходит 0xAF.
// Timer0 уже используется millis() - мы создаем прерывание где-то // в середине и вызываем ниже функцию "Compare A" OCR0A = 0xAF; TIMSK0 |= _BV(OCIE0A);
// Timer0 уже используется millis() - мы создаем прерывание где-то
// в середине и вызываем ниже функцию "Compare A"
OCR0A = 0xAF;
TIMSK0 |= _BV(OCIE0A);
Затем определим обработчик прерывания для вектора прерывания по таймеру, называемому TIMER0_COMPA_vect.
// Прерывание вызывается один раз в миллисекунду
SIGNAL(TIMER0_COMPA_vect)
{
}
Now 23.11.24 11:17:35, Your IP: 18.217.207.112; arduino.zl3p.com/basic/timer
ePN