Подключить много кнопок на мало выводов.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср фев 04, 2026 21:29:19
Откуда: Из норки где-то в России

Сообщение Призрачный Суслик »

Отвечу на некоторые вопросы. Я писал об этом, но видимо не все прочитали :

1) У Atmel AT90S2313 нет встроенного АЦП. только компаратор
2) Одновременно может быть нажато любой количество "кнопок", ОМК уходит в режим энергосбережения "SLEEP" если "отжаты" все, но "нажатие" на любую или на любой количество одновременно должно выводить его в активное состояние. Для этого и используется прерывание. Второе прерывание для SPI переферийного устройства.
3) Судя по даташиту там полный КМОП выходной каскад с возможностью уйти в 3 состояние и подключаемым резистором подтяжки к + питания.
4) Индикатор - это ЖК индикатор от ф. МЭЛТ. MT-16S1A-2Y-3V0 1 строка 16 символьных знакомент, у него встроенный контроллер.

Забыл указать - питание 3 вольта.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15657
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Так в таком случае...кто мешает менюшечно - кнопочну (интерактив с "подскаками") систему сделать?
Да и МК в таком случае заметно лучше не AT90S2313, а аттини2313/4313 (или чего из более поздних с подобной раскладкой выводов, но большим объёмом ОЗУ). Там тогда кнопушек и 5 штук "сверх меры" будет.
:roll:
Реклама
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Призрачный Суслик писал(а): Пт июл 03, 2026 18:32:20 1) У Atmel AT90S2313 нет встроенного АЦП. только компаратор
зато у него есть ШИМ. всё вместе позволяет построить АЦП
BOB51 писал(а): Пт июл 03, 2026 18:42:02 Так в таком случае...кто мешает менюшечно - кнопочну (интерактив с "подскаками") систему сделать?
Условия выдаются порционно (вероятно, так забавнее). В одной из порций кнопки превратились дополнительные контактные группы контакторов.

В общем, задача нерешаема, так как нет технического задания. В следующей порции данных будет сказано, что эти контактные группы подсоединяются метровыми проводами, идущими параллельно с силовыми, так как в шкафу иначе не получилось. Или ещё что-то в таком духе.
Призрачный Суслик писал(а): Пт июл 03, 2026 12:18:31 Ну так не советуйте. :dont_know:
Ожидаемый вывод. Хотя и жаль, что такой. Надеялся, что в итоге Вы осознаете, что условие задачи неполное, и измените его. Но, несмотря на то, что уже двое сказали об этом, Вы выбрали иной путь. Удачи.
Мудрый кот
Сообщения: 1757
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Призрачный Суслик писал(а): Пт июл 03, 2026 18:32:20Отвечу на некоторые вопросы. Я писал об этом, но видимо не все прочитали :
И что же из вашего списка препятствует реализации предложенного мной варианта?
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Сообщения: 619
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

При таком списке доп.условий лично я бы выделил отдельный МК, на котором и реализовал бы весь обозначенный функционал, а в целевой МК передал бы по UART или SPI коды кнопок. Разбудить целевой МК - по отдельной линии INT.
Реклама
u37
Это не хвост, это антенна
Сообщения: 1305
Зарегистрирован: Пн май 01, 2017 20:01:45

Сообщение u37 »

А что, вполне вариант - взять py, да хоть f030 в so16, и сделать подключение как еще один регистор дисплея.
Реклама
Друг Кота
Сообщения: 5395
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий

Сообщение petrenko »

Вам же уже многогого вариантов предложили - Вы ещё ничего не попробовали ?
Призрачный Суслик писал(а): Пт июл 03, 2026 18:32:20 Отвечу на некоторые вопросы. Я писал об этом, но видимо не все прочитали :

1) У Atmel AT90S2313 нет встроенного АЦП. только компаратор
И, догадываюсь, Вы в учебнике прочитали устройство параллельного Аналогово-Цифрового_Преобразователя из 2{в_степени}^N компараторов, но вероятно в том учебнике не было написано, как реализуется Аналогово-Цифровой_Преобразователь на ОДНОМ компараторе.
в Вашем же случае всё ещё проще - достаточно сформировать "треугольное" либо "пило-образное" напряжение и подавать его на вход компаратора "AIN0" - когда оно будет совпадать со значением, набираемым комбинацией кнопок с резистивной матрицей, будет срабатывать компаратор.

И, догадываюсь, Вы всем вышевысказавшимся людям даже благодарность высказать забудете, не то, что поделиться гонораром( не гонором 8) )
Призрачный Суслик писал(а): Пт июл 03, 2026 12:18:31Ну так не советуйте.
Всё, это последний раз не удержались, простите пожалуйста, больше так не будем
( ну то есть советовать не будем - даже если очень попросите , но без предоплаты - будем старать-ся полный игнор - "честное пионерское" )
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 19068
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

petrenko писал(а): Сб июл 04, 2026 06:32:12в Вашем же случае всё ещё проще - достаточно сформировать "треугольное" либо "пило-образное" напряжение и подавать его на вход компаратора "AIN0" - когда оно будет совпадать со значением, набираемым комбинацией кнопок с резистивной матрицей, будет срабатывать компаратор.
а как ты узнаешь при каком потенциале сработал компаратор?
Rapra писал(а): Пт июл 03, 2026 13:26:42Подаётся на вход АЦП, для каждой кнопки и комбинации кнопок свое уникальное значение напряжения.
и сколько ты готов потратить кода программы для расшифровки любых комбинаций кнопок?
ведь даже по 2 кнопки из 16 кнопок дают 120 сочетаний. а по 3 из 16 - 560 сочетаний. и чем дальше, тем больше.
а всего различных сочетаний из 16 равно 2 в степени 16 и равно 65536.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Друг Кота
Сообщения: 5395
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий

Сообщение petrenko »

Starichok51 писал(а): Сб июл 04, 2026 14:12:33 а как ты узнаешь при каком потенциале сработал компаратор?
..
Так ведь "треугольник" или "пила" будет формироваться под "моим"/"нашим"/программиста чутким руководством. 8)
Starichok51 писал(а): Сб июл 04, 2026 14:12:33 ..
и сколько ты готов потратить кода программы для расшифровки любых комбинаций кнопок?
.. всего различных сочетаний из 16 равно 2 в степени 16 и равно 65536.
Это не потребует перебора 65535 комбинаций - ибо не все "любые" комбинации изпользуются - считанное состояние в своих 16(шестнадцати)битах несёт информацию о нажатых кнопках - каждый бит "отвечает" за "свою" кнопку - достаточно проверить по маске по отдельности и в изпользуемых ( не"любых") сочетаниях.
Однако 2^16 потребует более точных резисторов при кнопках - 2^12попроще будет("кэп")
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Контактная информация:
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

то есть резисторы 1R, 2R, 4R, 8R, 16R, 32R, 64R, 128R, 256R, 512R, 1024R, 2048R
Если R = 100 Ом, то 205 кОм последний - вполне нормально.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 165
Зарегистрирован: Чт апр 28, 2016 22:33:47
Откуда: ARPA Internet

Сообщение ejsanyo »

