Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2478. Прерывания GPIO совместно с LCD.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Real_Bastard
Есть LPC2478 с подключенным TFT. Хочется запустить прерывание от GPIO. Но LCD контроллер постоянно вызывает мое прерывание!!!
Note: EINT3 channel is shared with GPIO interrupts, а ножка EINT3 используется LCD контроллером. (P2[13]/EINT3/LCDVD[5]/LCDVD[9]/LCDVD[19]/MCIDAT3/I2STX_SDA) . Т.е. как только я разрешаю прерывания от EINT3 оно срабатывает от посылки на TFT. Запуска прерывания от GPIO без разрешения прерываний от EINT3 не происходит. Что я делаю не так?
M_Andrey
Как-то так:

CODE
void GPIOINT(void)


{
VICADDRESS = 0;
if (IOINTSTATUS_bit.P0INT)
{
if (IO0INTSTATF_bit.P0_9)
{
//Falling edge
}
if (IO0INTSTATR_bit.P0_9)
{
//Rising edge
}
IO0INTCLR_bit.P0_9 = 1;
}
else
{
EXTINT = 0x08;
}
}

void initgpioint(void)
{
IO0INTENF_bit.P0_9 = 1; //Falling edge
IO0INTENR_bit.P0_9 = 1; //Rising edge
IO0INTCLR_bit.P0_9 = 1; //clears any interrupts
VICINTENCLEAR_bit.EINT3 = 1;
EXTINT = 0x08; //clears the corresponding bits
EXTMODE = 0;
VIC_SetVectoredIRQ(GPIOINT, 5, VIC_EINT3);
VICINTENABLE |= 1UL << VIC_EINT3;
}



ar__systems
Цитата(Real_Bastard @ May 1 2011, 16:52) *
Есть LPC2478 с подключенным TFT. Хочется запустить прерывание от GPIO. Но LCD контроллер постоянно вызывает мое прерывание!!!
Note: EINT3 channel is shared with GPIO interrupts, а ножка EINT3 используется LCD контроллером. (P2[13]/EINT3/LCDVD[5]/LCDVD[9]/LCDVD[19]/MCIDAT3/I2STX_SDA) . Т.е. как только я разрешаю прерывания от EINT3 оно срабатывает от посылки на TFT. Запуска прерывания от GPIO без разрешения прерываний от EINT3 не происходит. Что я делаю не так?

Я что-то не пойму, у вас пин используется дисплеем, а вы при этом еще и прерывание от него хотите получать? Как-то странно. Функция пина в PINSEL какая у вас стоит?
M_Andrey
Фишка в том что прерывания от GPIO делят вектор с прерыванием от EINT3, и если просто его разрешить то первым делом сработает вызов именно от EINT3 даже если он и не был разрешен - сам с этим столкнулся. Поэтому его надо обязательно сбросить в обработчике командой EXTINT = 0x08 иначе прога повиснет на постоянном вызове этого прерывания.
Real_Bastard
ОГРОМНОЕ СПАСИБО!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.