Вопрос по созданию частотомера
- Войдите на сайт для отправки комментариев
Ср, 26/10/2016 - 22:26
Здравствуйте форумчане, такой у меня вопрос.
Годна ли идея для частотомера на меге328?
Идея:
Запускаем таймер считать 1 секунду (я сосчитаю время 1 переполнения таймера, сосчитаю число переполнений равных 1 секунде). Пока идет секунда на пин внешних прерываний INT0 поступает сигнал с генератора. Прерывание устанавливается по нарастанию фронта. В самом обработчике прерывания делаем инкремент некой переменной "с". По прошествию секунды отключаем прерывания, выводим на экран значение "с", и далее делаем далее по кругу.
Годна ли такая идея? Какие частоты тактирования посоветуете? Справится МК с такой задачей?
Спасибо за уделенное время.
Частоту даже 100КГц, не факт что корректно отработаете. Рекомендовал бы иначе:
1. Переводим SPI в режим слейва.
2. На вход SCK подаем сигнал с генератора.
3. Фиксируем время обычным micros()
4. Считываем из ресивера SPI байты, по мере их появления там, не сохраняя то что читаем, но подсчитывая их количество.
5. Когда надоест, обычным micros() фиксируем время завершения процедуры.
Вычисляем частоту, зная время (разницу между двумя micros()) и количество колебаний (количество принятых байт умноженное на 8)
Профит до 8МГц
Частоту даже 100КГц, не факт что корректно отработаете. Рекомендовал бы иначе:
1. Переводим SPI в режим слейва.
2. На вход SCK подаем сигнал с генератора.
3. Фиксируем время обычным micros()
4. Считываем из ресивера SPI байты, по мере их появления там, не сохраняя то что читаем, но подсчитывая их количество.
5. Когда надоест, обычным micros() фиксируем время завершения процедуры.
Вычисляем частоту, зная время (разницу между двумя micros()) и количество колебаний (количество принятых байт умноженное на 8)
Профит до 8МГц
Очень неординарный и интересный вариант. Еще всплыл такой. Тем же таймером отсчитываем секунду, а другому на вход подаем счетные импульсы. Далее аналогично
Можно и так. Можно даже воспользоваться возможностью таймера считать импульсы с аналогового компаратора. Но в даташит написано:
The external clock must be guaranteed to have less than half the system clock frequency (fExtClk < Tn_sync (To Clock Select Logic) Synchronization Edge Detector given a 50/50% duty cycle.
Можно и так. Можно даже воспользоваться возможностью таймера считать импульсы с аналогового компаратора. Но в даташит написано:
The external clock must be guaranteed to have less than half the system clock frequency (fExtClk < Tn_sync (To Clock Select Logic) Synchronization Edge Detector given a 50/50% duty cycle.
Спасибо большое за информацию, чтож приступим...
vlad0951, вы думаете, за 5 лет существования форума вы первый, кто захотел сделать частотометр? вбейте слова частотометр в форму гугло-поиска сверху форума, увидите что эта тема давно разжёвана до состояния манной каши. Есть готовая либа что б не парится.