|
|
  |
LPC11xx и обработка прерываний |
|
|
|
Feb 8 2013, 05:37
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Alex11 @ Feb 7 2013, 20:51)  0.5 мс, если Вы внимательно прочитали пост, - это время опроса дребезга. Общее время дребезга все равно будет не менее 5 мс. На два фронта - 10 мс, стало быть максимум скорости, которую можно отжать от кнопки - 100 Гц. Я внимательно прочитал, только всё равно не понял зачем опрашивать дребезг??? Я почему-то всегда считал - его надо гасить... Если у вас максимальное время дребезга кнопки 5мс, то соответственно частота сканирования кнопок не должна превышать 200Гц иначе будут ложные срабатывания. Вот и всё. Цитата(Alex11 @ Feb 7 2013, 20:51)  И иногда удобно, чтобы кнопка срабатывала быстро и на короткий удар отвечала двумя переходами, а не блокировала его как дребезг. Здесь вроде обсуждается вопрос подавления дребезга, а не генерации его. Цитата(deplen @ Feb 7 2013, 21:54)  P.S. да и общий вопрос, вешать такой нестабильный фронт как кнопка на прерывание хорошая идея? или проще и надежнее сделать простой опрос пина в цикле? И на прерывание и опрос в цикле - обе плохие. Грамотно - делать опрос из периодического прерывания. Цитата(Golikov A. @ Feb 8 2013, 00:48)  Периодический опрос - потенциально приложения пропускающие клики... Обоснуйте.
|
|
|
|
|
Feb 8 2013, 05:39
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Golikov A. @ Feb 8 2013, 06:22)  Главное не понятно откуда такая боязнь прерывания? Любой полинг грузит процессор в разы выше, Это не боязнь... это осмысленное понимание того, что, и главное как, нужно делать...
|
|
|
|
|
Feb 8 2013, 10:45
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Golikov A. @ Feb 8 2013, 05:22)  по определению...
быстрые клики попавшие в паузы опроса - не будут замечены. Опрос раз в 50 мс в прерывании таймера. Клик быстрее 50 мс - это не клик, это наводка. Зато никаких ограничений на функции вывода - ему не обязательно иметь возможность генерить прерывания. Он может использоваться для дополнительных функций - например, на нем может висеть еще и индикатор. Он может вообще быть аналоговым и читаться через АЦП. Кнопки могут быть организованы в матрицу или еще каким-то хитрым способом. QUOTE (Сергей Борщ @ Feb 8 2013, 12:43)  Опрос раз в 50 мс в прерывании таймера. Клик быстрее 50 мс - это не клик, это наводка. Зато никаких ограничений на функции вывода - ему не обязательно иметь возможность генерить прерывания. Он может использоваться для дополнительных функций - например, на нем может висеть еще и индикатор. Он может вообще быть аналоговым и читаться через АЦП. Кнопки могут быть организованы в матрицу или еще каким-то хитрым способом. QUOTE (Golikov A. @ Feb 8 2013, 05:22)  Главное не понятно откуда такая боязнь прерывания? Любой полинг грузит процессор в разы выше, У меня в ATmega8 только две ноги могут генерить прерывания. Мне отказываться от заказов, в которых более двух кнопок?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Feb 8 2013, 11:39
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
надо разделить сложности проектирования и текущую реализацию.
имеем кнопка подключена к ножке процессора, которая умеет генерить прерывание на изменение фронта этой ножки. Вешаем на эту ножку кнопку, применяем все меры по устранению дребезга на схемотехническом уровне. Теперь вопрос, почему в данной ситуации не использовать прерывание? Чем оно хуже полинга? Зачем в этой ситуации нужен полинг? Какой выигрыш от периодического опроса?
Когда я пишу потенциально - это значит потенциально, а не всегда. пишешь приложение с главным циклом
опрос кнопок измерение вывод на экран
а потом оно начинает обрастать, фильтрацией, обработкой измерения, и так далее и пауза между опросами кнопок становиться все больше больше... И начинает расти минимальная длительность нажатия которую видит прибор. А за ней начинает расти скорость реакции на кнопку после нажатия, то есть время между тем как вы нажали и тем как приложение отозвалось.
И тут мы приходим к светлому решению вынести кнопки в отдельный поток на таймер. Сделать прерывание и опрашивать с периодами, все супер, но только пришли к тому же прерыванию что и от кнопки, но еще в добавок заняли таймер. А что выиграли то?
|
|
|
|
|
Feb 8 2013, 12:03
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(Golikov A. @ Feb 8 2013, 13:39)  Какой выигрыш от периодического опроса? Выигрыш в том, что будет работать для любого входа, независимо поддерживает оно прерывания по входу или нет. Цитата(Golikov A. @ Feb 8 2013, 13:39)  а потом оно начинает обрастать, фильтрацией, обработкой измерения, и так далее и пауза между опросами кнопок становиться все больше больше... И начинает расти минимальная длительность нажатия которую видит прибор. Проверяйте состояние входа в функции прерывания таймера.
|
|
|
|
|
Feb 8 2013, 12:14
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата(_Артём_ @ Feb 8 2013, 16:03)  Выигрыш в том, что будет работать для любого входа, независимо поддерживает оно прерывания по входу или нет.
Проверяйте состояние входа в функции прерывания таймера. про таймер написал чуть ниже, тоже прерывание, только еще и таймер заюзали. Про то что будет работать для любого входа, аргумент, но есть ли смысл? Если есть устройство, в нем есть прерывание и кнопка, зачем писать так чтобы работало и без этого? На будущее? Мы решаем эти вопросы во время проектирования, если прерывания выделить невозможно, решается так, если есть порты с прерываниями - сяк. Конкретный прибор - конкретная реализация, переносимость кода и его изменяемость решается на более высоком уровне, на том где уже состояние кнопок получено, а как получается состояние кнопок - это уже конкретный прибор == конкретный способ.
|
|
|
|
|
Feb 8 2013, 12:41
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
 мне кажется меня не слышат, наверное вам кажется так же. у человека есть проц есть ножка с прерыванием есть кнопка есть прерывание спрашивает так делать хорошо или плохо? ему говорят плохо, потому что в АВР нет прерывания  ))... ну смешно же! Мой ответ так делать в конкретно этом случае хорошо!
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|