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

 
 
> 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
Ответов
zltigo
сообщение Nov 27 2006, 13:21
Сообщение #2


Гуру
******

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



Цитата(asen @ Nov 27 2006, 12:15) *
EXTMODE_bit.EXTMODE0 = 1; //Для входа EINT0 выбрана реакция на переход
EXTPOLAR_bit.EXTPOLAR0 = 0; //выбрана чувствительность к спаду

Errata читаем, да?
Ну и добавляем пунктик 3а дополнительно, ибо этот баг не описан:

Код
    // Set edle-sensetive Mode
    // The steps involved in the configuration of the EXTMODE and/or EXTPOLAR would be as follow:-
    // 1. Write 0x00 to VPBDIV
    // 2. Write the desired value to EXTMODE or EXTPOLAR register
    // 3. Write the same value to VPBDIV
    // 3a. Write 0x00 to VPBDIV (additional step for INT0 )
    // 4. Restore the VPBDIV to the previously saved value or simply write to the register again
    //    with the desired value.
    ulong i;
    VPBDIV = 0;                 // 1.
    i = EXTMODE & ( EXTMODE_EXTMODE0|EXTMODE_EXTMODE1|EXTMODE_EXTMODE2|EXTMODE_EXTMODE3);  // Get Curent Value
    i |= EXTMODE_EXTMODE0;

    EXTMODE = i;             // 2.
    VPBDIV  = i;             // 3.
    VPBDIV  = 0;         // 3a    
    VPBDIV  = configBUS_CLK; // 4.


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



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

 


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


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