도와주세요!!
글 수 15,339
2006.06.10 17:29:54 (*.118.69.45)
6756
set_GPIO_IRQ_edge를쓰지 않고 인터럽트를 할시
포트를 입력으로 하고 상승에지 허가를 세팅후
result = request_irq(IRQ_GPIO(2), test_interrupt, SA_INTERRUPT, DEVICE_NAME,NULL);
set_GPIO_IRQ_edge 안에있는 irq_desc를 사용해서 등록을 해주었구요
드라이버를 올리고 테스트 해보았는데
포트를 맨처음 입력을 두고 이렇케 하면 인터럽트가 안걸려
GPDR0 을 출력으로 하고
GPCR0을 셋하여 그포트를 클리어 하고 포트를 입력으로 해주지 않은 상황에서는
인터럽트가 아주 잘걸렸습니다(아래와 같이)
void GPIO_IO_Init(void)
{
GAFR0_L &= ~(IO_MASK);
//RISING EDGE//
GPDR0 = IO_MASK;
GPCR0 = IO_MASK;
GRER0 |= IO_MASK;
GFER0 &= ~(IO_MASK);
}
그런데 이지 보드에서 포트를 입력으로 두고 이렇케 할시
void GPIO_IO_Init(void)
{
GAFR0_L &= ~(IO_MASK);
//RISING EDGE//
GPDR0 &= ~(IO_MASK);
GRER0 |= IO_MASK;
GFER0 &= ~(IO_MASK);
}
인터럽트가 걸리지 않습니다.
위와 같이 포트를 셋팅하고
set_GPIO_IRQ_edge 를 쓰면 또 되고요
set_GPIO_IRQ_edge안에 포트를 입력으로 설정해주는 부분이 있는데
저도 입력으로 설정을 하면 왜 안되는지 모르겠네요..