Страница 3 из 6
Re: Подключить многог кнопок на мало выводов.
Добавлено: Пт июл 03, 2026 18:32:20
Призрачный Суслик
Отвечу на некоторые вопросы. Я писал об этом, но видимо не все прочитали :
1) У Atmel AT90S2313 нет встроенного АЦП. только компаратор
2) Одновременно может быть нажато любой количество "кнопок", ОМК уходит в режим энергосбережения "SLEEP" если "отжаты" все, но "нажатие" на любую или на любой количество одновременно должно выводить его в активное состояние. Для этого и используется прерывание. Второе прерывание для SPI переферийного устройства.
3) Судя по даташиту там полный КМОП выходной каскад с возможностью уйти в 3 состояние и подключаемым резистором подтяжки к + питания.
4) Индикатор - это ЖК индикатор от ф. МЭЛТ. MT-16S1A-2Y-3V0 1 строка 16 символьных знакомент, у него встроенный контроллер.
Забыл указать - питание 3 вольта.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Пт июл 03, 2026 18:42:02
BOB51
Так в таком случае...кто мешает менюшечно - кнопочну (интерактив с "подскаками") систему сделать?
Да и МК в таком случае заметно лучше не AT90S2313, а аттини2313/4313 (или чего из более поздних с подобной раскладкой выводов, но большим объёмом ОЗУ). Там тогда кнопушек и 5 штук "сверх меры" будет.

Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 00:49:53
Zapolyarny
Призрачный Суслик писал(а): Пт июл 03, 2026 18:32:20
1) У Atmel AT90S2313 нет встроенного АЦП. только компаратор
зато у него есть ШИМ. всё вместе позволяет построить АЦП
BOB51 писал(а): Пт июл 03, 2026 18:42:02
Так в таком случае...кто мешает менюшечно - кнопочну (интерактив с "подскаками") систему сделать?
Условия выдаются порционно (вероятно, так забавнее). В одной из порций кнопки превратились дополнительные контактные группы контакторов.
В общем, задача нерешаема, так как нет технического задания. В следующей порции данных будет сказано, что эти контактные группы подсоединяются метровыми проводами, идущими параллельно с силовыми, так как в шкафу иначе не получилось. Или ещё что-то в таком духе.
Ожидаемый вывод. Хотя и жаль, что такой. Надеялся, что в итоге Вы осознаете, что условие задачи неполное, и измените его. Но, несмотря на то, что уже двое сказали об этом, Вы выбрали иной путь. Удачи.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 02:13:56
jcxz
Призрачный Суслик писал(а): Пт июл 03, 2026 18:32:20Отвечу на некоторые вопросы. Я писал об этом, но видимо не все прочитали :
И что же из вашего списка препятствует реализации предложенного мной варианта?
Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 05:11:34
Rapra
При таком списке доп.условий лично я бы выделил отдельный МК, на котором и реализовал бы весь обозначенный функционал, а в целевой МК передал бы по UART или SPI коды кнопок. Разбудить целевой МК - по отдельной линии INT.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 05:27:49
u37
А что, вполне вариант - взять py, да хоть f030 в so16, и сделать подключение как еще один регистор дисплея.
Подключить многогого кнопок на малололо выводов
Добавлено: Сб июл 04, 2026 06:32:12
petrenko
Вам же уже многогого вариантов предложили - Вы ещё ничего не попробовали ?
Призрачный Суслик писал(а): Пт июл 03, 2026 18:32:20
Отвечу на некоторые вопросы. Я писал об этом, но видимо не все прочитали :
1) У Atmel AT90S2313 нет встроенного АЦП. только компаратор
И, догадываюсь, Вы в учебнике прочитали устройство параллельного
Аналогово-
Цифрового_
Преобразователя из
2{в_степени}^N компараторов, но вероятно в том учебнике не было написано, как реализуется
Аналогово-
Цифровой_
Преобразователь на
ОДНОМ компараторе.
в Вашем же случае всё ещё проще - достаточно сформировать "треугольное" либо "пило-образное" напряжение и подавать его на вход компаратора "AIN0" - когда оно будет совпадать со значением, набираемым комбинацией кнопок с резистивной матрицей, будет срабатывать компаратор.
И, догадываюсь, Вы всем вышевысказавшимся людям даже благодарность высказать забудете, не то, что поделиться гонораром(
не гонором 
)
Всё, это последний раз не удержались, простите пожалуйста, больше так не будем
(
ну то есть советовать не будем - даже если очень попросите , но без предоплаты - будем старать-ся полный игнор - "честное пионерское" )
Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 14:12:33
Starichok51
petrenko писал(а): Сб июл 04, 2026 06:32:12в Вашем же случае всё ещё проще - достаточно сформировать "треугольное" либо "пило-образное" напряжение и подавать его на вход компаратора "AIN0" - когда оно будет совпадать со значением, набираемым комбинацией кнопок с резистивной матрицей, будет срабатывать компаратор.
а как ты узнаешь при каком потенциале сработал компаратор?
Rapra писал(а): Пт июл 03, 2026 13:26:42Подаётся на вход АЦП, для каждой кнопки и комбинации кнопок свое уникальное значение напряжения.
и сколько ты готов потратить кода программы для расшифровки любых комбинаций кнопок?
ведь даже по 2 кнопки из 16 кнопок дают 120 сочетаний. а по 3 из 16 - 560 сочетаний. и чем дальше, тем больше.
а всего различных сочетаний из 16 равно 2 в степени 16 и равно 65536.
Подключить многогого кнопок на малололо выводов.
Добавлено: Сб июл 04, 2026 16:25:38
petrenko
Starichok51 писал(а): Сб июл 04, 2026 14:12:33
а как ты узнаешь при каком потенциале сработал компаратор?
..
Так ведь "треугольник" или "пила" будет формироваться под "моим"/"нашим"/программиста чутким руководством.
Starichok51 писал(а): Сб июл 04, 2026 14:12:33
..
и сколько ты готов потратить кода программы для расшифровки любых комбинаций кнопок?
.. всего различных сочетаний из 16 равно 2 в степени 16 и равно 65536.
Это не потребует перебора 65535 комбинаций - ибо не все "любые" комбинации изпользуются - считанное состояние в своих 16(
шестнадцати)битах несёт информацию о нажатых кнопках - каждый бит "отвечает" за "свою" кнопку - достаточно проверить по маске по отдельности и в изпользуемых ( не"любых") сочетаниях.
Однако 2^16 потребует более точных резисторов при кнопках - 2^12попроще будет("кэп")
Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 16:54:08
Zapolyarny
то есть резисторы 1R, 2R, 4R, 8R, 16R, 32R, 64R, 128R, 256R, 512R, 1024R, 2048R
Если R = 100 Ом, то 205 кОм последний - вполне нормально.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 18:16:34
ejsanyo
Призрачный Суслик писал(а): Пн июн 29, 2026 23:51:07
Может кто чего либо предложит умного :
Надо дополнительно подключить к нему 12 условных "кнопок".
Короче, вот накатал примерную схему вашего "костыля", получите распишитесь:
Файл пришлось упаковать, а то форум зачем-то пытается масштабировать картинку и упарывает её!
Выглядит схема на превый взгляд перегружено, но по сути всё просто и прямолинейно, даже суслик разберётся. Ваши "псевдо-кнопки" будут замыкать входы
на плюс. По I2C "нажатая кнопка" будет читаться как "0" в соотв. бите. Вместо
74HC14 можно впаять, в принципе, и 74HC04, но лучше не надо. Снабберы VD1...VD12 тоже можно выкинуть, но мой встроенный визионер подсказывает, что с ними будет не так ссикотно. Последовательные резюки с 47k можно, если понадобиться, увеличить и до 100, но тут уже начинайте думать об утечках по плате, УР-ом её быть может замазать не помешает. Если сильно приспичит, кондёры на землю с 0,1 можно увеличить и до 1 мкФ. Подтяжечные на землю резюки... думайте сами, какие там у ваших "кнопок" утечки и насколько замыкается контакт. Мой встроенный визионер подсказывает, что микротоки через них подавать не стоит, лучше не мелочиться. Провода, соединяющие логику с PCF, делайте как можно короче. Земляную заливку на плате сделайте. Соединять костыль с основной платой тоже как можно короче, I2C не любит помехи и длинные провода.
Базовые адреса I2C для чипов будут 0x20 и 0x21 для PCF8574T, либо 0x38 и 0x39 для PCF8574AT, смотря какой достанете.
Пусть ваш погромист записывает в оба чипа 0xFF, а потом просто их читает. Прерывание выкидывается лог. нулём, когда изменяется состояние кнопки по отношению к прошлой записи/чтению. А после чтения сбрасывается. Так что после чтения и при "отжатии "кнопки" оно тоже придёт.
Ну и 4 старших разряда второй PCF остались без дела. Наверно, если хотите, можно их использовать ещё для чего-нибудь. Подумайте сами. Удачи вам там...

P.S. Исправил в схеме кое-какие косяки и добавил последовательно с выходами логики резисторы "защиты от дурака". На случай, если ваш погромист захочет записать в чипы не 0xFF, а что-то иное. Можете на досуге подумать, почему это важно.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 18:38:39
Starichok51
petrenko писал(а): Сб июл 04, 2026 16:25:38Так ведь "треугольник" или "пила" будет формироваться под "моим"/"нашим"/программиста чутким руководством
и сколько времени понадобится для формирования кучи ступенек для всех возможных комбинаций кнопок?
Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 19:52:01
Rapra
ejsanyo писал(а): Сб июл 04, 2026 18:16:34
Короче, вот накатал примерную схему вашего "костыля", получите
Слооооожно и дискретной логики много. Лучше было бы поставить простой микроконтроллер с 12-ю входами, отдельно под каждую кнопку.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Сб июл 04, 2026 22:43:28
Zapolyarny
Starichok51 писал(а): Сб июл 04, 2026 18:38:39
и сколько времени понадобится для формирования кучи ступенек для всех возможных комбинаций кнопок?
Немного. Формируются не ступеньки для комбинаций, создаётся АЦП и измеряется напряжение. Результат АЦП (в идеальном случае) и есть битовая комбинация кнопок. Так как практика неидеальна, необходимо будет коррекция значения под какой-то гистерезис. Мне видится число итераций равным числу контактных групп. Наверное ошибаюсь и выйдет чуть больше, но всё равно очень мало.
Так как сами контакторы - устройства относительно медленные, полагаю, времени на всё - вагон и тележка.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Вс июл 05, 2026 01:33:40
ejsanyo
Rapra писал(а): Сб июл 04, 2026 19:52:01
Слооооожно и дискретной логики много.
Когда у вас "кнопки, больше похожие на контакторы", лучше не мелочиться, это я по горькому опыту говорю! С другой стороны, простяцкий однорегистровый PCF8574 горе-погромисту поднять явно будет проще, чем исполнять всякие выкрутасы на +1 контроллере, а потом ещё их подружить между собой.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Вс июл 05, 2026 01:53:53
Zapolyarny
PCF8574 - это только I2C, +1 микроконтроллер - это любой интерфейс, например, UART.
Замечу, что при работе с PCF8574 придётся писать практически тоже самое для работы портов, только через прослойку интерфейса, которой не будет в отдельном мк. PCF8574 - это две линии и двунаправленный обмен. +1 мк - одна линия, одно направление.
Как Вы думаете, что проще реализовать, если предполагается подобный уровень программиста?
Re: Подключить многог кнопок на мало выводов.
Добавлено: Вс июл 05, 2026 02:49:49
ejsanyo
Zapolyarny писал(а): Вс июл 05, 2026 01:53:53
PCF8574 - это две линии и двунаправленный обмен. +1 мк - одна линия, одно направление.
И +1 прошивка, не забывайте. Одну линию хотите? А вы помните, что автор хочет будить свой "ОМК" прерываниями? После чего уже опрашивать кнопки. Просто пнуть в одну сторону и прерывание и данные, безо всякой обратной связи? Как-то слишком смело.

Изгаляться, делать однопроводной UART и на приём и на передачу? Кроме того, придётся ставить кварцы и там и там, чтобы не было разбега скоростей передачи. Или молиться на точность RC-генератора в контроллере-слэйве? (AT90, как мы помним, в любом случае работает только с кварцем) Как по мне, тоже такое себе. Полностью синхронный I2C в этом плане заморочек не имеет.
А ещё мой встроенный визионер подсказывает, что у него там аппаратный UART может быть уже чем-то занят. А делать второй программный - это ой как сложнее чем I2C!
Ну и ещё момент: автор, вроде как, вынужден загоняться по энергопотреблению. А вы точно уверены, что ваш контроллер-слэйв будет в этом плане хорош? Особенно в руках такого себе погромиста? PCF, с другой стороны, пока к ней нет обращения, жрёт практически ничего. Да и в динамике потребление мизерное.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Вс июл 05, 2026 04:09:51
Rapra
Вообще-то, на схеме принято изображать порядок от входа к выходу слева направо. Слева - входы, справа - выходы. Ну, так общепринято для облегчения понимания. А то при взгляде на схему получается расширитель ВЫХОДОВ, а не входов.
Во-вторых, дополнительная дискретная логика - излишне. Она ни от чего не защищает, и в случае чего сгорит так же как и PCF. Если хочется именно электрической защиты, тогда уж лучше поставить оптопары.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Вс июл 05, 2026 06:23:17
jcxz
ejsanyo писал(а): Сб июл 04, 2026 18:16:34
Короче, вот накатал примерную схему вашего "костыля", получите распишитесь:

ЧудоРасширительВвода.zip
Да уж... как всегда - ТС выбрал самый худший вариант из всех. Проигнорировав все прочие советы.
Зачем городить такой огород? Не понятно... Если уже допустимо внесение таких огромных корректировок в схему, то проще было добавить какой-нить простой микроконтроллер. Подключить кнопы к нему. Опрашивать кнопы его прошивкой и передавать в основной МК любым удобным способом. И городить для этого неудобный ногодрыжный I2C было бы совсем не обязательно и дополнительная схема была бы
кратно меньше.
Re: Подключить многог кнопок на мало выводов.
Добавлено: Вс июл 05, 2026 06:28:22
jcxz
ejsanyo писал(а): Вс июл 05, 2026 02:49:49Одну линию хотите? А вы помните, что автор хочет будить свой "ОМК" прерываниями? После чего уже опрашивать кнопки. Просто пнуть в одну сторону и прерывание и данные, безо всякой обратной связи? Как-то слишком смело.

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