Работа С Внешними Прерываниями

29-07-2014, 16:03 От: admin Посмотрели: 507
Здравствуйте, столкнулся с такой проблемой:

При использовании внешнего прерывания от кнопки INT0 выбирается один из режимов работы контроллера. Каждый режим состоит из длительного цикла (самый короткий 8 мин.). При обработке прерывания изменяется значение глобальной переменной. Состояние переменной проверяется лишь после окончания одного из циклов, что вызывает большую задержку времени до конца исполнения текущего цикла. Проверку переменной в цикл вставить не возможно из-за его и без того высокой нагрузки на систему. Как выход вижу переход при выполнении прерывания к началу программы. Подскажите как можно реализовать такой периход, либо иначе решить задачу.

Код в упрощенном виде прилагаю.




volatile int reg=0x00;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
reg=reg+1;
delay_ms(50);
if (reg>0x11)
{
reg=0x00;
}
}
void regim0 (unsigned int x, y, z)
{
for (a=0; a<d; a++)
{
//……………
}
}
void regim2 (unsigned int x, y, z)
{ for (a=0; a<d; a++)
{ //………….. }
}
//…………..
void regim11 (unsigned int x, y, z)
{ for (a=0; a<d; a++)
{ //………….. }
}
void main(void)
{
while (1)
{
switch (reg)
case 0: regim0(x,y,z); break;
case 1: regim1(x,y,z); break;
//…………..
case 11: regim11(x,y,z); break;
}
}

Раздел: AVR

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Работа С Внешними Прерываниями все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Май 2024    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031