打印

s3c44b0x 外部中断 触发控制寄存器 设置。

[复制链接]
2166|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
swet123|  楼主 | 2010-12-28 17:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
高手们,你们好。我在写驱动的时候,遇到了一个问题。
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    //触摸笔抬起引发另一次中断。。。。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

1

粉丝