[an error occurred while processing this directive] [an error occurred while processing this directive]
Если частота(период) измеряется с использованием прерывания по фронту и есть свободный таймер то....
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Sergey Smirnow 20 мая 2002 г. 14:03
В ответ на: Подскажите, каким образом подсчитать на AVRе частоту до 300 кГц поточнее и побыстрее? отправлено Ant 19 мая 2002 г. 18:55

1. Пишешь подпрограмму в прерывании по фронту - которая увеличивает 3-4 байтный накопительный счётчик на 1 (инкремент).
2. Программируешь таймер на максимум (8 или 16 бит - не суть важно какой он у тебя), в таймерном прерывании делаешь декремент 1 или 2х байтного регистра (выдержка полных тиков таймера ~0,5...2 c (это всё от требуемой точности зависит(я пожалуй взял бы стого кроатное 1 сек и цифре 2 (0,25...0,5...1...2...4) - делить потом проще, можно использовать команду сдвига)))- как только выдержка ЁК, "снимаешь кассу" - накопительный счётчик и производишь вычисления (время у тебя известно (точность 10 в-6 !!!) - сколько набежало периодов за это время тоже известно (ошибка 1/1 (тик проца * на....(непомню и грузить не буду)) ну вообщем за 1 секунду это более чем достаточно), а что ещё надо ?).

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru