Radist, прерывания запрещаю, чтобы на всякий случай *)
Я в теории не особо силён, сейчас тоже стараюсь изучать параллельно )
Конечная задача состоит в том, чтобы измерять обороты двигателя на автомобиле.
На данный момент задача состоит в том чтобы понять как считать импульсы в целом. Для этого я собрал маленький генератор импульсов на 555-ом таймере. Измерял на осциллографе- он выдаёт от 15 до 100 герц примерно, можно регулировать подстроечным резистором.
***
Я использую микроконтроллер АТмега8
частота кварца 8 МГц
Таймер использую - 0 (на сколько мне известно, он 8-и разрядный)
Предделитель - 1024 (Если я правильно понял,в моём случае получается 7812,5 Гц)
Прерывания (импульсы) подключил к выводу INT1
***
Таймер у меня считает постоянно до переполнения, после чего обнуляется и начинает считать сначала.
При возникновении прерывания на INT1 читается значение натиканое таймером и переводится в число импульсов в секунду.
После чтения из таймера он обнуляется принудительно.
На сколько я правильно понимаю, таймер считает от 0 до 256.
***
Тактовая частота микроконтроллера Fcpu = 8000000 Гц
Период тактового сигнала микроконтроллера Tcpu = 1/Fcpu
Период тактового сигнала таймера Т0 равен Tt0 = (1/Fcpu)/k = k/Fcpu
При k = 1024 период тактовой частоты таймера Т0 будет равен Tt0 = 1024/8000000 = 0.128 мс
***
Таким образом получаем время одного тика 0.128 мс.
Умножив число тиков на время одного тика я получаю период импульсов
tи (время длительности одного импульса)
поделив одну секунду на
tи получаю число импульсов в секунду.
Например между прерываниями было 150 тиков таймера, то получаем 1000 / ( 150 * 0.128 ) = 52 Гц (импульсов в секунду)
***
Вот у меня такая логика в программе.
На всякий случай прикреплю полный проект. Я работаю в CVavr.
Спасибо большое за помощь и советы !!!
Добавлено спустя 4 минуты 57 секунд:dccharacter, по поводу...
У тебя есть прерывание по переполнению таймера/счетчика. Заведи еще одну переменную и инкрементируй ее в прерывании. Так ты будешь знать сколько раз счетчик переполнился за нужный тебе промежуток времени.
... попробую !
Спасибо большое за совет !
Отпишусь попозже *)