Страница 1 из 1
Прерывания В Среде Winavr
Добавлено: Пн июл 05, 2010 16:08:16
partizan
Здравствуйте.Мне нужно реализовать прерывание,которое запускается при появление 0 уровня на ножке int0 или int1 МК Atmega16.Как пишется сама функция прерывания в среде WinAVR на языке C?Зарание благодарю!
Re: Прерывания В Среде Winavr
Добавлено: Пн июл 05, 2010 17:28:13
Shplv
partizan писал(а):Как пишется сама функция прерывания в среде WinAVR на языке C?
interrupt(VECTOR_NUMBER) interrupt_routine_handler(void)
{
}
Re: Прерывания В Среде Winavr
Добавлено: Пн июл 05, 2010 19:13:49
ARV
прерывание в WinAVR определяется не так, как было тут посоветовано! а вот как:
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(INT0_vect){
// тут ваш обработчик
}
но наш феникс-ардуино вам посоветовал толковое - прислушайтесь.
Re: Прерывания В Среде Winavr
Добавлено: Пн июл 05, 2010 20:51:42
romazan
SIGNAL(INT0_vect)
{
asm("cli");
...........
...........
asm("sei");
};
int main()
{
GICR=0xC0;
SREG|=0x80;
asm("sei");
while(1)
{
};
}
Re: Прерывания В Среде Winavr
Добавлено: Пн июл 05, 2010 21:34:20
ARV
макрос SIGNAL считается устаревшим и его использование в новых проектах не рекомендуется - его поддержка оставлена лишь для совместимости со старыми проектами. вместо него используйте макрос ISR - как я и советовал. его возможности шире.
Re: Прерывания В Среде Winavr
Добавлено: Пн июл 05, 2010 21:43:59
Aheir