Призрачный Суслик писал(а): Пн июн 29, 2026 23:51:07 Может кто чего либо предложит умного :
Надо дополнительно подключить к нему 12 условных "кнопок".
Короче, вот накатал примерную схему вашего "костыля", получите распишитесь: :write:
ЧудоРасширительВвода.zip
(49.61 КБ) 12 скачиваний
Файл пришлось упаковать, а то форум зачем-то пытается масштабировать картинку и упарывает её!
Выглядит схема на превый взгляд перегружено, но по сути всё просто и прямолинейно, даже суслик разберётся. Ваши "псевдо-кнопки" будут замыкать входы на плюс. По I2C "нажатая кнопка" будет читаться как "0" в соотв. бите. Вместо 74HC14 можно впаять, в принципе, и 74HC04, но лучше не надо. Снабберы VD1...VD12 тоже можно выкинуть, но мой встроенный визионер подсказывает, что с ними будет не так ссикотно. Последовательные резюки с 47k можно, если понадобиться, увеличить и до 100, но тут уже начинайте думать об утечках по плате, УР-ом её быть может замазать не помешает. Если сильно приспичит, кондёры на землю с 0,1 можно увеличить и до 1 мкФ. Подтяжечные на землю резюки... думайте сами, какие там у ваших "кнопок" утечки и насколько замыкается контакт. Мой встроенный визионер подсказывает, что микротоки через них подавать не стоит, лучше не мелочиться. Провода, соединяющие логику с PCF, делайте как можно короче. Земляную заливку на плате сделайте. Соединять костыль с основной платой тоже как можно короче, I2C не любит помехи и длинные провода.
Базовые адреса I2C для чипов будут 0x20 и 0x21 для PCF8574T, либо 0x38 и 0x39 для PCF8574AT, смотря какой достанете.
Пусть ваш погромист записывает в оба чипа 0xFF, а потом просто их читает. Прерывание выкидывается лог. нулём, когда изменяется состояние кнопки по отношению к прошлой записи/чтению. А после чтения сбрасывается. Так что после чтения и при "отжатии "кнопки" оно тоже придёт.
Ну и 4 старших разряда второй PCF остались без дела. Наверно, если хотите, можно их использовать ещё для чего-нибудь. Подумайте сами. Удачи вам там... :solder:
P.S. Исправил в схеме кое-какие косяки и добавил последовательно с выходами логики резисторы "защиты от дурака". На случай, если ваш погромист захочет записать в чипы не 0xFF, а что-то иное. Можете на досуге подумать, почему это важно.
Последний раз редактировалось ejsanyo Сб июл 04, 2026 18:41:04, всего редактировалось 1 раз.
Хоронили кваку - порвали три Rocket Launcherа.©
Модератор
Аватара пользователя
Сообщения: 19068
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

petrenko писал(а): Сб июл 04, 2026 16:25:38Так ведь "треугольник" или "пила" будет формироваться под "моим"/"нашим"/программиста чутким руководством
и сколько времени понадобится для формирования кучи ступенек для всех возможных комбинаций кнопок?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Вымогатель припоя
Сообщения: 619
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

ejsanyo писал(а): Сб июл 04, 2026 18:16:34 Короче, вот накатал примерную схему вашего "костыля", получите
Слооооожно и дискретной логики много. Лучше было бы поставить простой микроконтроллер с 12-ю входами, отдельно под каждую кнопку.
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Starichok51 писал(а): Сб июл 04, 2026 18:38:39 и сколько времени понадобится для формирования кучи ступенек для всех возможных комбинаций кнопок?
Немного. Формируются не ступеньки для комбинаций, создаётся АЦП и измеряется напряжение. Результат АЦП (в идеальном случае) и есть битовая комбинация кнопок. Так как практика неидеальна, необходимо будет коррекция значения под какой-то гистерезис. Мне видится число итераций равным числу контактных групп. Наверное ошибаюсь и выйдет чуть больше, но всё равно очень мало.
Так как сами контакторы - устройства относительно медленные, полагаю, времени на всё - вагон и тележка.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 165
Зарегистрирован: Чт апр 28, 2016 22:33:47
Откуда: ARPA Internet

Сообщение ejsanyo »

Rapra писал(а): Сб июл 04, 2026 19:52:01 Слооооожно и дискретной логики много.
Когда у вас "кнопки, больше похожие на контакторы", лучше не мелочиться, это я по горькому опыту говорю! С другой стороны, простяцкий однорегистровый PCF8574 горе-погромисту поднять явно будет проще, чем исполнять всякие выкрутасы на +1 контроллере, а потом ещё их подружить между собой.
Хоронили кваку - порвали три Rocket Launcherа.©
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

