Помогите пожалуйста. Можно ли переназначить прерывания на портах 2,3 на другие порты ?
- Войдите на сайт для отправки комментариев
Пнд, 25/06/2018 - 15:06
Цифровые порты 2,3 используются для генерации прерываний (arduino uno). Те же самые порты 2,3 используются в схеме подключения LCD к ардуине, что делает невозможным использования внешних прерываний на этих ногах. Можно ли переназначить прерывания на портах 2,3 на другие порты, если можно то как это сделать? (Менять схему подключения LCD на I2C не хочу, так как адаптера ждать долго). Спасибо.
sever
А зачем переназначять? Используйте совместно.
Хм... но эти порты учавствуют в передаче данных на LCD разве данные не пострадают, если я буду "коротить" эти порты на землю энкодером, например?
sever
Не пострадает если все правильно напишите, просто не выводите данные на экран когда энкодер коротит на землю, а все остальное время пожалуйста. Для глаза это будет не заметно ибо код выполняется очень быстро.
Спасибо, попробую.
sever
Желательно для энкодера сделать аппаратный антидребезг.
Подскажите, Вы предлогаете подключить энкодер к тем же портам, что и линии для LCD. Но по типовой схеме энкодера, его выхода подтянуты к +Vcc. Таким образом, на портах 2,3 постоянно будет+Vcc, что явно помешает передачи данных на LCD или я недопонимаю что-то?
sever
Так вы подтяжку энкодеру делайте а не пинам, пины после фильтра соеденяйте через резистор ~10 кОм. Но если это трудно для вас то можно и программный антидребезг сделать.
Чет не понимаю. Подтяжка итак на энкодере. Через энкодер +5v прямиком попадает на пины. Вот схемка с фильтром и энкодером.
https://cdn1.savepice.ru/uploads/2018/6/25/ca777d18f9c209a487909b5fc93d9c7c-full.jpg
Может если через тригер сделать антидребезг, тогда выйдет.
Да, но RC фильт вешаем на энкодер, а пин подключаем через сопротивление R. То есть сопротивление "R на схеме" включаем между контроллером и энкодером.
Все равно не понимаю. На портах всегда будет+5, как не переставляй резистор. Или не вкуриваю?
https://cdn1.savepice.ru/uploads/2018/6/25/5434ebf7bf26fe5d45688c9acddc6...
Вот все верно нарисовали. А что это для вас принципиально что там будет +Vcc? Можно изменить полярность подтяжки, тогда энкодер будет выдавать импульсы положительной полярности. Вообще это дело вкуса)
Сдается мне, что проще пересадить LCD с D2/D3, чем городить всякие workaround'ы
sadman41
Зачем? Все и так будет отлично работать.
А я ленивый на пайку, к примеру.
sadman41
Аппаратные решения экономят время для написания программы)
"А что это для вас принципиально что там будет +Vcc" Мне нет, просто я не знаю, как будет вести себя LCD, если на этих двух портах если постоянно будет +5 с энкодера. Это первый вопрос и вот второй. Если я активирую прерывания по этим портам, то они, должны генерится по изменению уровня напряжения на данных портах. В процессе передачи данных на LCD на этих портах итак происходит изменение напряжения (единицы/нули идут на LCD). Не вызовет ли это ложного прерывания по данным портам. Получается, что источником изменения напряжения на портах будет не только энкодер?
"Сдается мне, что проще пересадить LCD с D2/D3, чем городить всякие workaround'ы" А как их поменять?
"Сдается мне, что проще пересадить LCD с D2/D3, чем городить всякие workaround'ы" А как их поменять?
Подумайте, чего еще не хватает в вашем вопросе.
sever,
не ведитесь. Вешать на одни пины и энкодер, и экран можно только через Альпы. Сделать, чтобы это работала надёжно, невозможно. Вы голову-то включайте. Вот Вам говорят "не выводите на экран, когда юзер крутит энкодер", а откуда Вам знать когда ему приспичит его крутить начать?
Прерывания есть на всех пинах (если у Вас uno/nano и т.п.) - на всех. Правда у других пинов эти прерывания несколько иные и attachInterrupt на них не работает, но использовать их можно. Библиотек куча. Поищите по словам "pin change interrupt arduino library" - берите библиотеку, запускайте пример из неё и радуйтесь прерываниям на любом пине.
Вешать на одни пины и энкодер, и экран можно только через Альпы. Сделать, чтобы это работала надёжно, невозможно.
Если вы не знаете как то это не значит что это невозможно. А насчет прерываний согласен)
Это невозможно независимо от того знаю я что-то или нет.
"Подумайте, чего еще не хватает в вашем вопросе."
Я понял, слова пожалуйста?)) Пожалуйста, подскажите , как поменять)
sever, на UNO 19 ног, сажайте LCD дисплей на любые свободные, в чём проблема то?
sever, на UNO 19 ног, сажайте LCD дисплей на любые свободные, в чём проблема то?
Спасибо, dimax!
Инерция мышления, наверно. В примерах подключения LCD в нете, используют пины 2,3 и я, как обезьяна слизал и парюсь))). Сейчас инициализировал вместо 2,3- 6,7. Все работает, 2,3 свободны.
Кино и немцы
Кино и немцы
Во-во! Итическая сила! "Ну, не придёшь, тогда вычёркиваю!" :)))