Несколько кнопок на одно прерывание

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Tomasina, 10 дек 2015.

  1. Tomasina

    Tomasina Сушитель лампочек Модератор

    есть три кнопки (концевика, но по сути одно и то же) и только прерывания INT0 и INT1 на пинах 2 и 3. Свободные пины тоже есть: 4, 7, 8.

    а) как можно узнать какая кнопка нажата? Пока на ум приходит следующее: одну кнопку посадить на пин 3, еще две на пины 7 и 8, и их через резисторы также на пин 3. В прерывании INT1 читать состояние пинов 3, 7, 8. Это корректно?
    б) если я займу одно из этих прерываний под отслеживание кнопок, ШИМ на остальных пинах останется?
     
    Последнее редактирование: 10 дек 2015
  2. ИгорьК

    ИгорьК Гуру

    а) схемку бы идеи.
    б) быстрее на макетке проверить чем мысль тренировать.
     
  3. Alex19

    Alex19 Гуру

    Хорошо если бы Вы указали что за Ардуина, AVR. Буду исходить из того, что у Вас что-то на Atmega328p.

    Прежде всего, кроме прерываний INTx, есть еще прерывание всего порта PCINT, у Atmega328p их 3, PCINT0-PCINT2 (и соответсвенно 3 прерывания). Идея очень простая, прерывание происходит по любому пину из группы PCINTx, а в прерывании мы узнаем, что именно вызвало прерывание, просто проверяя пин. Мы так же можем настроить, чтобы прерывания срабатывало лишь на определенные пины порта, с помощью регистров PCMSKx.

    [​IMG]
    2 и 3, это PCINT18 и PCINT19 прерывание PCINT2, 4 (PCINT20) и 7 (PCINT23) прерывание PCINT2. А вот 8 это PCINT0 прерывание PCINT0.

    Сам еще не использовал их, лишь читал, если у Вас Atmega328p, данная статья будет полезна - http://avrprog.blogspot.ru/2013/03/extinterrupts.html. И разумеется даташит, для Atmega328p стр. 65, 70-74.

    В электронике дуб, дубом, всегда прошу помощи специалиста, я помогаю ему с программированием, он мне с электроникой.

    Да.
     
    Последнее редактирование: 10 дек 2015
    Tomasina и ИгорьК нравится это.
  4. DrProg

    DrProg Вечный нерд

    Все три кнопки через резисторы цепочкой на притянутый к земле А0 и параллельно на пин 2. Расчитать так, чтобы и на аналоговый приходили три отчетливых разных сигнала на цифровой более 2,7В или сколько там единицей считается. Я бы так попробовал.
     
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    Не, аналоговый в моём случае не пойдёт, работать должно от -35 до +45, думаю будет слишком большое уплывание резисторов.
     
  6. DrProg

    DrProg Вечный нерд

    Правильно понимаю, что при нажатия любого концевика должен быть сигнал на прерывение и сигнал на один из пинов? В голове смутно вертится схема из резисторов и диодов, но сегодня уже слишком поздно, да и ручка с бумагой где то там. Хорошая задачка, надо подумать.
     
  7. ИгорьК

    ИгорьК Гуру

    Креативненько...
    Вы об этом?
    Drawing2.jpg
     
    Последнее редактирование: 11 дек 2015
  8. DrProg

    DrProg Вечный нерд

    Злобный старый тролль почетный выпускник школы советского юмора и сарказма никак не угомонится покоряет новые сияющие высоты!
     
  9. ИгорьК

    ИгорьК Гуру

    Drawing3.jpg

    Направьте моск, по-возможности, по делу. Не злитесь, пожалуйста. Нарисуйте картинку (обещали да?). Помогите товарищу делом, а не болтовней (для заработка постов? фууууу...).
    Ой, вы это на свой счет приняли????? :))))))))))
     
    Последнее редактирование: 11 дек 2015
  10. DrProg

    DrProg Вечный нерд

    Заработок постов? Это что за новый виз бизнеса? Ах, так вот чем вы здесь занимаетесь! И много вам платят за посты?
    [​IMG]
     
    Последнее редактирование: 11 дек 2015
  11. ИгорьК

    ИгорьК Гуру

    Займитесь делом. Флуд моск разрывает? Посмотрите что нарисовали то.
    Обещали что-то там с резисторами креативное на аналоговых входах?
     
    Последнее редактирование: 11 дек 2015
  12. DrProg

    DrProg Вечный нерд

    На аналоговых вот так. Сопротивления подобрать.
    [​IMG]
    А дел у меня и без ваших советов полно. И хорошо, что это далеко не главное.
     
  13. ИгорьК

    ИгорьК Гуру

    И?
    Советовать гению? Ни-ни! Только восхвалять за креативность, что было и сделано. Одним словом.

    UPD. О как гениальные картинки то быстро меняются.
     
    Последнее редактирование: 11 дек 2015
  14. DrProg

    DrProg Вечный нерд

    Что конкретно "и"?
     
  15. vvr

    vvr Инженерище

    Tomasina совет ждёт, а вы тут устроили, понимаешь ли...
     
  16. ИгорьК

    ИгорьК Гуру

  17. ИгорьК

    ИгорьК Гуру

    Я нарисовал и похвалил гения. За картинку свою отвечаю.
     
  18. Tomasina

    Tomasina Сушитель лампочек Модератор

    да, именно оно, каждая кнопка на отдельный пин и чтобы детектировались по одному прерыванию.
    Мозаика в голове сложилась, в моей схеме не хватало диодов.
    Спасибо.
     
  19. ИгорьК

    ИгорьК Гуру

    Строго ИМХО. Если есть хоть одна, последняя возможность обойтись без прерываний - лучше обойтись.
     
  20. Tomasina

    Tomasina Сушитель лампочек Модератор

    поддерживаю, но в данном случае нужна моментальная реакция на критическое событие, даже 100 мс - это уже может быть поздно.