Цитата(ivainc1789 @ Sep 7 2007, 14:41)

В задаче на ATmega16 есть необходимость посчитать кол-во импульсов на пине T1 за калиброванный интервал времени. Для этого организуется таймер1 как 24р. счетчик импульсов и необходимо сделать калиброванный интервал времени. Есть два подхода:
1. Сделать интервал без дополнительных ресурсов, запретив все прерывания и разрешив только от таймера 1 для инкремента 8р. старшего байта 24р. таймера по его переполнению.
2. Использовать другой таймер для "изготовления" калиброванного интервала.
3. Ваш вариант.
Интерес пока представляет первый вариант. ИМХО, в AVR очень тяжело запретить на небольшое время все прерывания, разрешив некоторые. Нужно мудрить некий менеджер прерываний, для чего вручную: сохранять статус текущих, потом все запрещать, потом разрешать необходимые. Все это как-то коряво и долго... Есть ли более простой подход для решения задачи?
1.Используйте режим захвата
2.Таймер 1 подсчета считает по кругу импульсы, а по прерыванию от другого таймера считывается содержимое Таймера1. Затем высчитываеие разность спредыдущим съемом.
Выбирайте сами.