Jump to content

    

ОБЪЯВЛЕНИЕ ПРЕРЫВАНИЙ В IAR

КАК НА СИ В IAR КОМПИЛЯТОРЕ ОБЪЯВЛЯТЬ ПРЕРЫВАНИЯ?

Share this post


Link to post
Share on other sites

#pragma vector=VECTOR_NUMBER

__interrupt void interrupt_routine_name(void)

{

}

 

А что, в документации разве нет?

Share this post


Link to post
Share on other sites

Меня тоже интересует вопрос прерываний 2х внешних и таймера (на С для WinAVR ) для определения частоты вращения 2х двигателей.

Share this post


Link to post
Share on other sites
Меня тоже интересует вопрос прерываний 2х внешних и таймера (на С для WinAVR ) для определения частоты вращения 2х двигателей.

Там по-другому, более по-человечески

interrupt(VECTOR_NUMBER) interrupt_routine_handler(void)

{

}

Share this post


Link to post
Share on other sites

Не подскажите может где-то в форуме описана процедура организации прерываний?

Share this post


Link to post
Share on other sites
Не подскажите может где-то в форуме описана процедура организации прерываний?
Объясните, что означает "процедура организации прерываний"?

 

Share this post


Link to post
Share on other sites
Не подскажите может где-то в форуме описана процедура организации прерываний?

А почему обязательно в форуме? В любом букваре по микропроцессорной технике.

Share this post


Link to post
Share on other sites
Там по-другому, более по-человечески

interrupt(VECTOR_NUMBER) interrupt_routine_handler(void)

ISR отменили? Наверно надо обновить компилятор, а то на 4.2.2 так и сижу.

Share this post


Link to post
Share on other sites
ISR отменили? Наверно надо обновить компилятор, а то на 4.2.2 так и сижу.

Так вроде это avr-libc, а не компилятор... :rolleyes:

Share this post


Link to post
Share on other sites

Для примера: обработка прерывания по совпадению таймера 0 канала А (ATmega48)

 

#pragma vector=TIMER0_COMPA_vect
__interrupt void Inter_Timer0_COMPA(void)
{

}

Или: переполнение таймера 1

 

#pragma vector=TIMER1_OVF_vect
__interrupt void Inter_Timer1_OVF(void)
{

}

Описание названий векторов можно посмотреть в хедере на микросхему, в данном случае для IAR это iom48.h

Share this post


Link to post
Share on other sites

Кстати, в ИАРе надо в прерываниях сохранять/восстанавливать SREG или нет? Я что-то разницы не заметил, хотя программа была сложная.

Share this post


Link to post
Share on other sites
Кстати, в ИАРе надо в прерываниях сохранять/восстанавливать SREG или нет? Я что-то разницы не заметил, хотя программа была сложная.

Если это IAR C/C++ компилятор, то не надо - компилятор сам вставит необходимый код, а если это IAR ассемблер, то надо вставлять вручную.

Share this post


Link to post
Share on other sites
Xenia, спасибо, в листингах копаться было неохота. Компилятор IAR C/C++.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this