Таймер и прерывания для atmega2560 (Arduino IDE)

2 500 руб. за проект • безналичный расчёт, электронные деньги, наличный расчёт
01 сентября 2018, 14:08 • 5 откликов • 66 просмотров
Сама по себе задача довольно примитивная, больше уйдет вемени на постаовку задачи, вникание в ее со стороны исполнителя и приемку результатов, но это буквально 20 строк кода, которые должны быть безупречны.

Есть некий сигнал на входе (желтый на картинке), есть аналоговая часть (ее мы не рассматриваем) на входе МК мы имеем либо 0 либо 1, длительность сигнала 100-2500 мкс, частота 4-60 Гц, либо его просто нет

предположим нам приходит сигнал длительностью 1200 мкс (микросекунд), задача

1. поймать на выводе (с прерыванием) изменение с 0 на 1
2. настроить таймер таким образом, чтобы он сработал один раз через t=650 мкс
3. перевести вывод D в состояние HIGH
4. через время t сработает перывание от таймера и мы переведем вывод D в LOW

  • для нас важен только момент перехода входного сигнала в 1, его длительность нас не интересует
  • t задается и находится в дианаоне от 100 мкс до 1500 мкс
  • продержим D в HIGH скажем 3000 мкс - все сгорит
  • точность: скажем если t=650 а сработает через 700 или 600 не так важно, +/-50 мкс свободно, это приминительно к внутренним задержкам, всяким там разрядностям таймера (я не понимаю в этом)
потому я себе это вижу только через прерывания по таймеру, т.к. МК выполняет еще гору всяких задач, опрашивает какие-то датчики по I2C (и "залипает" на большее время)

какой-то таймер явно занят (TIMER4), но там их много, какие-то заняты неявно самой cредой arduino, это необходимо учесть

задачи:

1) во что бы то ни стало перевести D обратно в LOW через время t
2) не допускать (если на входе сошли с ума) и сигнал идет с частотой 1000 гц, тогда: мы как обычно обрабатываем первый сигнал ("заводим" таймер) и запоминаем его время (когда он пришле), и любой последующий пришедший раньше чем время t2=20000 мкс просто игнорируем

попутно мы считаем кол-во импульсов, можешь пропускать импульсы и так далее (выходит за границы ТЗ)

на выходе я хотел бы получить готовый кусок кода с большим кол-вом комментариев с описанием каждого действия, почему такой регистр, почему это знаение, что за режим и так далее
Файлы
Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Заказчик
Задача выполнена точно и в предельно короткие сроки. Получил консультацию по всем интересующим меня вопросам. Я очень доволен.
5 лет назад