[an error occurred while processing this directive]
|
Господа хочу вызвать прерывание EINT0 у LP2138, посмотрите что не так делаю #define setbit(x,y) (x|=(1< vec = ((function - (unsigned int)vector - 8) >> 2); old_vec = *vector; old_vec &= ~0xea000000; return(old_vec); //==========-Моя процедура прерывания-========== IOSET0_bit.P0_18 = 0; void main (void) PINSEL1_bit.P0_16 = 1; // выбор функции прерывания } // end test1
#pragma language=extended
#include
#include
#include
#include
#include
//=========-эту процедуру взял из описания компилятора IAR C-==================
unsigned int install_handler(unsigned int *vector, unsigned int function)
{
unsigned int vec, old_vec;
vec |= 0xea000000; /* add opcode for B instruction */
*vector = vec;
old_vec = ( old_vec << 2 ) + (unsigned int)vector + 8;
}
__ramfunc __irq __arm void irqHandlerEINT0(void)
{
delay(200);
IOCLR0_bit.P0_18 = 0;
VICVectAddr0=0;
}
{
PINSEL0 = 0x00;
PINSEL1 = 0x00;
//Настраиваю прерывание EINT0 подключена к ножке P0.16
IODIR0_bit.P0_16 = 0; // на вход
setbit(EXTMODE,0); //EINT0 чуствительность по перепаду
setbit(EXTPOLAR,0); //EINT0 по возрастающему фронту
setbit(VICIntEnable,14);//EINT0 разрешить
clearbit(VICIntSelect,14);// Eint0 соединить с IRQ линией
VICVectCntl0 = 0x0000002E;//
VICVectAddr0 =(unsigned long)&irqHandlerEINT0;// Загрузить адрес моей процедуры обработки прерывания
install_handler(irqvec, (unsigned int)irqHandlerEINT0);
__enable_interrupt();
PINSEL1_bit.P0_18 = 0;// In/out pin
IODIR0_bit.P0_18 = 1; // pin output for test interrupt
IOSET0_bit.P0_18 = 0;
Прерывание не возникает, не пойму что еще не учел?
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание