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

 
 
> Работа с таймером ARM через прерывание, отсчет времени и выполнение функций после истечения
alt3857
сообщение Dec 2 2010, 04:58
Сообщение #1


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

Группа: Участник
Сообщений: 94
Регистрация: 21-04-10
Пользователь №: 56 794



Привет
Есть функция-обработчик прерывания от таймера
__irq void TIMER2_IRQHandler(void)
{
LPC_TIM2->TCR = 2;//timer disable and reset

if (a==1) {LPC_TIM2->MR0 = 10000;b=1;};
if (a==2) {LPC_TIM2->MR0 = 20000;};
if (a==3) {LPC_TIM2->MR0 = 30000;b=0;a=0;};
a++;
LPC_TIM2->TCR = 1;//counter enable
LPC_TIM2->IR = 1;//сброс прерывания MR0 таймера2
};
Задача такая, чтобы условия выполнялись через заданные промежутки времени,
которые задаю совпадением mr0.
Нужно, чтобы условия при каждом a выполнялись без пребоя. Так-то работает, но
иногда (редко) переменная b устанавливается в 1 и не сбрасывается в 0.
Не могу причину найти. В программе есть еще один обработчик внешнего прерывания.
Подскажите в чем может быть проблема или как лучше сделать отсчет времени и
выполнение нужной функции по истечению, чтобы не было сбоев в работе.
Параметр b используется в основной программе вне прерываний.
Может быть такое, что счетчик проскакивает совпадение mr0 по каким-то причинам и поэтому условие не выполняется?
Спасибо.

Сообщение отредактировал alt3857 - Dec 2 2010, 05:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alt3857
сообщение Jan 30 2011, 10:38
Сообщение #2


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

Группа: Участник
Сообщений: 94
Регистрация: 21-04-10
Пользователь №: 56 794



Dog Pawlowa, спасибо, хороший совет. Тогда вопрос - не слишком ли часто получится дергать прерывание 1 мс, просто как я делаю у меня прерывание происходит 1 раз, а так будет происходить каждую мс? А по поводу глобальной переменной 'a' дак это я просто для примера написал), так-то она у меня по другому названа и точно больше нигде не используется.

Сообщение отредактировал alt3857 - Jan 30 2011, 10:42
Go to the top of the page
 
+Quote Post



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

 


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


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