主题 : S3C2440 ADC驱动和触摸屏驱动ADC共享中断理解 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 6147
精华: 0
发帖: 91
金钱: 640 两
威望: 241 点
综合积分: 182 分
注册时间: 2009-05-21
最后登录: 2011-06-23
楼主  发表于: 2009-08-27 11:59

 S3C2440 ADC驱动和触摸屏驱动ADC共享中断理解

大家好,
          因为我上次在做触摸屏驱动调试时,出现读ADC有时侯读出来的X Y值有错误,有时侯是对的,后来通过查看ADC驱动,发现这两个驱动都注册了IRQF_ADC这个中断号,下面我把我所理解的和大家说下,如有不对的地方,请提出


     在TS和ADC驱动中都需要读ADC中断,我们的产品需要通过ADC来读取电池电压,此处只需要用一个通道即可,而TS则需要用到ADC中的两个通道来读取X Y轴值,如果不做处理,就会出现两边同时进行读时,不管哪一边,都会造成中断,从而导致读取的值不正确,当然这里有多种方法解决,如:可以在驱动中添加一个struct semaphore信号量来做同步,也可以读取时判断通道,我看了下Mini2440的Linux-2.6.29中的处理就是添加了一个extern struct semaphore ADC_LOCK,我是这样理解的,请版主看下
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-08-27 13:04
是的,ADC不可能在同一时间为两个通道服务
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."