天嵌 ARM开发社区

 找回密码
 注册
查看: 1448|回复: 2

触摸屏驱动

[复制链接]
lvlei 发表于 2012-4-18 10:57:23 | 显示全部楼层 |阅读模式
请问在TQ2440的触摸屏驱动tq2440ts.c驱动程序中static irqreturn_t stylus_action(int irq, void *dev_id)函数下,有这样一句
if (count < (1<<2))
                {
                        iowrite32(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
                        iowrite32(ioread32(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
                }
                else
                {
                        mod_timer(&touch_timer, jiffies+1);
                        iowrite32(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
                }
请问为什么这里是if (count < (1<<2))而不是小于2???我试了下,当小于3的时候也可以,小于2的时候就会出现采集到的触摸点和实际触摸点有一定的偏差??为什么???
 楼主| lvlei 发表于 2012-4-18 12:27:52 | 显示全部楼层
自己搞了半天搞懂了,是在static void touch_timer_fire(unsigned long data)函数中有                                                                          
                        xp >>= 2;
                        yp >>= 2;
可见上面的if (count < (1<<2))采集四次数据,是为了在中断处理函数中队这是个数据求平均值,就是 xp >>= 2;
                        yp >>= 2;
亚瑟王 发表于 2012-4-18 16:55:13 | 显示全部楼层
亲,解决了就好。
多数时候前后代码都是有联系的。需要注意哦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-3 11:25 , Processed in 1.025430 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表