Микроконтроллеры | Ликбез по С для микроконтроллеров PIC |
|
---|---|---|
Да ничего там сложного, если прерывания только кнопками и занимаются, то так даже проще, чем через таймер. |
|
|
chav1961, так мне казалось, что используя прерывания по изменению уровня я, наоборот, упрощу её за счёт исключения программы опроса клавиатуры. МК либо "спит", либо занимается чем-то полезным, а по прерыванию, возникшему при нажатии кнопки, просто читает состояние порта. Останется только посмотреть принятый байт для определения, какая именно кнопка (или комбинация оных) была нажата. |
|
|
DWD: Ну вот, и Vladikas говорит Если МК всё время спит, то зачем он в полудрёме на килогерцах? Ведь он может спать глухо и будиться от того же прерывания (если я ничего не путаю, давно этим не занимался...). |
|
|
Думаю, стоит попробовать реализовать и работу с кнопками через обработчик прерываний, и работу с кнопками через опрос. Тогда сами сможете убедиться, какой из вариантов лучше. Могу только повторить то, что писал раньше - если работа с кнопками подразумевает нечто большее, чем просто клик, с прерываниями лучше не связываться. |
|
|
Vladikas: Если МК всё время спит, то зачем он в полудрёме на килогерцах? Это я, просто, ещё не определился - дать МК заснуть или заставить его выполнять какую-то "не пыльную" работу. chav1961: ...если работа с кнопками подразумевает нечто большее, чем просто клик, с прерываниями лучше не связываться. А можете привести конкретный пример этих "граблей" - как Вы на них "наступили"? На что расчитывали и что получили? |
|
|
Простейший пример - двойной клик: нажатие кнопки - отпускание - повторное нажатие за время, меньшее оговоренного. |
|
|
Можно так, мк спит, нажата кнопка, мк проснулся, зашел в прерывание, прерывания запретились, выполняется работа, работа закончена, таймер (если время работы маленькое), разрешены прерывания, мк заснул. |
|
|
Можно. А зачем? То же самое - опросили клавиатуру, обнаружили изменившиеся клавиши, обработали. Если для экономии питания - может быть, стоит, а в остальных-то случаях? |
|
|
Не обязательно, для режима прерывания по изменению уровня. |
|
|
chav1961: речь в первоначальном вопросе шла о матрице клавиш. Вот пример с исходником для матрицы клавишь 4x4 keypad . Есть пример и в PROTEUS. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |