Здравствуйте! Подскажите пожалуйста, столкнулся со следующей проблемой: например программа себе работает, выполняет операции(вывод на экран, подсчёты и т.д.), вдруг происходит прерывание на INT0, по прерыванию я обнуляю счётчик TCNT1 контроллера(использую первый счётчик контроллера атмеги 328 16 битный), запускаю сам счётчик с предделителем 1024 и на этом моё первое прерывание(по нажатию клавиши, потом вместо неё использовать буду аналоговый компаратор) заканчивается...По идее управление возвращается в то место где произошло прерывание...Но вот вопрос: происходит через пару мс после первого второе прерывание(другой клавишей), в котором я останавливаю первый счетчик, забираю значение TCNT1 и после обнуляю его, а за этих пару мс между прерываниями в основной программе прошёл DELAY(1000)...Мне нужно это точное значение TCNT1 тиков контроллера между прерываниями...Будет ли мешать подсчёту тиков DELAY() все которые пробегут между прерываниями??
Я так понимаю, что DELAY() запускает работу нулевого счётчика 8-ми битного, при этом запускается функция milis() и уходит в цикл...Как бы это два разных счётчика, но мне кажется что из-за DELAY() "сердце" камушка останавливается и соответственно произойдёт остановка первого таймера..Я не прав??? Помогите с вопросом.. Спасибо!
а может пришла в голову мысль использовать задержку таким образом:
TCCR2B = (1«CS10); // запускаем таймер.
while( TCNT2 < 1840 ){}
TCCR2B = 0; //останавливаем таймер
TCNT2 = 0; // сброс счетчика
Тоесть, нулевой счётчик таймер 8 битный забит уже функциями delay(), millis() и д.р.-его вообще отрубить, потом первый использовать для подсчёта времени между прерываниями, а третий(он же TCCR2) использовать для задержек???