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

 
 
> EINT0 ЧТО НЕ РАБОТАЕТ, Может я что забываю вроде все нармально
asen
сообщение Nov 27 2006, 13:15
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



настраиваю EINT0 на LPC2292 пытаюсь зделать вызов по переходу 1->0 но контролле просто виснет и все вчем причина не пойму
может будут какиенибуть замечания ?
вот листинг :

#define VIC_EINT0_bit (1 << VIC_EINT0)

void Extern_Interrupt(void){

out_coment("ppp",3,"U",0);
ct_ext_front++;
EXTINT_bit.EINT0=1;
}

void InitExternInterrupt(void){

PINSEL1_bit.P0_16 = 0x1; //Назначаем линии порта P0.16 функцию источника внешнего прерывания EINT0
VICIntEnable &= ~VIC_EINT0_bit;
EXTINT_bit.EINT0=1;
EXTMODE_bit.EXTMODE0 = 1; //Для входа EINT0 выбрана реакция на переход
EXTPOLAR_bit.EXTPOLAR0 = 0; //выбрана чувствительность к спаду
EXTINT_bit.EINT0=0;
VICIntSelect &= ~VIC_EINT0_bit; //Назначаем прерывание EINT0 как IRQ
VICVectAddr5 = (unsigned int) & Extern_Interrupt; //Указываем обработчик прерывания
VICVectCntl5 = 0x20 | VIC_EINT0; //Назначаем и разрешаем в пятом слоте прерывание EINT0
VICIntEnable |= VIC_EINT0_bit; //Разрешаем внешнее прерывание

}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
asen
сообщение Dec 5 2006, 07:10
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



//Обработчик прерывания
void Extern_Interrupt(void){

ct_ext_front++;
EXTINT_bit.EINT0=1;
if(f==0){
set_logic_line(out_starter,1);
f = 1;
}
else{
set_logic_line(out_starter,0);
f = 0;
}
}

//Инит внешнего прерывания
void InitExternInterrupt(void){

PINSEL1_bit.P0_16 = 0x1; //Назначаем линии порта P0.16 функцию источника внешнего прерывания EINT0

onevar = VPBDIV;
VPBDIV = 0x00;
EXTMODE_bit.EXTMODE0 = 0; //Для входа EINT0 выбрана реакция на переход
EXTPOLAR_bit.EXTPOLAR0 = 1; //выбрана чувствительность к спаду
VPBDIV = onevar;
VPBDIV = 0x00;
VPBDIV = onevar;

VICIntSelect &= ~VIC_EINT0_bit; //Назначаем прерывание EINT0 как IRQ
VICVectAddr10 = (unsigned int) & Extern_Interrupt; //Указываем обработчик прерывания
VICVectCntl10 = 0x20 | VIC_EINT0; //Назначаем и разрешаем в пятом слоте прерывание EINT0
VICIntEnable |= VIC_EINT0_bit; //Разрешаем внешнее прерывание

}

Так вот прерывание вроде заработало
Но только проблемка я его использую для счета импульсов с компоратора
Сигнал приходит чистый проверяли а насчитывает ерунду всякую. я вод думаю нет ли тут какой замуты с сбросом прерывания в обработчике я вроде делаю все нормально подскажите кто летал уже ?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:35
Рейтинг@Mail.ru


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