Страница 2 из 2 Первая 12
Показано с 21 по 35 из 35

Тема: Нужен совет по работе с AVR

  1. #21
    Завсегдатай Аватар для Pyku_He_oTTyda
    Регистрация
    22.06.2005
    Адрес
    Москва
    Возраст
    50
    Сообщений
    4,304

    По умолчанию Re: Нужен совет по работе с AVR

    forever_student, я не рассматриваю вариант отслеживания нажатия кнопки через прерывание.

    Offтопик:
    Прошу прощения, в предыдущем посте не то слово написал, счас поправлю.
    Андрей

  2. #22
    Старый знакомый Аватар для forever_student
    Регистрация
    02.04.2011
    Адрес
    Москва
    Сообщений
    680

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от Pyku_He_oTTyda Посмотреть сообщение
    forever_student, я не рассматриваю вариант отслеживания нажатия кнопки через прерывание.

    Offтопик:
    Прошу прощения, в предыдущем посте не то слово написал, счас поправлю.
    Тогда нажатие - это первый же 0 на соответствующем пине.

  3. #23
    Мимо проходил Аватар для Костя Мусатов
    Регистрация
    05.03.2004
    Адрес
    Москва
    Возраст
    57
    Сообщений
    5,529

    По умолчанию Re: Нужен совет по работе с AVR

    Я вообще с простыми кнопкам поступал так. Делал таймер с прерыванием каждую миллисекунду (он еще и для других дел нужен). Там если пин = 1, то счетчик на Х (где Х время удержания, например 50 мс). Если пин = 0, до декремент счетчика если он больше 0. А в основном коде проверялось равенство 0 счетчика для принятия решения и установка счетчика на -1, как признак, что команда отработана.

  4. #24
    Завсегдатай
    Автор темы
    Аватар для Romanoff
    Регистрация
    03.04.2008
    Адрес
    Саратов
    Возраст
    38
    Сообщений
    2,285

    По умолчанию Re: Нужен совет по работе с AVR

    Друзья, спасибо всем за советы и указания на ошибки в коде! Привел в нормальный вид синтаксис, все работает
    Пойду учиться распознавать длинное нажатие, чувствую что проще будет переделать алгоритм на подсчет состояний кнопки по таймеру... Еще раз всем спасибо!
    Критиковать — значит доказывать автору, что он не сделал этого так, как сделал бы я, если б умел (с) Карел Чапек

  5. #25
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    61
    Сообщений
    36,248

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от Pyku_He_oTTyda Посмотреть сообщение
    Самое простое подавление прерыванийдребезга, циклически опрашивать кнопку и инкриминировать счетчик.
    При достижении определенного значения счетчика считаем кнопку нажатой. Если заданного значения не достигли и обнаружили отпускание кнопки - сбрасываем счетчик.
    Это не самый хорогий вариант. Лучше при нажатии вообще не давить дребезг, а сразу выполнять функцию кнопки, по первому определению что она нажата. А вот факт отпускания - фиксировать с подавлением дребезга.
    Прерывание от самих кнопок вообще не обязательно, если не надо от него просыпаться и если в системе есть (а оно почти всегда есть) какое-нибудь регулярное времязадающее прерывание (например с периодом 1мс) - в нем просто проверять кнопки. КАк примерно Костя описал.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Ну что, можете меняться обратно."(с)типа анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  6. #26
    Завсегдатай Аватар для Turbo_man
    Регистрация
    06.04.2010
    Адрес
    Moscow
    Сообщений
    5,574

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от Alex Посмотреть сообщение
    Лучше при нажатии вообще не давить дребезг, а сразу выполнять функцию кнопки, по первому определению что она нажата. А вот факт отпускания - фиксировать с подавлением дребезга.
    При использовании разных длительностей нажатия - нельзя так.

    Кто-нибудь использует двойной клик?

  7. #27
    Старый знакомый Аватар для forever_student
    Регистрация
    02.04.2011
    Адрес
    Москва
    Сообщений
    680

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    При использовании разных длительностей нажатия - нельзя так.

    Кто-нибудь использует двойной клик?
    Принцип всё равно тот же: нажатие - первый же 0 (если порт к + подтянут), отпускание - через антидребезг. Главное - зафиксировать факт нажатия (отпускания) - а когда выполнять какие-то действия - по нажатию, по отпусканию, по нажатию более заданного времени - это уже дело другое
    Если двойной клик - то отслеживать время после отпускания, если до следующего нажатия меньше заданного - то двойной клик.

  8. #28
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    61
    Сообщений
    36,248

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от Turbo_man Посмотреть сообщение
    При использовании разных длительностей нажатия - нельзя так.
    Нельзя, но разные длительности не всегда и не на всех кнопка используются., а для таких - это алгоритм намного лучше подавления дребезга по двум фронтам, описанного в первой книжке Коффрона, которой все ппользуются уже лет 30, и лепят "как там"
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Ну что, можете меняться обратно."(с)типа анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  9. #29
    Завсегдатай Аватар для JazMan
    Регистрация
    15.02.2011
    Адрес
    Москва
    Сообщений
    1,874

    По умолчанию Re: Нужен совет по работе с AVR

    Я бы сделал проще.
    Сделал бы обработку кнопок по прерыванию. При возникновении прерывания, обработал бы (неважно сейчас, как и где), и запретил бы его на 100 ms.

  10. #30
    Старый знакомый Аватар для forever_student
    Регистрация
    02.04.2011
    Адрес
    Москва
    Сообщений
    680

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от JazMan Посмотреть сообщение
    Я бы сделал проще.
    Сделал бы обработку кнопок по прерыванию. При возникновении прерывания, обработал бы (неважно сейчас, как и где), и запретил бы его на 100 ms.
    А кнопка отпускается, например, через 0,5 сек. дребезг - прерывание - ложное нажатие?

  11. #31
    Завсегдатай Аватар для JazMan
    Регистрация
    15.02.2011
    Адрес
    Москва
    Сообщений
    1,874

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от forever_student Посмотреть сообщение
    А кнопка отпускается, например, через 0,5 сек. дребезг - прерывание - ложное нажатие?
    Зависит от алгоритма, от того что требуется.
    Если допускается автоповтор, то защищаемся (небольшой задержкой) только от дребезга контактов, иначе блокируем на максимально возможную задержку.

  12. #32
    Старый знакомый Аватар для forever_student
    Регистрация
    02.04.2011
    Адрес
    Москва
    Сообщений
    680

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от JazMan Посмотреть сообщение
    ...
    Если допускается автоповтор, то защищаемся (небольшой задержкой) только от дребезга контактов...
    И получаем ложное нажатие в момент отпускания?

    Цитата Сообщение от JazMan Посмотреть сообщение
    ...
    ...иначе блокируем на максимально возможную задержку.
    А если во время "максимально возможной задержки" кнопку отпустили и нажали другую?

  13. #33
    Завсегдатай Аватар для JazMan
    Регистрация
    15.02.2011
    Адрес
    Москва
    Сообщений
    1,874

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от forever_student Посмотреть сообщение
    И получаем ложное нажатие в момент отпускания?
    Не ложное срабатывание, а как написано выше, авто-повтор.

    Цитата Сообщение от forever_student Посмотреть сообщение
    А если во время "максимально возможной задержки" кнопку отпустили и нажали другую?
    Сработает другое прерывание, другого пина.

  14. #34
    Старый знакомый Аватар для forever_student
    Регистрация
    02.04.2011
    Адрес
    Москва
    Сообщений
    680

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от JazMan Посмотреть сообщение
    Не ложное срабатывание, а как написано выше, авто-повтор.
    ..
    Нажали кнопку, автоповтором дождались нужного значения,
    отпустили кнопку -значение на единицу изменилось.

    Цитата Сообщение от JazMan Посмотреть сообщение
    ...
    Сработает другое прерывание, другого пина.
    1.Дорогое удовольствие - каждую кнопку на своё прерывание.
    2.Если не изменяет память, в AVR всего 2 входа внешних прерываний. Две кнопки?

  15. #35
    Завсегдатай Аватар для JazMan
    Регистрация
    15.02.2011
    Адрес
    Москва
    Сообщений
    1,874

    По умолчанию Re: Нужен совет по работе с AVR

    Цитата Сообщение от forever_student Посмотреть сообщение
    Нажали кнопку, автоповтором дождались нужного значения,
    отпустили кнопку -значение на единицу изменилось.

    1.Дорогое удовольствие - каждую кнопку на своё прерывание.
    2.Если не изменяет память, в AVR всего 2 входа внешних прерываний. Две кнопки?
    Не хочется спорить сейчас ни о чем, на общие тем, т-к контроллеры действительно разные, и второе, задачи тоже разные.
    В рамках конкретного алгоритма и возможностей контроллера, рождаются определенные подходы и оптимизации.

Страница 2 из 2 Первая 12

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •