免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2033 | 回复: 0
打印 上一主题 下一主题

s3c44b0x 外部中断触发控制寄存器设置了没有效果。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-28 17:44 |只看该作者 |倒序浏览
高手们,你们好。我在写驱动的时候,遇到了一个问题。

s3c44B0X 外部中断2 EINT2,  我想让他只在下降沿触发。
于是我翻看了S3C44B0X的手册,其中第8-15页 有个寄存器

Register  *   Address    *   R/W         *            Description      *           Reset Value
EXTINT  * 0x01D20050  *   R/W *   External Interrupt control Register  *  0x000000

这个寄存器是设置外部中断触发方式的呀。 手册上:
The 8 external interrupts can be requested by various signaling methods. The EXTINT register configures the
signaling method between the level trigger and edge trigger for the external interrupt request, and also configures the
signal polarity.

EINT2 [10:8]
    Setting the signaling method of the EINT2.
000 = Low level interrupt  
001 = High level interrupt
01x = Falling edge triggered
10x = Rising edge triggered
11x = Both edge triggered

根据红色语句,我就将 EXTINT 的第10,设为0,第九位设为1,第8位没有处理。

但是代码运行却出乎我的意料。 在 上升沿和下降沿都触发了中断。

我的实验是 触摸屏 中断 实验, 其中 触摸笔 点在屏上,中断为低电平, 抬起 中断为高电平。

照理说,触摸屏抬起的时候,是电平上升沿,应该不会触发中断的。但是事实却是触发了中断。 这是怎么回事?


以下是 打印LOG
ts Touch Screen Interrupt occured240      //中断函数里打印 printk(DEVICE_NAME " Touch Screen Interrupt occured%x\n", rEXTINT); rEXTINT 值为 0x240 第10位 0 第九位 1

ts Interrupt low240       //这里读取中断IO口状态为低电平  首先设置了中断IO口为IO 输入模式  rPCONG = (rPDATG & ~(0x3<<4))

ts Open irq240           // 重新设置中断IO口为中断模式 rPCONG = (rPDATG |(0x3<<4))

[user]:4,x= 145, y=97   //触摸屏数值
[user]:read the ts      
ts Touch Screen Interrupt occured240    //触摸笔抬起引发另一次中断。。。。

ts Open irq240
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP