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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
akl
Друг Кота
Сообщения: 4460
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

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

Сообщение BOB51 »

А с какой кнопки нулик то придет?
См. описание подключения - там единичка от "бегущей 1" с позиционных линий на линии возврата и с линий возврата на линию прерывания (я так прочитал... :dont_know: )...
:roll:
At90s2313 по фронту прерывания для выхода из сна не воспринимает. Это "старые простейшие" из АВРок. С Аттинькой 2313 не сравнивать!
8)
Это из даташита
Спойлер"...
Sleep Modes To enter the sleep modes, the SE bit in MCUCR must be set (one) and a SLEEP instruc-
tion must be executed. If an enabled interrupt occurs while the MCU is in a sleep mode,
the MCU awakes, executes the interrupt routine, and resumes execution from the
instruction following SLEEP. The contents of the Register File, SRAM and I/O memory
are unaltered. If a Reset occurs during sleep mode, the MCU wakes up and executes
from the Reset Vector.
Idle Mode When the SM bit is cleared (zero), the SLEEP instruction forces the MCU into the Idle
mode, stopping the CPU but allowing Timer/Counters, Watchdog and the interrupt sys-
tem to continue operating. This enables the MCU to wake up from external triggered
interrupts as well as internal ones like Timer Overflow interrupt and Watchdog Reset. If
wake-up from the Analog Comparator Interrupt is not required, the Analog Comparator
can be powered down by setting the ACD-bit in the Analog Comparator Control and Sta-
tus Register (ACSR). This will reduce power consumption in Idle mode. When the MCU
wakes up from Idle mode, the CPU starts program execution immediately.
..."
млин... даже такой мелкий даташит не прицепить - приходится "выкусь" делать...
А это выкусь из вышеприведенной книжи:
Спойлер"...
4.3.1. Режим Idle
В этом режиме прекращает работу ЦПУ микроконтроллера, а все осс
тальные периферийные устройства (SPI, UART, таймеры/счетчики, аналоо
говый компаратор, АЦП, сторожевой таймер), а также подсистема прерыы
ваний продолжают функционировать. За счет этого выход из режима Idle
возможен как по внешнему прерыванию, так и по внутреннему, например
при переполнении таймера. Для еще большего уменьшения энергопотребб
ления в режиме Idle рекомендуется отключать встроенный аналоговый комм
паратор, если не требуется выход из «спящего» режима по прерыванию от
компаратора. Аналоговый компаратор отключается установкой в «1» флага
ACD регистра ACSR. Подробно этот регистр будет рассмотрен в главе 7.
Основным преимуществом режима Idle является быстрая реакция на
события, приводящие к «пробуждению» микроконтроллера. Другими слоо
вами, выполнение программы начинается сразу же после перехода из рее
жима Idle в рабочий режим.
4.3.2. Режим Power Down
В режиме Power Down функционирование всех систем микроконтролл
лера, включая тактовый генератор, прекращается. Единственными узлаа
ми, продолжающими работать в этом режиме, являются сторожевой тайй
мер (если он включен) и подсистема обработки внешних прерываний. Соо
ответственно выход из режима Power Down возможен только при возникк
новении одного из трех событий:
• внешний (аппаратный) сброс;
• сброс от сторожевого таймера (при наступлении тайммаута сторожее
вого таймера);
• возникновение внешнего прерывания (для AT90S90C8534 — по
фронту, для остальных моделей — по уровню).
Следует заметить, что при нахождении микроконтроллера в режиме
Power Down прерывание может быть сгенерировано только в результате ус丐
тановки НИЗKОГО уровня на входах внешних прерываний либо в результаа
те изменения уровня на этих входах (для AT90S/LS2333 и AT90S/LS4433).
Сказанное справедливо для всех моделей микроконтроллеров за исключении
ем модели AT90C8534. В этой модели генерация внешних прерываний всее
гда происходит только по фронту сигнала на входе внешнего прерывания.
Для выхода микроконтроллера из режима Power Down по внешнему
прерыванию длительность активного сигнала должна удовлетворять слее
дующим условиям:
• AT90S1200, AT90S2313, AT90S/LS4434, AT90S/LS8535, AT90S4414 и
AT90S8515: длительность импульса НИЗKОГО уровня на входе
внешнего прерывания должна превышать величину задержки сброса
tTOUT (см. раздел 4.4);
• остальные модели: длительность активного сигнала должна быть не
меньше двух периодов сигнала тактового генератора сторожевого
таймера (типовые значения: ≥ 2 мкс при VCC = 5 В и ≥ 5.4 мкс при
VCC = 3 В). Для получения более полной информации по сторожее
вому таймеру обратитесь к главе 6.
Между наступлением события, приводящего к выходу микроконтролл
лера из режима Power Down, и началом работы микроконтроллера прохоо
дит некоторое время, в течение которого тактовый генератор микроконтт
роллера выходит на рабочий режим. По длительности эта задержка равна
задержке сброса tTOUT (см. раздел 4.4).
И, наконец, последнее замечание по поводу прерываний. Если сигнал,
вызвавший «пробуждение» микроконтроллера, исчезнет раньше, чем мии
кроконтроллер перейдет в рабочий режим, обработчик соответствующего
прерывания вызван не будет.
..."
:?
Реклама
Вымогатель припоя
Сообщения: 619
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Да уж, пичалька, когда микроконтроллер весьма древний, а компания-разработчик "едет на подсосе", и даже вместо программиста - всего лишь студент
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Rapra писал(а): Чт июл 09, 2026 19:56:06 и даже вместо программиста - всего лишь студент
И опять возражу Вам, уважаемый Rapra: печаль не это, а то, что даже нормального ТЗ нет и некому его составить.
Программист у них есть, а вот толкового инженера, который сможет поставить задачу - нет.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 19068
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

вот матрица 4х4.
тут у меня нарисован АТмега8, но это не принципиально.
2026-07-09_21-49-26.png
(162.9 КБ) 17 скачиваний
перед уходом в сон:
на колонках ставим 1 - входы с подтяжкой,
на строках ставим 0 - выходы с нулями,
на входе прерывания ставим 1 - вход с подтяжкой.
прерывание настраиваем по спаду уровня и разрешаем его.
когда нажмем любую кнопку, ноль со строки через диод на колонке попадет на вход прерывания - МК проснется.
в обработчике прерывания запрещаем это прерывание.
затем делаем другую настройку портов:
на строках ставим 1 - входы с подтяжкой,
на колонках по очереди ставим 0 - выход с нулем.
далее проверяем на какой строке появился ноль с выбранной колонки, или на каких строках, если в колонке нажато несколько кнопок.
и так повторяем проверки на каждой строке для всех колонок.
и никаких резисторов и прочих наворотов не нужно.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Потрогал лапой паяльник
Сообщения: 398
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Starichok51 писал(а): Чт июл 09, 2026 22:14:18 и никаких резисторов и прочих наворотов не нужно.
Если порты работают только на матрицу контактов. А если ещё и на дисплей, то придётся использовать немного резисторов.
Реклама
Мудрый кот
Сообщения: 1757
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Starichok51 писал(а): Чт июл 09, 2026 22:14:18 вот матрица 4х4.
тут у меня нарисован АТмега8, но это не принципиально.
2026-07-09_21-49-26.png
...
и никаких резисторов и прочих наворотов не нужно.
Разве так можно делать? :shock: Где последовательные с кнопками диоды?
Эта схема превратится в тыкву, как только пользователь нажмёт некоторые комбинации кнопок. А ТС в 1-м сообщении ещё указал, что могут быть произвольные комбинации нажатий кнопок.
Starichok51 писал(а): Чт июл 09, 2026 22:14:18 перед уходом в сон:
на колонках ставим 1 - входы с подтяжкой,
на строках ставим 0 - выходы с нулями,
на входе прерывания ставим 1 - вход с подтяжкой.
прерывание настраиваем по спаду уровня и разрешаем его.
когда нажмем любую кнопку, ноль со строки через диод на колонке попадет на вход прерывания - МК проснется.
...и пока кнопка нажата - всё время будет идти потребление.
akl
Друг Кота
Сообщения: 4460
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

BOB51 писал(а): Чт июл 09, 2026 16:15:21...At90s2313 по фронту прерывания для выхода из сна не воспринимает. Это "старые простейшие" из АВРок...
Но даже в них норвеги заложили возможность отклика на прерывания по низкому уровню, спаду и фронту внешнего сигнала в режиме SLEEP IDLE. В режиме SLEEP PWD остается только срабатывание по низкому уровню. См. описание регистра MCUCR.
Изображение
Вложения
AT90S2313_Ext.jpg
(19.34 КБ) 39 скачиваний
Модератор
Аватара пользователя
Сообщения: 19068
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

jcxz писал(а): Пт июл 10, 2026 01:47:29Разве так можно делать? Где последовательные с кнопками диоды?
Эта схема превратится в тыкву, как только пользователь нажмёт некоторые комбинации кнопок. А ТС в 1-м сообщении ещё указал, что могут быть произвольные комбинации нажатий кнопок.
не только можно, но и нужно так делать. и не нужны диоды к каждой кнопке.
диодное ИЛИ у меня только со столбцов на вход прерывания.
эта схема у меня прекрасно работает в моем макете пульта инфракрасного дистанционного управления. сам пульт я так и не стал изготавливать.
там у меня матрица 4х8 - 4 столбца и 8 строк, 32 кнопки.
и я подробно расписал, как определять любые комбинации кнопок.
jcxz писал(а): Пт июл 10, 2026 01:47:29и пока кнопка нажата - всё время будет идти потребление.
и пока кнопка нажата будет повторятся функция нажатой кнопки.
а когда кнопка (или все нажатые кнопки) будет отпущена, то после выполнения функции (функций) МК опять уйдет в сон.
еще раз повторю - моя схема прекрасно работает.
а какая схема подключений будет у ТС, мы так и не знаем. из его словесного описания я лично так ничего и не понял.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Ответить

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