Микроконтроллеры | Индикация нажатой кнопки |
|
---|---|---|
Каким образом можно сделать так, чтобы индицировать светодиодом, подключенным к выводу порта МК, нажатие кнопки, которая висит на том же выводе порта? Я понимаю, что после нажатия надо переводить вывод порта в состояние выхода и записывать туда 0 (если светодиод подключен к + пит. через резистор), но не могу придумать алгоритм для двух и более кнопок, чтобы состояние нажатой кнопки восстанавливалось при нажатии на другую... МК - ATMega16. |
|
|
|
|
|
chav1961: ...при нажатии на любую кнопку сначала все выводы с кнопками переводим в режим ввода... А до нажатия, если эти выводы не входы как МК узнает что кнопка нажата? При инициализации портов эти выводы с кнопками всё равно же входы!? |
|
|
А причем здесь выходы или входы? Регистр PINx связан непосредственно с пинами порта, ему вообще наплевать, в каком порт режиме. Он что видит на линии, то и поет |
|
|
а почему формально не решить задачу? почему нельзя подключить светодиод параллельно контроллеру? при нажатии на кнопку он будет зажигатся и сигнал на МК пойдет.. |
|
|
BCluster: при нажатии на кнопку он будет зажигатся и сигнал на МК пойдет..Но в этом случае светодиод тут же погаснет как будет отпущена кнопка, а надо бы чтобы он продолжал подсвечиваться, понимаете? Вот такая сложная задача Ладно, алгоритм есть, буду разбираться. |
|
|
BCluster: при нажатии на кнопку он будет зажигатся и сигнал на МК пойдет.. а вот на момент следующей проверки нажатости кнопки (если нужно) на короткое время МК погасит светик,(на единицы милисекунд) , перенастроит порты, проверит кнопку и снова вернет в предыдущее состояние. Это чисто теоретически т.к с AVR близко не знаком. |
|
|
Надо подумать как проще, по любому приходится мудрить с битовыми операциями; так подсвечивать постоянно светодиоды получается, но только такая проблема - подтяжка с некоторых входов почему-то отключается, это ещё не победил. |
|
|
Может я что-то не понял. Порт настроен, как вход. Светодиоды подключены через резистор к плюсу, катодом к порту. Нажали кнопку, засветился соответствующий светодиод, порты перестроились, как выходы. На данном пине выводится 0, на остальных 1. Теперь нажимаем кнопку на другом пине, сажаем выход 1 на корпус, сжигаем порт. |
|
|
choroh: Нажали кнопку, засветился соответствующий светодиод, порты перестроились, как выходы. Можно перестроить на выход только нужный разряд порта, остальные оставить входами. Еще в цепь светодиода обычно ставят резистор, можно кнопку поставить после него, тогда даже если порт в состоянии выхода, он будет на время нажатия нагружен не на корпус, а на этот резистор.. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |