|
LPC11xx и обработка прерываний |
|
|
|
Feb 6 2013, 16:16
|
Частый гость
 
Группа: Участник
Сообщений: 143
Регистрация: 19-11-12
Пользователь №: 74 471

|
Код volatile uint32_t count = 1; void PIOINT1_IRQHandler(void) { GPIOIntClear( 1, 9 ); if( count != 7 ) { count++; } else { LPC_GPIO0->MASKED_ACCESS[( 1 << 7 )] = ( 0 << 7 ); count = 1; } }
int main(void) { LPC_SYSCON->SYSAHBCLKCTRL |= ( 1 << 6 ); NVIC_EnableIRQ( EINT1_IRQn ); LPC_GPIO0->DIR |= ( 1 << 7 ); // настраиваем PIO0.7 на вывод (светодиод LPCXpresso) GPIOSetDir( 1, 9, 0 );
GPIOSetInterrupt( 1, 9, 0, 0, 0 ); GPIOIntEnable( 1, 9 ); } Есть вот такой код обработки прерывания. Суть его такая: при запуске горит светодоид, но при 7 разовом нажатии на кнопку светодиод должен погаснуть. Но работает как то странно. То 7 раз нажать на кнопку и гаснет, то 6, то 4, то 3. Вобщем разные цифры. В чем я ошибся при кодировании прерывания?
|
|
|
|
|
 |
Ответов
|
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)  Периодический опрос - потенциально приложения пропускающие клики... Обоснуйте.
|
|
|
|
Сообщений в этой теме
deplen LPC11xx и обработка прерываний Feb 6 2013, 16:16 Golikov A. в дребезге контактов?
кнопка - это не четкий фро... Feb 6 2013, 16:38 Black Pahan А дребезг контактов как устраняете? Feb 6 2013, 16:39 _Артём_ Цитата(deplen @ Feb 6 2013, 18:16) В чем ... Feb 6 2013, 16:42 deplen Просто задача стоит что бы по последовательности н... Feb 6 2013, 16:51 _Артём_ Цитата(deplen @ Feb 6 2013, 18:51) Просто... Feb 6 2013, 16:58 Golikov A. это просто.
после прерывания считает отсчет и ста... Feb 6 2013, 17:27 DVF А разве ноги на вход не имеют Schmitt Trigger? Tог... Feb 6 2013, 19:24 Alex11 Триггеров Шмитта как правило нет. Но даже если ест... Feb 6 2013, 22:43 jcxz 0.5мс????
Вы реально способны нажимать на кнопк... Feb 7 2013, 06:50 Сергей Борщ Опрашиваю кнопки раз в 50 мс. При этом дребезг гас... Feb 7 2013, 15:14 deplen а что делает HYSTERESYS в настройках каждого пина,... Feb 7 2013, 15:54 _Артём_ Цитата(deplen @ Feb 7 2013, 17:54) а что ... Feb 7 2013, 16:22 Golikov A. зависит от задачи.
Опрос кнопок в цикле частеньк... Feb 7 2013, 18:48 Сергей Борщ QUOTE (Golikov A. @ Feb 7 2013, 20:48) Пе... Feb 7 2013, 23:39 Golikov A. по определению...
быстрые клики попавшие в паузы... Feb 8 2013, 03:22 HHIMERA Цитата(Golikov A. @ Feb 8 2013, 06:22) Гл... Feb 8 2013, 05:39 Сергей Борщ QUOTE (Golikov A. @ Feb 8 2013, 05:22) по... Feb 8 2013, 10:45 Golikov A. надо разделить сложности проектирования и текущую ... Feb 8 2013, 11:39 _Артём_ Цитата(Golikov A. @ Feb 8 2013, 13:39) Ка... Feb 8 2013, 12:03  Golikov A. Цитата(_Артём_ @ Feb 8 2013, 16:03) Выигр... Feb 8 2013, 12:14   _Артём_ Цитата(Golikov A. @ Feb 8 2013, 14:14) то... Feb 8 2013, 12:21   Tahoe Цитата(Golikov A. @ Feb 8 2013, 16:14) Ес... Feb 8 2013, 12:57 scifi Цитата(Golikov A. @ Feb 8 2013, 15:39) Ка... Feb 8 2013, 12:06  Golikov A. Цитата(scifi @ Feb 8 2013, 16:06) Я думал... Feb 8 2013, 12:27   scifi Цитата(Golikov A. @ Feb 8 2013, 16:27) Хо... Feb 8 2013, 12:31 Golikov A. мне кажется меня не слышат, наверное вам кажется т... Feb 8 2013, 12:41 scifi Цитата(Golikov A. @ Feb 8 2013, 16:41) Мо... Feb 8 2013, 12:46 HHIMERA Цитата(Golikov A. @ Feb 8 2013, 15:41) Мо... Feb 8 2013, 13:17 Golikov A. ну все, убедили.
переписываю все проекты с прерыв... Feb 8 2013, 13:15 Golikov A. Окей Окей ... Feb 8 2013, 15:29 adnega Пример, конечно, надуманный, но все же: что будет,... Feb 8 2013, 18:05 Golikov A. ну я же согласился
второй надуманный пример,
что ... Feb 8 2013, 18:45 Tahoe Цитата(Golikov A. @ Feb 8 2013, 22:45) чт... Feb 8 2013, 19:09 jcxz Цитата(Golikov A. @ Feb 9 2013, 00:45) вт... Feb 9 2013, 08:56 Golikov A. В целом я уже согласился, прерывание плохо, полинг... Feb 9 2013, 12:49 jcxz Вот!!! Так и думал!
Т.е. - тайм... Feb 9 2013, 17:24 Golikov A. вы не внимательны.
этот таймер не имеет прерывания... Feb 9 2013, 17:36 Tahoe Цитата(Golikov A. @ Feb 9 2013, 21:36) Кн... Feb 9 2013, 18:20 deplen даже не думал, что обработка нажатия на кнопку выз... Feb 10 2013, 18:31 deplen Реализовал чтение порта на нажатие кнопки. Каждые ... Feb 11 2013, 15:12 Golikov A. запустить в таймере счетчик? Feb 11 2013, 15:21 deplen Цитата(Golikov A. @ Feb 11 2013, 19:21) з... Feb 11 2013, 15:49 Golikov A. естественно
первое нажатие задает значение счетчи... Feb 11 2013, 16:07 deplen Все. Всем спасибо. Прерывание реализовано по тайме... Feb 13 2013, 19:06
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|