AT91SAM9M10-EKES 평가 보드에서 GPIO IRQ를 프로그래밍하려고합니다. IRQ가 성공적으로 등록되었으며 IRQ가 작동 중입니다. 그러나 일부 인터럽트가 누락되었습니다. 나는 26를 보내고있다, 그리고 나는 단지 22ARM 기반 임베디드 리눅스에서 GPIO IRQ
코드 수 :
static irqreturn_t wiegand_interrupt(int irq, void *dev_id){
atomic_inc(&counter);
printk(KERN_WARNING "IRQ recieved, counting... %d\n",atomic_read(&counter));
return 0;
}
irq1 = gpio_to_irq(AT91_PIN_PA21);
if (irq1 < 0) {
err = irq1;
printk("Unable to get irq number for GPIO %d, error %d\n",AT91_PIN_PA21, err);
goto fail;
}
err = request_irq(irq1,wiegand_interrupt,0 ,"wiegand",NULL);
irq2 = gpio_to_irq(AT91_PIN_PA20);
if (irq2 < 0) {
err = irq2;
printk("Unable to get irq number for GPIO %d, error %d\n",AT91_PIN_PA21, err);
goto fail;
}
err = request_irq(irq2,wiegand_interrupt,0 ,"wiegand",NULL);
이 전체 드라이버되지 않습니다, 그러나 이것은 IRQ를 다루는 실제적인 부분이다. 누군가 코드에 문제가 있거나 4 가지 인터럽트가 손실 된 이유를 알 수있는 방법을 제안 할 수 있으면 답장을 보내주십시오. 나는 ... :(
감사합니다. 라몬 시간이에 붙어있어.
printk가 그 이유입니다. 그것은 작동합니다. 감사. – stdcall
@ Longfield : http://stackoverflow.com/questions/24608817/interrupt-on-gpio-line-is-not-being-detected에 답변 해 주시겠습니까? –