реклама на сайте
подробности

 
 
> LPC11xx и обработка прерываний
deplen
сообщение Feb 6 2013, 16:16
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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. Вобщем разные цифры.
В чем я ошибся при кодировании прерывания?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Feb 9 2013, 17:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



вы не внимательны.
этот таймер не имеет прерывания, он идет без остановок и запусков потому его может использовать любой другой модуль без опаски что кто-то его выключит или сменит интервал.
Прерывание кнопки позволяет точно фиксировать момент, что в отличии от полинга дает неопределенность с точностью до частоты опроса.

если же таймер вызывает прерывание и сканирует кнопку - это таймер занятый на кнопки, и использовать его для чего либо другого не безопасно, опять же он дает неопределенность длительности до частоты опроса.

Естественно это немного идеализированный пример, потому что в большинстве случаев неопределенность до частоты опроса не важна... но если уж мы копаем нюансы - так вот они.

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



заряжать конденсатор - это сильно конечно, там и АЦП можно к процессу подключить, но достаточно просто внешнего таймераsm.gif как я и написал...

Кстати! совсем забылsm.gif)))

Кнопка на прерывании легко и безоговорочно побеждает кнопку по полингу если речь идет о режиме энергосбережения и пробуждению по нажатию кнопки... При полинге вы либо не проснетесь вообще, либо регулярными пробуждениями потратите всю энергию!

тадам!!!! прерывание - полинг 1 : 0
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Feb 9 2013, 18:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(Golikov A. @ Feb 9 2013, 21:36) *
Кнопка на прерывании легко и безоговорочно побеждает кнопку по полингу если речь идет о режиме энергосбережения и пробуждению по нажатию кнопки...

Вот так и знал, что про это зайдет. Но не надо путать, событие "wake_up" и событие "button_pressed" - абсолютно разные, хотя, как частный случай, могут наступить от одного источника. Для "wake_up" - только прерывания, без вариантов. А дальше... угу, он самый, поллинг кнопок.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - Alex11   0.5 мс, если Вы внимательно прочитали пост, - это ...   Feb 7 2013, 14:51
|- - Сергей Борщ   Опрашиваю кнопки раз в 50 мс. При этом дребезг гас...   Feb 7 2013, 15:14
|- - jcxz   Цитата(Alex11 @ Feb 7 2013, 20:51) 0.5 мс...   Feb 8 2013, 05:37
- - 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
- - 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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 14:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01448 секунд с 7
ELECTRONIX ©2004-2016