PCF8574 - это только I2C, +1 микроконтроллер - это любой интерфейс, например, UART.
Замечу, что при работе с PCF8574 придётся писать практически тоже самое для работы портов, только через прослойку интерфейса, которой не будет в отдельном мк. PCF8574 - это две линии и двунаправленный обмен. +1 мк - одна линия, одно направление.
Как Вы думаете, что проще реализовать, если предполагается подобный уровень программиста?
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 165
Зарегистрирован: Чт апр 28, 2016 22:33:47
Откуда: ARPA Internet

Сообщение ejsanyo »

Zapolyarny писал(а): Вс июл 05, 2026 01:53:53 PCF8574 - это две линии и двунаправленный обмен. +1 мк - одна линия, одно направление.
И +1 прошивка, не забывайте. Одну линию хотите? А вы помните, что автор хочет будить свой "ОМК" прерываниями? После чего уже опрашивать кнопки. Просто пнуть в одну сторону и прерывание и данные, безо всякой обратной связи? Как-то слишком смело. :? Изгаляться, делать однопроводной UART и на приём и на передачу? Кроме того, придётся ставить кварцы и там и там, чтобы не было разбега скоростей передачи. Или молиться на точность RC-генератора в контроллере-слэйве? (AT90, как мы помним, в любом случае работает только с кварцем) Как по мне, тоже такое себе. Полностью синхронный I2C в этом плане заморочек не имеет.
А ещё мой встроенный визионер подсказывает, что у него там аппаратный UART может быть уже чем-то занят. А делать второй программный - это ой как сложнее чем I2C!
Ну и ещё момент: автор, вроде как, вынужден загоняться по энергопотреблению. А вы точно уверены, что ваш контроллер-слэйв будет в этом плане хорош? Особенно в руках такого себе погромиста? PCF, с другой стороны, пока к ней нет обращения, жрёт практически ничего. Да и в динамике потребление мизерное.
Хоронили кваку - порвали три Rocket Launcherа.©
Вымогатель припоя
Сообщения: 619
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Вообще-то, на схеме принято изображать порядок от входа к выходу слева направо. Слева - входы, справа - выходы. Ну, так общепринято для облегчения понимания. А то при взгляде на схему получается расширитель ВЫХОДОВ, а не входов.
Во-вторых, дополнительная дискретная логика - излишне. Она ни от чего не защищает, и в случае чего сгорит так же как и PCF. Если хочется именно электрической защиты, тогда уж лучше поставить оптопары.
Мудрый кот
Сообщения: 1757
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

ejsanyo писал(а): Сб июл 04, 2026 18:16:34 Короче, вот накатал примерную схему вашего "костыля", получите распишитесь: :write: ЧудоРасширительВвода.zip
Да уж... как всегда - ТС выбрал самый худший вариант из всех. Проигнорировав все прочие советы. :)))
Зачем городить такой огород? Не понятно... Если уже допустимо внесение таких огромных корректировок в схему, то проще было добавить какой-нить простой микроконтроллер. Подключить кнопы к нему. Опрашивать кнопы его прошивкой и передавать в основной МК любым удобным способом. И городить для этого неудобный ногодрыжный I2C было бы совсем не обязательно и дополнительная схема была бы кратно меньше.
Мудрый кот
Сообщения: 1757
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

ejsanyo писал(а): Вс июл 05, 2026 02:49:49Одну линию хотите? А вы помните, что автор хочет будить свой "ОМК" прерываниями? После чего уже опрашивать кнопки. Просто пнуть в одну сторону и прерывание и данные, безо всякой обратной связи? Как-то слишком смело. :? Изгаляться, делать однопроводной UART и на приём и на передачу?
Зачем "однопроводный UART" и зачем "одну линию"? Передачу можно сделать любым удобным способом (не пытаясь кое-как приколхозить какой-то готовый интерфейс, а придумав и реализовав свой - наиболее подходящий для данной задачи).
При наличии головы на плечах, в которую программист не только ест, не потребуется ни одной линии: Функции опроса можно повесить на существующие цепи. Совместив их текущее функционирование с приёмом данных от клавиатурного МК.
Ответить

Вернуться в «Разные вопросы по МК»