Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
05.08.2005, 23:38
|
|
Прописка
Регистрация: 17.03.2005
Сообщений: 122
Сказал спасибо: 1
Сказали Спасибо 33 раз(а) в 7 сообщении(ях)
|
Может быть ты и прав, я еще досконально все не протестировал. Но к понедельнику планирую все закончить. Как раз в понедельник и клава будет. Там и проверю
|
|
|
|
05.08.2005, 23:40
|
|
Прописка
Регистрация: 17.03.2005
Сообщений: 122
Сказал спасибо: 1
Сказали Спасибо 33 раз(а) в 7 сообщении(ях)
|
Я просто хотел показать как все это можно быстро обработать
|
|
|
|
06.08.2005, 15:59
|
|
Прописка
Регистрация: 17.03.2005
Сообщений: 122
Сказал спасибо: 1
Сказали Спасибо 33 раз(а) в 7 сообщении(ях)
|
Да, уважаемый ObitJr, Вы были абсолютно правы. Но, повторяю, код был набросан и не протестирован.
теперь первый цикл do...while выглядит вот так:
do
{ KB_Port_Setup();
KB_DDR |= scanner;// устанавливаем одну линию на вывод
KB_PORT &= ~scanner;// устанавливаем на этой линии "0"
num_wires--; // уменьшаем счетчик циклов и выполняем задержку для уст. состояния порта
key &= (KB_PIN | KB_NO_USE | scanner); // считываем состояние линий, отсекая возможные нули в неиспользуемых линиях, и ноль на линии сканирования
scanner ››= 1; // формируем новый скан-код
}
while(num_wires);
Вот теперь на самом деле все работает правильно, но я еще модифицировал немного код, о чем будет написано на странице моего сайта
|
|
|
|
06.08.2005, 17:31
|
|
Временная регистрация
Регистрация: 04.04.2005
Сообщений: 77
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Так всё можно осуществить по 3-м проводам с использованием десятичного счётчика. Причём количество кнопок практически неограниченное и можно одновременно нажимать хоть все кнопки!
На вход счётчика - сброс и счёт, а на выход - кнопки с диодами.
И это обойдётся дешевле, чем с использованием ног контроллера. Так же на этот счётчик можно посадить какой-нибудь индикатор
__________________
No pain - no gain. Ha-ha
|
|
|
|
06.08.2005, 18:01
|
|
Стиральная машина
Гость
|
если есть АЦП, то можно сколько угодно повесить кнопок
каждая кнопка через резистор своего номинала, а АЦП измеряет что нажали, НО это при условии что всегда нажимают какую-то одну кнопку. И понадобится только один провод
|
|
|
|
06.08.2005, 18:11
|
|
Временная регистрация
Регистрация: 04.04.2005
Сообщений: 77
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Да, но это при условии хороших кнопок и АЦП, короткого соединительного провода. Такое я видел в каком-то CD плеере, там было кнопок 7
__________________
No pain - no gain. Ha-ha
|
|
|
|
06.08.2005, 19:02
|
|
Прописка
Регистрация: 17.03.2005
Сообщений: 122
Сказал спасибо: 1
Сказали Спасибо 33 раз(а) в 7 сообщении(ях)
|
Сообщение от Стиральная машина
|
если есть АЦП, то можно сколько угодно повесить кнопок
каждая кнопка через резистор своего номинала, а АЦП измеряет что нажали, НО это при условии что всегда нажимают какую-то одну кнопку. И понадобится только один провод
|
Ну, вообщето вопрос был без применения навесных элементов. А на счет, вообще, использования АЦП в качестве дешифратора кнопок я против, очень много минусов:
1. Значительное использование времени работы МК;
2. Малая помехоустойчивость
3. Необходимость использования МК с АЦП
4. Дорого
5. Практически не возможно использовать в аппаратуре с батарейным питанием
Скорее всего это еще не все минусы.
К плюсам могу отнести толко использование одной линии для (теоретически) не ограниченного количества кнопок. На самом деле количество кнопок ограничивает разрядность АЦП и тербования к помехоустойчивости. Самый помехоустойчивый девайс с таким принципом работы клавиатуры будет при количестве кнопок на входе АЦП = 1
|
|
|
|
06.08.2005, 19:07
|
|
Прописка
Регистрация: 17.03.2005
Сообщений: 122
Сказал спасибо: 1
Сказали Спасибо 33 раз(а) в 7 сообщении(ях)
|
Сообщение от Dozer
|
Так всё можно осуществить по 3-м проводам с использованием десятичного счётчика. Причём количество кнопок практически неограниченное и можно одновременно нажимать хоть все кнопки!
На вход счётчика - сброс и счёт, а на выход - кнопки с диодами.
И это обойдётся дешевле, чем с использованием ног контроллера. Так же на этот счётчик можно посадить какой-нибудь индикатор
|
Вот тут я с тобой не согласен, дешевле, если между микроконтроллером и кнопками ничего больше нет, даже резисторов - одни провода, кнопки и ... МК
|
|
|
|
06.08.2005, 21:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Вот сколько я занимаюсь МК так никогда не парился с кнопками сколько бы их не было.
Просто вешал их на входы (свободные или нет), делал фильтр от дребезга (лучше всего 5 отчетов из .
В итоге получалось быстро и совсем немного места и что самое главное стабильно работало.
Тоже самое с зажиганием LED матриц и шкал (по простоте).
Что мы обсуждаем?
Удельное количество кнопок на одну линию?
в простейшем случае B=N
если надо то можно B=(N/2)^2
если АЦП то в зависимости от схемы B›10*N
если использовать клавиатуры с контроллером то еще больше.
Если надо могу еще способов привести кучу.
Универсального способа нету. Он будет каждый раз разный - от схеме к схеме.
Я бы лучше пообсуждал различные варианты фильтрации
нажатий как программные так и аппаратные.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:31.
|
|