Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: прерывания в IAR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
ИИван
Исследую прерывания в ИАР. Написал следующий код, но при отладке в АВР студио прервание от таймера0 не происходит! По прчине того что не выставляется общий бит разрешения прерываний!!!!!!
В чём может быть дело? Ведь я включаю разрешение прерываний на языке С??

int tics=0;
#pragma vector=TIMER0_COMP_vect

void __interrupt void basic_interrupt (void)
{
tics+=1;
}


void main (void)
{
OCR0=0x02;
TIMSK=0x02;
TCCR0=0x03;
void __enable_interrupt();


while(tics<100)

PORTB++;
}
rezident
Ваша функция main имеет точку входа и точку выхода. Поэтому скорее всего прерывание просто не успевает возникнуть, т.к. функция main завершает свою работу. Куда там дальше переходит выполнение программы я не знаю, но возможно, что на вектор сброса. Попробуйте все же зациклить процедуру, чтобы main не завершалась и тогда возможно прерывание когда-нибудь наступит wink.gif
P.S. кстати, посмотрите ассемблерный код. Возможно
Код
while(tics<100)
PORTB++;

в нем просто отсутствует.
Непомнящий Евгений
void __enable_interrupt(); - это объявление функции, а не ее вызов.
Чтобы вызвать функцию, вы должны написать
__enable_interrupt();

Ну и что-то типа for(;;); в конце вставить не помешает smile.gif

Кстати, интересный вопрос - я думал, что внутри функций нельзя объявлять другие функции. А IAR на такой код не ругается...
alexander55
Цитата(Непомнящий Евгений @ Oct 22 2007, 10:07) *
Кстати, интересный вопрос - я думал, что внутри функций нельзя объявлять другие функции. А IAR на такой код не ругается...

Объявлять можно, но Вы сами видите, как легко можно сделать ошибку.
ИИван
Всем спасибо! Разобрался.
Я сначало включал прерыния как void _enable interrupt(), а следует просто _enable interrupt(), и при этом не обходимо включить загловочный файл INTRINSICS. ВОТ в этом и была собака зарыта. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.