迅为4412外部中断设置为下降沿触发,但在上升沿的时候也触发中断

JK_MSN 2017-02-16 10:42:36
你好,现在有一个问题:
1. 中断信号经过硬件消斗处理;
1. 调试迅为4412的外部中断时,设置中断为下降沿触发,但是在上升沿的时候也触发了中断,这里上升沿触发中断时,中断脚的电平读出来为 0;
2. 设置的外部中断脚为EXYNOS4_GPX2(0),EXYNOS4_GPX2(1),EXYNOS4_GPX1(2),EXYNOS4_GPX3(0);
3. 其中引脚EXYNOS4_GPX3(0)设置为下降沿中断时,在上升沿不会像其他引脚一样触发中断;
4.设置为上升沿触发中断时,在上升沿会触发两次中断,在第一次中断时,读取中断脚的电平为 0,在第二次中断时,读取中断脚的电平为 1 ;
5.调试过程中没有加载下列make menuconfig 路径中提供的的任何驱动:
Device Drivers --->
Input device support --->
  • Keyboards --->
    7. 示波器测出的中断信号如图片所示
...全文
1307 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wq3028 2017-03-14
  • 打赏
  • 举报
回复
我也遇到过这种问题,抖动大概时间都在ns级别的基本不会大于1ms,而一次按键的按下大约都在100ms左右,你设置的是下降沿触发就是下降沿触发。我猜你是在中断中立刻读取当前io的电平 如果是0就是下降沿 1就是上升沿,这样判断的是吧,你说上升沿触发中断是不是抖动触发,你加了去抖电路也不能完全滤调抖动信号。 给你几个建议就是, 1 不管抖动信号,不用判断上升沿还是下降沿中断,你直接设置下降沿触发就是下降沿触发,软件不会出错的。 2 然后在中断中尽量少做事情,尽量不要prink什么的 3 我的做法是进了中断,直接调起一个线程,进线程每隔10ms去判断这个按键的io是不是低电平,如果假设检测5次就是50ms都是低电平,那么就认为这个操作就是一次单击,这样就可以忽略这个抖动。 这是我对这个问题的看法,不知道能不能帮助你
JK_MSN 2017-02-20
  • 打赏
  • 举报
回复
引用 1 楼 xunshanwuzhao 的回复:
这个不应该,这个中断引脚有被复用吗
这脚只被设置为外部中断: gpio_request(EXYNOS4_GPX3(2), "EINT26"); s3c_gpio_cfgpin(EXYNOS4_GPX3(2), S3C_GPIO_SFN(0xF)); s3c_gpio_setpull(EXYNOS4_GPX3(2), S3C_GPIO_PULL_UP); gpio_free(EXYNOS4_GPX3(2)); request_irq(IRQ_EINT(26), eint26_interrupt,IRQ_TYPE_EDGE_FALLING, "eint26", pdev); 除了这些设置外是不是还有其他什么设置呢????
xunshanwuzhao 2017-02-19
  • 打赏
  • 举报
回复
这个不应该,这个中断引脚有被复用吗

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