设为首页 加入收藏

TOP

AT91SAM9261的LINUX2.6 GPIO与GPIO中断(二)
2014-11-24 14:37:03 来源: 作者: 【 】 浏览:5
Tags:AT91SAM9261 LINUX2.6 GPIO 中断
p_data(id, controller);
for (i = 0; i < 32; i++, pin++) {
/*
* Can use the "simple" and not "edge" handler since it's
* shorter, and the AIC handles interupts sanely.
*/
set_irq_chip(pin, &gpio_irqchip);
set_irq_handler(pin, handle_simple_irq);
set_irq_flags(pin, IRQF_VALID);
}
set_irq_chained_handler(id, gpio_irq_handler);
}
如果使用PIO IO:
直接用int at91_get_gpio_value(unsigned pin)
int at91_set_gpio_value(unsigned pin, int value)
就可以实现读写啦


如果使用PIO的中断呢
一 设置为输入.
二 设置毛刺(也可以不设置)
三 调用 REQUEST_IRQ()
at91_set_gpio_input(AT91_PIN_PB5,1);
result = request_irq(AT91_PIN_PB5, kirq_interrupt, SA_INTERRUPT, "kirq", &kirq_dev);
if (result < 0){
printk("register irq fail.%d\r\n",result);
return result;
}


/************************************************************************************/
实验的结果(查看中断是否产生)
/teset/irq # cat /proc/interrupts
CPU0
1: 72905 AIC at91_tick, atmel_serial
10: 0 AIC at91_udc
20: 0 AIC ohci_hcd:usb1
21: 4754 AIC eth0
69: 0 GPIO kirq
101: 1 GPIO at91_udc


at91_set_gpio_input(AT91_PIN_PA5,1);
result = request_irq(AT91_PIN_PA5, kirq_interrupt, SA_INTERRUPT, "kirq", &kirq_dev);
if (result < 0){
printk("register irq fail.%d\r\n",result);
return result;
}


实验的结果(查看中断是否产生)
/teset/irq # cat /proc/interrupts
CPU0
1: 3295 AIC at91_tick, atmel_serial
10: 0 AIC at91_udc
20: 0 AIC ohci_hcd:usb1
21: 1801 AIC eth0
37: 1 GPIO kirq
101: 1 GPIO at91_udc
Err: 0四 其他设备的调用就直接用request_irq(IRQ_NUMBER,…)


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux下登录新版TUNet的bash脚本 下一篇AT9260 GPIO中断

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: