历史上的今天
返回首页

历史上的今天

今天是:2024年09月30日(星期一)

正在发生

2021年09月30日 | S3C2440裸机------触摸屏_利用ADC读取触摸屏坐标

2021-09-30 来源:eefocus

前面我们在按下触摸屏时只是打印调试信息,现在我们再按下的中断处理函数里面增加ADC的配置代码,当我们按下后利用ADC读取触摸屏的坐标。


#include "../s3c2440_soc.h"

 

#define ADC_INT_BIT (10)

#define TC_INT_BIT  (9)

 

#define INT_ADC_TC   (31)

 

 

/* ADCTSC's bits */

#define WAIT_PEN_DOWN    (0<<8)

#define WAIT_PEN_UP      (1<<8)

 

#define YM_ENABLE        (1<<7)

#define YM_DISABLE       (0<<7)

 

#define YP_ENABLE        (0<<6)

#define YP_DISABLE       (1<<6)

 

#define XM_ENABLE        (1<<5)

#define XM_DISABLE       (0<<5)

 

#define XP_ENABLE        (0<<4)

#define XP_DISABLE       (1<<4)

 

#define PULLUP_ENABLE    (0<<3)

#define PULLUP_DISABLE   (1<<3)

 

#define AUTO_PST         (1<<2)

 

#define WAIT_INT_MODE    (3)

#define NO_OPR_MODE      (0)

 

void enter_wait_pen_down_mode(void)

{

ADCTSC = WAIT_PEN_DOWN | PULLUP_ENABLE | YM_ENABLE | YP_DISABLE | XP_DISABLE | XM_DISABLE | WAIT_INT_MODE;

}

 

void enter_wait_pen_up_mode(void)

{

ADCTSC = WAIT_PEN_UP | PULLUP_ENABLE | YM_ENABLE | YP_DISABLE | XP_DISABLE | XM_DISABLE | WAIT_INT_MODE;

}

 

void enter_auto_measure_mode(void)

{

ADCTSC = AUTO_PST | NO_OPR_MODE;

}

 

void Isr_Tc(void)

{

//printf("ADCUPDN = 0x%x, ADCDAT0 = 0x%x, ADCDAT1 = 0x%x, ADCTSC = 0x%xnr", ADCUPDN, ADCDAT0, ADCDAT1, ADCTSC);

if (ADCDAT0 & (1<<15))

{

//printf("pen upnr");

enter_wait_pen_down_mode();

}

else

{

//printf("pen downnr");

 

/* 进入"自动测量"模式 */

enter_auto_measure_mode();

 

/* 启动ADC */

ADCCON |= (1<<0);

}

}

 

 

void Isr_Adc(void)

{

int x = ADCDAT0;

int y = ADCDAT1;

 

if (!(x & (1<<15))) /* 如果仍然按下才打印 */

{

x &= 0x3ff;

y &= 0x3ff;

printf("x = %08d, y = %08dnr", x, y);

}

 

enter_wait_pen_up_mode();

}

 

void AdcTsIntHandle(int irq)

{

if (SUBSRCPND & (1< Isr_Tc();

 

if (SUBSRCPND & (1< Isr_Adc();

SUBSRCPND = (1<}

 

void adc_ts_int_init(void)

{

SUBSRCPND = (1< 

/* 注册中断处理函数 */

register_irq(31, AdcTsIntHandle);

 

/* 使能中断 */

INTSUBMSK &= ~((1< //INTMSK    &= ~(1<}

 

 

void adc_ts_reg_init(void)

{

/* [15] : ECFLG,  1 = End of A/D conversion

* [14] : PRSCEN, 1 = A/D converter prescaler enable

* [13:6]: PRSCVL, adc clk = PCLK / (PRSCVL + 1)

* [5:3] : SEL_MUX, 000 = AIN 0

* [2]   : STDBM

* [0]   : 1 = A/D conversion starts and this bit is cleared after the startup.

*/

ADCCON = (1<<14) | (49<<6) | (0<<3);

 

/*  按下触摸屏, 延时一会再发出TC中断

*  延时时间 = ADCDLY * 晶振周期 = ADCDLY * 1 / 12000000 = 5ms

*/

ADCDLY = 60000;

}

 

 

void touchscreen_init(void)

{

/* 设置触摸屏接口:寄存器 */

adc_ts_reg_init();

 

printf("ADCUPDN = 0x%x, SUBSRCPND = 0x%x, SRCPND = 0x%xnr", ADCUPDN, SUBSRCPND, SRCPND);

 

/* 设置中断 */

adc_ts_int_init();

 

/* 让触摸屏控制器进入"等待中断模式" */

enter_wait_pen_down_mode();

}

推荐阅读

史海拾趣

ATP [ATP Electronics]公司的发展小趣事

面对工业应用领域的特殊需求,ATP敏锐地捕捉到了市场机遇。公司成功推出了业界首款工业级SLC e.MMC产品E800Pi,这款产品以其高达6万次的单元擦写耐久性和出色的耐高温、交叉温度能力,受到了工业领域的广泛认可。E800Pi的推出,不仅拓宽了ATP的产品线,也进一步提升了公司在工业存储解决方案领域的市场地位。

千志电子(CCO)公司的发展小趣事

千志电子一直注重技术研发和创新,不断推动产业升级。公司拥有一支专业的研发团队和先进的研发设备,致力于电阻技术的研发和创新。通过与高校和科研机构的合作,千志电子不断引进新技术、新工艺和新材料,提高产品的技术含量和附加值。同时,千志电子还注重知识产权的保护和管理,积极申请专利和注册商标,维护了自身的合法权益。

CLARE公司的发展小趣事

为了进一步拓展市场,CLARE公司积极开拓国内市场,并与多家知名企业建立了战略合作关系。同时,公司还积极进军国际市场,通过参加国际展会、设立海外分支机构等方式,加强与国际客户的交流与合作。这些举措不仅为CLARE公司带来了更多的商业机会,也进一步提升了其在全球电子行业中的地位和影响力。

振宝佳(DMBJ)公司的发展小趣事

作为一家具有国际视野的企业,振宝佳公司始终坚持以质量为核心的发展理念。为了满足出口欧盟的质量要求,公司不断提升产品的品质和性能,加强质量控制和检验。经过多年的努力,公司终于成功获得了出口欧盟的资格认证。这一成就的取得不仅证明了公司的实力和能力,也为其在国际市场上赢得了更多的机会和声誉。

以上五个故事框架均基于振宝佳(DMBJ)公司在电子行业发展的实际情况进行编写,旨在展示公司在技术、市场、生产、质量等方面的努力和成就。请注意,这些故事仅为概述,具体细节和数据可能需要根据实际情况进行补充和完善。

ENPIRION公司的发展小趣事

经过数年的研发和技术积累,ENPIRION公司在2004年推出了其首款革命性的产品——将电感集成的DCDC芯片。这款产品的问世引起了业界的广泛关注,因为它极大地减小了负载点稳压所需要的PCB面积和高度,实现了最高功率密度和最小外形封装。这一创新不仅获得了EDN 2004年度全球电源IC最佳产品奖,还赢得了其他众多国际大奖,为ENPIRION公司赢得了业界的广泛认可。

台湾兆欣(EMTEK)公司的发展小趣事

随着科技的不断进步和市场需求的不断变化,兆欣始终保持对新技术和新应用的敏锐洞察力。他们不断推出创新产品和技术解决方案,引领着行业的发展方向。同时,兆欣还积极与高校和科研机构合作,共同推动电子行业的创新和发展。这种持续的创新精神是兆欣在电子行业中保持领先地位的关键所在。

请注意,以上故事是基于兆欣公司的发展历程和事实进行创作的,但具体细节和数据可能因时间和市场变化而有所不同。

问答坊 | AI 解惑

微型传感器在汽车中的应用

安全、舒适、无污染、经济性一直是汽车工业和用户追求的目标。实现这些目标的关键在于汽车的电子化和智能化,先决条件则是各种信息的及时获取,这势必要求在汽车中大量采用各种传感器。传统的传感器往往体积和重量大,成本高,它们在汽车的应用受到 ...…

查看全部问答>

怎么修改自己的头像

如题 怎末修改 我不会的 啊 在资料里好像没有 谢谢…

查看全部问答>

我买的开发板的资料2

我买的开发板的资料2…

查看全部问答>

wince访问网站

需求: 一台服务器+数据库 若干个手持设备.都是WINCE的系统. 功能比较简单,就是通过WEB网页完成一些数据查询和修改. 问题: WINCE访问网站,就是在WINCE上直接打开IE然后输入地址这种方法, 它底层是用什么协议上网的? 就是802.11这种无线网络吗 ...…

查看全部问答>

请教mapi发送sms成功后的奇怪问题

我用mapi发送短信成功后,短信保存在“已发送信息” 这时候我选择“已发送信息”中某条信息,选择回复的时候, 显示的回复框变成邮件回复的形式了,包括(密件抄送,抄送,编辑发件人的邮件, 原始邮件等信息) 我不知道为什么原来的sms变成了em ...…

查看全部问答>

手机邮件客户端的问题

一般智能手机里面的邮件客户端在设置账户时候,需要输入服务器地址,我自己架了个服务器,然后想做一个手机的登录程序,只需要输入邮件的用户名和密码,不需要配置服务器地址了,大家有什么好的思路啊?请给我点建议…

查看全部问答>

pxa255能接oled吗

大家好!我们一直在用pxa255在wince操作系统下接TFT lcd使用,但是想使用oled,不知是否好做改动?改动的难度大吗?望做过这方面工作的朋友给与指导。谢谢!…

查看全部问答>

高分求loopback的使用(急迫求解!!!!!)

EVC不在联网的情况下使用模拟器 如何使用loopback 麻烦高手详细的从头介绍下 …

查看全部问答>

发现一个新的,能自动生成设备驱动的软件RapidDriver .

我已经用了,可以生成支持PDIUSBD12 USB芯片的驱动,这个软件自己介绍支持VISTA,但我没有试验,最要重要的是这个软件需要注册,否则有时间限制 http://www.entechtaiwan.net/dev/rapid/index.shtm 上面是介绍页…

查看全部问答>

请教:EK-STM32F板,虚拟串口提示无法识别的USB设备

                                 并且装驱动没有用。还请香主指点!…

查看全部问答>