КУЛИБИН ПОМОГИТЕ Энкодер с выводом на ЛСД 1602

Для второго датчика использовать переменную schetchik2 например.
И присваивать её не переменной m а m2
Из головы вылетело. Иначе конфликта не избежать.

Сейчас поеду за индикатором, а завтра к вечеру нанку заберу. Начну уже в живую не в теории разбираться.
По остальному в этой программе я пока не сформулировал вопросы.
 
  • Последнее редактирование:
Последнее редактирование:
А если пропустит импульс?(смену в канале А или в канале В, именно смену.т.е. переход )
Ведь процессор следит/опрашивает не только за изменениями в каналах А или В. у него и других забот хватает.
Или эту задачу по ИЗМЕНЕНИЮ в каждом канале надо повесить в программу прерывания процессора (аппаратным образом).

Обычно, это решается на аппаратном уровне.
Абсолютно независимый счётчик ( 2 канала) суммирует/вычитает изменения в каналах и по опросу процессора выдаёт данные.
Вот как то так.
 
А если пропустит импульс?(смену в канале А или в канале В, именно смену.т.е. переход )
Ведь процессор следит/опрашивает не только за изменениями в каналах А или В. у него и других забот хватает.
Или эту задачу по ИЗМЕНЕНИЮ в каждом канале надо повесить в программу прерывания процессора.

Обычно, это решается на аппаратном уровне.
Абсолютно независимый счётчик ( 2 канала) суммирует/вычитает изменения в каналах и по опросу выдаёт данные.
Вот как то так.
Это замечательно когда энкодер один. А если их несколько?
Например у атмеги328 всего два пина на внешние прерывания.
 
  • Последнее редактирование:
Последнее редактирование:
Вот по этому и всё и делается на аппаратном уровне.
Каждому энкодеру свой счётчик.
 
Это замечательно когда энкодер один. А если их несколько?
Например у атмеги328 всего два пина на внешние прерывания
В принципе, главное запустить вовремя обработчик по каналам А (pulse) а канал В (direct) можно и по считыванию любых цифровых входов, так, что двух каналов может и хватить.
 
Прерывание может быть одно. В теле программы прерывания опрашивается, кто запрашивает прерывание и действует соответствующим образом на тот или иной запрос.
Прерывания не опрашиваются!!
Событие внешнего прерывания вызывает соответствующий обработчик.
Ваши сообщения автоматически объединены:

В принципе, главное запустить вовремя обработчик по каналам А (pulse) а канал В (direct) можно и по считыванию любых цифровых входов, так, что двух каналов может и хватить.
Что значит pulse и direct?
На двух портах где висит энкодер может быть четыре состояния по которым обработчик определяет направление движения и либо увеличивает счётчик либо уменьшает.
 
Прерывания не опрашиваются!!
Событие внешнего прерывания вызывает соответствующий обработчик
Если прерываний более одного, читается флаг приоритета, но тут не требуется, может выполняться прерывание в прерывании.
 
Если прерываний более одного, читается флаг приоритета, но тут не требуется, может выполняться прерывание в прерывании.
Это понятно. Речь немного не о том.
А о том что нет такого понятия как опрос прерывания.
Либо в тексте с пунктуацией засада.
 
Что значит pulse и direct?
На двух портах где висит энкодер может быть четыре состояния по которым обработчик определяет направление движения и либо увеличивает счётчик либо уменьшает.
Это как обработчик построить, в нем можно и опросить вход а прерывание начать только по спаду, там видно будет в каком напрвлении крутится энкодер.
 
Это как обработчик построить, в нем можно и опросить вход а прерывание начать только по спаду, там видно будет в каком напрвлении крутится энкодер.
Мы же про аппаратные прерывания говорим?
Обработчик будет вызван по событию, а по спаду или по фронту - это уже как в регистрах пропишешь.
 
Мы же про аппаратные прерывания говорим?
Обработчик будет вызван по событию, а по спаду или по фронту - это уже как в регистрах пропишешь.
И я про то же, по входу прерывания передаем на соответствующий обработчик, а а теле обработчика опрашиваем вход направления, им может быть любой цифровой на котором канал В соответствующего энкодера.
 
И я про то же, по входу прерывания передаем на соответствующий обработчик, а а теле обработчика опрашиваем вход направления, им может быть любой цифровой на котором канал В соответствующего энкодера.
Четыре состояния надо контролировать.
Там не такого понятия как вход направления.
МК при включении запоминает текущее состояние на двух входах, и при их опросе сравнивает текущее значение с запомненным.
И делает выводы, вперёд или назад.
 
Согласен. Однако, в программе обработчика может считываться бит/вайт запрашиваемого устройства на прерывание, а потом, по исполнению сбрасываться.
Зачем этот лес городить?
Если обработчик уже обрабатывает прерывание, зачем ещё что-то надо?
Бит прерывания и так сбрасывается автоматически.
Масло масляное.

enc11.jpg

Ваши сообщения автоматически объединены:

В общем скорость современных МК позволяет с большой скорость опрашивать состояние портов.
И чтобы потерять шаги, энкодер надо дрелью вращать.
 

Вложения

  • 1685967365048.png
    1685967365048.png
    25.5 KB · Просмотры: 6
  • Последнее редактирование:
Последнее редактирование:
Четыре состояния надо контролировать.
Там не такого понятия как вход направления.
МК при включении запоминает текущее состояние на двух входах, и при их опросе сравнивает текущее значение с запомненным.
И делает выводы, вперёд или назад.
Правильно! 2 канала, а должны учитывать изменения в каналах, по этому и 4.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

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

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать