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

 
 
> AVR-IAR и внешнее прерывание, обработка INT0
mr_ia
сообщение Feb 12 2009, 10:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 13-02-07
Пользователь №: 25 311



Добрый день уважаемые.
Имею очень простой вопрос, как в IAR обработать внешнее прерывание.
До этого програмил в CVAVR, но вот решил мигрировать.
Опишу задачу. Нужно обработать внешнее прерывание INT0, по нижнему уровню.
Посмотрел примеры, вопросы ответы, нашел более менее подходящий кусок по обработке прерывания при перемолнении таймера счетчика, кусок работает. Написал для обработки INT0- Не работает...

Привожу код.
CODE
#include <iom128.h>
#include <inavr.h>
#include <ina90.h>


//volatile char flag;

//Обработка прерывания INT0***
#pragma vector = 0x04
//#pragma type_attribute=__interrupt
//void my_handler(void)
__interrupt void INT0_ISR(void)
{
__disable_interrupt(); //отключаем глобальные прерывания
//flag=flag++;
PORTD_Bit6 = 0; //смотрим по состоянию ножки выполнилось ли прерывание
}

int main( void )
{
DDRD_Bit7 = 1; //конфигурируем биты
DDRD_Bit6 = 1;
PORTD_Bit6 = 1;

DDRE=0xFF; //конфигурируем порты
DDRF=0xFF;
DDRB=0xFF;


EIMSK|= 1<<0; //Разрешаем INT0
EICRA &= ~(1<<0); // по нижнему уровню
__enable_interrupt(); //разрешаем глобальные прерывания

while (1)
{
__delay_cycles(1000000);
PORTD_Bit7 = 1; //смотрим не виснет ли
__delay_cycles(1000000);
PORTD_Bit7 = 0;

PORTE=EIMSK; //смотрим текущее состояние
PORTF=SREG;
PORTB=EIFR;
}
}



Если закоментировать обработку прерывания, то:
Код
EIMSK=0x01;
SREG=0x82;
EIFR=0xF0;

P.S. Компилируется без ошибок. Моделирую в Proteuse, за неимением железа под рукой... Мб глюк протеуса, но врядли ибо аналогичное в CVAVR работает без проблем.
В чем я ошибся?
Причина редактирования: Уменьшение видимого размера цитаты исходника.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Feb 12 2009, 13:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(mr_ia @ Feb 12 2009, 13:31) *
нашел более менее подходящий кусок по обработке прерывания при перемолнении таймера счетчика, кусок работает. Написал для обработки INT0- Не работает...


А кто будет делать:

EXTINT = EXTINT_EINT0; // Clear the EXT interrupt flag
VICVectAddr = 0; // Dummy write to signal end of interrupt

А вообще исходник бредовый, и разговоры об эмуляции периферийного железа всякими приблудами - тоже sad.gif  Вместо многочасового тыка в "эмуляторе" надежнее и проще уделить 15 минут чтению документации и со знанием дела, уверенно написать эти несколько строк. 


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mr_ia   AVR-IAR и внешнее прерывание   Feb 12 2009, 10:31
- - clpe   Цитата(mr_ia @ Feb 12 2009, 13:31) __inte...   Feb 12 2009, 10:45
- - aspID   Как минимум, в том, что прерывание отработает толь...   Feb 12 2009, 10:48
- - mr_ia   если добавить __enable_interrupt(); в обработку п...   Feb 12 2009, 10:59
- - MrYuran   А ногу, на которой INT0, не забываете подёргать? М...   Feb 12 2009, 11:08
- - clpe   Цитата(mr_ia @ Feb 12 2009, 13:31) while ...   Feb 12 2009, 11:09
- - Палыч   Цитата(mr_ia @ Feb 12 2009, 13:31) Модели...   Feb 12 2009, 11:33
|- - mr_ia   Цитата(Палыч @ Feb 12 2009, 15:33) В AVRS...   Feb 12 2009, 12:05
|- - Палыч   Цитата(mr_ia @ Feb 12 2009, 15:05) Спасиб...   Feb 12 2009, 12:53
- - mr_ia   Ногу дергаю кнопкой(в протеусе). изначально INT0 о...   Feb 12 2009, 11:34
- - clpe   DDRE=0xFF; //конфигурируем порты DDRF=0xFF; DDRB =...   Feb 12 2009, 11:56
- - clpe   Нет всетаки виноват протеус... У меня работает: Pr...   Feb 12 2009, 12:17
|- - Палыч   Цитата(zltigo @ Feb 12 2009, 16:29) А кто...   Feb 12 2009, 13:53
|- - zltigo   Цитата(Палыч @ Feb 12 2009, 16:53) Имхо, ...   Feb 12 2009, 14:02
- - Atashi   глянул на схему и чет задумался о дребезгах всяких...   Feb 12 2009, 23:10
|- - clpe   Цитата(Atashi @ Feb 13 2009, 02:10) гляну...   Feb 13 2009, 12:20
- - SysRq   Цитата(mr_ia @ Feb 12 2009, 13:31) Код#pr...   Feb 13 2009, 00:02
- - Палыч   Цитата(SysRq @ Feb 13 2009, 03:02) 0x04 -...   Feb 13 2009, 13:13


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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 05:24
Рейтинг@Mail.ru


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