#1 2018-03-28 23:50:07

Rosental
Учасник
Зареєстрований: 2018-03-28
Повідомлень: 5

Преривания

Привет всем. С ардуино дружу давно, а вот с полноценным програмированием, как таковым, не сложилось. По этому решил спросить у знающих.

Есть один проект, в котором в Main работает ШИМ, а в фоне надо мерять частоту (в пределах1-2кГц). При том точно. Тут все понятно, мне прямая дорога к таймерам, которых в мега328 аж 3шт. Хватает с головой, первый оставляем как есть для analogWrite(),  а на 2х других хочу собрать собственно частотомер.  Идея следующая: один надо настроить на подсчет импульсов на пине, а вторым задавать интервал, в течении которого первый щитает импульсы.

Теперь сам вопрос: как для этих целей настроить оба таймера и будут ли они вообще так работать?

Другой вариант, как настроить следующее: в Main вызываем макрос в котором 2 преривания: первое устанавливает интервал счета; второе- щитает n++  по импульсу на ноге в течении этого интервала?
Пробовал игратся с TimerOne- он работает, а вот внешнее преривание в макросе не хочет запускатся.

Какой вариант будет более точен и практичен?

Неактивний

#2 2018-03-29 11:38:30

Kaka
Учасник
Зареєстрований: 2018-03-21
Повідомлень: 411

Re: Преривания

Ну, первое прерывание не нужно, надо просто сконфигурировать таймер так, чтобы он работал от "внешних часов" и считать Ваш измеряемый сигнал "внешними часами".

Что касается второго прерывания (времени измерения) - зависит от требуемой точности, если надо поточнее, то - да, таймер, если не критично, то хватит millis и micros.

Какие инревалы измерений Вас интересуют и сколько ожидается тиков за интервал?

Неактивний

#3 2018-03-30 03:54:21

Волшебник
Учасник
Зареєстрований: 2017-02-28
Повідомлень: 8

Re: Преривания

Всё написано давно,  http://interface.khm.de/index.php/lab/interfaces-advanced/frequency-measurement-library/
Там два варианта, на низкие и высокие частоты. Исходники, если не так - подкоректируете.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму