Микроконтроллеры | Индикация нажатой кнопки |
|
---|---|---|
Digital: У меня прерывание по переполнению уже используется, не хотелось бы его еще больше затягивать. |
|
|
а возьмите другое прерывание ) у вас 3 таймера ЗЫ я когда начинал осваивать МК только, тоже старался в него все запихнуть) потом почему то стал отказываться от этого, не знаю почему. Стал внешние дешифраторы и пр. хрень вешать... |
|
|
Digital: на протеус у меня антивирь ругается |
|
|
А что, прерывания от изменения состояния на ногах не подходят? Pin_Change кажется называется. Может не у всех есть, но на мегах точно должно быть. На ATMega48 есть, я его регулярно использую. И решение простое - вешаем с плюса светодиоды через резисторы на ноги, сконфигурированные как вход, но с нулем на выход. Исходное состояние - 1 с плюса через светодиоды. При нажатии кнопки на минус с этих же ног обрабатываем прерывание на ногах, переводим ногу на выход, 0 там уже есть, светодиод продолжает гореть. Никакого дребезга быть не может, нога уже в нуле, кнопкой ниже не опустим. При нажатии на другую кнопку обрабатываем прерывание, старую ногу - на вход (можно сразу все старые ноги), новую - на выход, и там опять 0. Новый светодиод горит, старый погас. |
|
|
Krug: Никакого дребезга быть не может, нога уже в нуле |
|
|
Digital Работай со светодиодами в динамическом режиме, сважность 1/8 ( работает и 1/18 нормально) . |
|
|
Zandy: Дык вот... прерывания по изменению состояния портов, на которые навешаны кнопки, и мгновенное принятие решения о нажатой кнопке думается мне, из той же оперы, что и кнопки на RS входах триггера. Для более ответственных задач я вешаю кондер на ногу и плюсом в обработке прерывания отслеживаю, что состояние ноги остается неизменным в течение какого-то разумного времени (напр. 10-20 мс для частоты сети). После этого считается, что нога нажата. |
|
|
Krug: А что, прерывания от изменения состояния на ногах не подходят? Pin_Change кажется называется. Посмотрел ДШ на мегу16 - стр.45 Interrupts. Не нашел указания на присутствие такой возможности. |
|
|
dosikus: Работай со светодиодами в динамическом режиме... Это пока заморочно для меня. Увы, не дорос ещё. Осваиваю операции попроще сначала. |
|
|
Ещё хотел спросить, почему нижеприведенный код может не работать, ну вернее он работает, но только в порядке убывания (кнопка 3-кнопка 2-кнопка 1). И всё, 1-2-3, например, и в любом другом порядке уже не работает, где тут ошибка, не могу понять, вроде всё просто и должно работать? Так вот сначала и хотел сделать (ну кроме размещения в функции прерывания). void main(void) |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |