Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение клавиатуры 4х4 к МК A90Sxxxx 
:(
    Опции темы
dimoZa
Дата 15.10.2005, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



С какой частотой необходимо обращаться к портам ввода (PINx), чтобы успеть отследить любое нажатие кнопки с любой длительностью, с любым периодом и как при этом лучши поступать - подключать подтягивающие резисторы или нет.
PM MAIL   Вверх
Alexei
Дата 17.10.2005, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 20.8.2003

Репутация: 4
Всего: 4



Цитата(dimoZa @ 15.10.2005, 21:51)
С какой частотой необходимо обращаться к портам ввода (PINx)

Раз 5 в сек хватит.

Цитата(dimoZa @ 15.10.2005, 21:51)
подключать подтягивающие резисторы или нет.

Можно припаять снаружиsmile
Используй Pin Change Interrupt,или опрашивай все кнопки оптом,
для установления нажатия.
Обязательно задержка на подавление "дребезга" 15-50 мс.
Посмотри на сайте Атмел док. AVR240, AVR243
PM MAIL   Вверх
PILOT
Дата 17.10.2005, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



50-100 раз в секунду, чтобы отследить дребезг. Подсоеденить нужно матрицей. Метод анализа: "скользящий ноль".

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
dimoZa
Дата 17.10.2005, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Объясните вразумительно и толково, что такое дребезг клавиатуры, а то в общих чертах вроде понимаеться, но четкого представления нет и в литературе никак не найду про это.
PM MAIL   Вверх
PILOT
Дата 17.10.2005, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Нет абсолютного мгновенного контакта, всегда в течении комутации существует "дребезг", и в течение этой коммутации нельзя определить есть нажатие или нет, т.к. сигнал дергается (если мяч уронить на пол, он не сразу успокаевается, а еще долго скачет, так же и контакт, только период "прыжка" очень мал). Яркий пример игнорирования дребезга: автоматы по оплате услуг мобильной связи, неаккуратное нажатие и цифра введена 5 раз вместо одного. Поэтому необходимо несколько раз опросить клавиатуру и не реагировать на первый же признак нажатие, а собрать статистику. Как правило 8-10 считанных состояний "НАЖАТО" свидетельствуют о нажатии (и наоборот при отпускании), частота опроса около 50-100 Гц, тогда и пользователь не учует запаздивание, и вы со спокойной душой проведете анализ на дребезг.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
dimoZa
Дата 17.10.2005, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Большое спасибо, PILOT, за ответ, наконец-то стало понятно, особенно удачный пример привел!
PM MAIL   Вверх
cardinal
Дата 18.10.2005, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



А вот тебе, dimoZa, еще и картинка по теме contact bounce (проблема) и debouncing (решение проблемы):
http://www.elexp.com/t_bounc.htm


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Alexei
Дата 18.10.2005, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 20.8.2003

Репутация: 4
Всего: 4



Цитата(PILOT @ 17.10.2005, 18:17)
50-100 раз в секунду, чтобы отследить дребезг.

Не рационально.Сперва лучше установить факт нажатия, а после душить "дребезг"
PM MAIL   Вверх
PILOT
Дата 18.10.2005, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Не знаю удачно ли я сейчас объясню, но есть такая реализация описанного мной метода.
Пусть у нас есть Байт (8 бит). Мы сканируем клавиатуру с определенным периодом (допускаем что период может быть не одинаковым, т.е. например опрос в общем цикле, к чему нам прерывания портить этой несрочной задачкой), после сканирования мы вдвигаем в этот Байт ровно один бит:
1 - если было нажатие
2 - если его не было
если Байт равен $FF то было нажатие, если $00 то было отпускание (естественно нужно ввести признак предыдущего состояния чтобы работать по событиям).
Как видно ни одного сканирования не проходит впустую, все фиксируются. Но реагируем только на события.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
dimoZa
Дата 18.10.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Нет , немного не понятно - вдвигаем один бит, а в результате получаем или поностью заполненный байт или вообще пустой, как это?!
Добавлено @ 21:47
И вообще, если я правильно понял, если сканировать с большой частотой, то однократное нажатие может стать причиной появления несколько символов на дисплее (как будто нажали несколько раз) из-за так называемого дребезга, я прав?
PM MAIL   Вверх
PILOT
Дата 18.10.2005, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Биты мы вдвигаем после каждого сканирования, т.е. этот Байт он каждый раз сдвигается (меняется).

Если сканировать оочень быстро, то можно зафиксировать ложные нажатия, т.е. дребезг.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Rolax
Дата 13.11.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.6.2005

Репутация: нет
Всего: нет



Прошу меня извинить!!!
Я только начинаю заниматься програмированием микроконтроллеров!!!
Понятно что такое дребезг и понятно как опрашивается клавиатура, но не совсем понятно как избавляться от этого дребезга програмно!
Вот здесь были упомянуты документы AVR240, AVR243 как в них организована эта подпрограмма! На какие строчки хоть смотреть?!!
Об этом много говориться на разных форумах, но ничего конкретного. Помогите разобраться с этим раз и навсегда!
И если можно небольшой пример, а то одни слова и слова!!!
Пожалуйста!!!!!





PM MAIL   Вверх
cardinal
Дата 13.11.2005, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Если просто - то так:
Код

while(true) // главная крутилка
{
   while(PORT1_0 == 1){} // ждешь пока не нажата кнопка
   ... // делаешь то, что тебе надо
   ...


   while(PORT1_0 == 0){} // ждешь пока не отпущена кнопка
}

То есть если тебе надо просто что-то сделать по нажатию кнопки, то не бери ты в голову этот дребезг. smile Кнопка сработала - отлично поехали, пока ты занимаешься своими вещами дребезг сто раз кончится и никак не повлияет на двойное срабатывание. Если будут проблемы (и дребезг все так будет негативно влиять на что-нибудь), то поставь
Код

_asm
{
   nop
   nop
   ...
   nop
}

То есть задержка в столько то наносекунд. Сколько наносекунд зависит от кнопки. Чем лучше кнопка, тем меньше дребезга.
Я думаю ты на самом деле больше будешь пытаться даже сэмулировать дребезг и получить плохой результат, чем он самом деле будет как-то влиять на обработку нажатия кнопки.
Возможно если делать обработку нажатия клавиши по прерыванию (что как бы надо делать иначе частые нажатия будут игнорироваться), то тогда возможно дребезг влияет более важную роль и тогда надо подстраховываться, но сам не пробовал.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
cardinal
Дата 13.11.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



А еще посмотри (сверху ссылка) на figure 2 - hardware решение проблемы...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
PILOT
Дата 13.11.2005, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Цитата(cardinal @ 13.11.2005, 14:46)
То есть если тебе надо просто что-то сделать по нажатию кнопки, то не бери ты в голову этот дребезг. smile

Если так думать, то дребезг не нужно фильтровать, но это неправильно. Смысл любой антидребезговой деятельности сводится к тому чтобы отреагировать только после того как перестали беспорядочно меняться состояния, т.е. реакция будет только тогда, когда состояние устойчиво заданный промежуток времени. Вот и вся задача. Игнорировать дребезг нельзя, иначе можно получить ложные срабатывания. А скорость контроллера достаточно высока, чтобы зафиксировать несколько нажатий (кардинал забыл о ложных "отпусканиях" в момент нажатия).

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Rolax
Дата 17.11.2005, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.6.2005

Репутация: нет
Всего: нет



Спосибо за ответы!!!
Стало намного понятнее.
Но вот еще вопросы остались!
№1
Вот PILOT описал способ, он же как я понимаю Задани №1-2(к лабораторной работе), процедура дребезг. А как сдесь можно подсчитать задержку?
№2
Попрежнему остался вопрос с документом AVR240 и AVR242. Ну что-то я, ну ни как не могу найти и понять как организована задержка там?
Помогите, уж очень хочется разобраться во всем этом!
Вы меня уж извините за таки вопросы, но я же только учусь!!! smile))
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.