天嵌 ARM开发社区

 找回密码
 注册
查看: 3205|回复: 4

qt应用程序中关于触摸屏和ADC冲突的问题

[复制链接]
20 回复本帖可获得 5 奖励! 每人限 1 次(中奖概率 50%)
月骅 发表于 2012-3-22 21:39:23 | 显示全部楼层 |阅读模式
最近在用qtcreator写了一个程序,用天嵌2440自带ADC采样并在屏幕上画线。目前功能基本已经实现。当拧动可变电阻的时候,可以看到线在高低变化,最低0,最高1023.画像用的是实线,而不是一个个的点。
但是出现了一个bug:
当我在点击触摸屏的时候,ADC的值就直接变为0,当停止点击触摸屏,ADC采样值画线又回到了正常的状态。
如果用鼠标的话就不会出现这种问题。
请问这个有什么好方法解决吗?呼叫众位高手给出解决方法和意见。
另外,阅读了EmbedSky_adc.c的源码,有小问题希望斑竹能回答下:
#define ADC_INPUT(x)                ((x) << 3)
这句话定义的是ADC的输入通道吧。
#define START_ADC_AIN(ch, prescale) \
        do{         ADCCON = PRESCALE_EN | PRSCVL(prescale) | ADC_INPUT((ch)) ; \
                ADCCON |= ADC_START; \
        }while(0)
这段话是定义ADCCON寄存器的吧。
在这段话中做了一句修改如下
static int tq2440_adc_open(struct inode *inode, struct file *filp)
{
        init_waitqueue_head(&(adcdev.wait));

        adcdev.channel=1;        //设置ADC的通道
      //adcdev.channel=2;          //设置ADC的通道
        adcdev.prescale=0xff;


        DPRINTK( "ADC opened\n");
        return 0;
}
然后重新编译内核,是否可以将转换通道变为AIN1。
如果不能,求教正确的方法可以使用AIN1,AIN0或者AIN3.

 楼主| 月骅 发表于 2012-3-23 10:25:20 | 显示全部楼层
自己顶一个
回复

使用道具 举报

 楼主| 月骅 发表于 2012-3-23 12:42:13 | 显示全部楼层
貌似是不能解决的问题。除非自己外扩ADC啊。
回复

使用道具 举报

TQ-ZQL 发表于 2012-3-23 14:38:33 | 显示全部楼层

回帖奖励 +5

因为ad与触摸是有冲突的,它们共用了一些寄存器,如控制寄存器。你可以在操作adc时,先装它的值保存下来,然后在操作完成后再重新加载回去。这样adc就不会影响触摸了。

      //adcdev.channel=2;          //设置ADC的通道
这个是可以改通道的。
回复

使用道具 举报

 楼主| 月骅 发表于 2012-4-3 10:27:46 | 显示全部楼层
TQ-ZQL 发表于 2012-3-23 14:38
因为ad与触摸是有冲突的,它们共用了一些寄存器,如控制寄存器。你可以在操作adc时,先装它的值保存下来,然 ...

感谢版主回答,正在尝试用滤波算法解决这个问题。
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-6-20 06:55 , Processed in 2.045929 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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