历史上的今天
返回首页

历史上的今天

今天是:2024年10月08日(星期二)

正在发生

2021年10月08日 | S3C2440裸机------触摸屏_按下松开检测

2021-10-08 来源:eefocus

1.整体流程图

上图中的AdcTsIntHandle是总的中断,里面会进行判断,如果是ADC中断,则调用ADC中断函数,如果是触摸屏中断,那么就调用触摸屏中断函数。


2.touchscreen.c

#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 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_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);

 

ADCDLY = 0xff;

}

 

 

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();

}

推荐阅读

史海拾趣

Andersen Laboratories Inc公司的发展小趣事

在不断追求技术创新和市场扩张的过程中,AnalogicTech始终坚持多元化发展战略。公司不仅在LED背光液晶电视市场取得了显著成绩,还积极拓展其他领域,如智能手机、平板电脑等消费电子产品市场。通过不断推出创新产品和解决方案,AnalogicTech成功实现了市场的多元化发展,为公司的长期稳定发展奠定了坚实基础。

这五个故事展示了AnalogicTech公司在电子行业中发展起来的关键阶段和重要举措。凭借其卓越的技术创新、全球化的运营策略、高效的物流配送体系以及市场扩张与多元化战略的推进,AnalogicTech成功地在竞争激烈的电子行业中脱颖而出,成为了一家备受瞩目的企业。

Hitachi Chemical Co America Ltd公司的发展小趣事

为了更好地服务全球客户,AnalogicTech积极实施全球化运营策略。公司在亚洲和大中华地区建立了广泛的晶圆制造和后端合作伙伴网络,包括香港地区、上海和台湾地区的台北。此外,AnalogicTech还迁入香港科技园,将深圳地区纳入业务版图,提高在中国大陆的销售情况,特别是珠江三角洲地区。

艾为(AWINIC)公司的发展小趣事

2008年,孙洪军牵头创办了上海艾为电子技术股份有限公司。创立之初,艾为就明确了其使命:专注于混合信号、模拟、射频等IC设计,聚焦在手机、可穿戴、智能硬件、IOT等消费电子领域。公司秉持着“客户需求是艾为存在的唯一理由,高素质的团队是艾为的最大财富”的理念,致力于为消费电子市场提供高性能的集成电路解决方案。

AdaptivEnergy公司的发展小趣事

艾为电子注重与产业链上下游企业的合作,通过协同创新和资源共享,实现共赢发展。例如,艾为与歌尔股份建立了长期合作伙伴关系,双方在声光电射手等领域展开了深度合作,共同推出了多款优秀产品。此外,艾为还与多家ODM厂商和智能硬件企业建立了紧密的合作关系,共同推动产业链的协同发展。

Acopian Power Supplies公司的发展小趣事

2015年7月,艾为电子成功挂牌新三板,迈入了资本市场的新征程。上市以来,艾为电子充分利用资本市场的优势,加快了技术研发和市场拓展的步伐。同时,公司还积极寻求与国内外优秀企业的合作机会,通过引入战略投资者和开展资本运作,为公司的未来发展注入了新的动力。

这五个故事从不同角度展现了艾为电子在电子行业中的发展历程和成就,体现了公司不断追求卓越、创新发展的精神风貌。随着科技的不断进步和市场的不断变化,相信艾为电子将继续保持其竞争优势,为电子行业的发展贡献更多力量。

Analog Modules Inc公司的发展小趣事

艾为电子注重与产业链上下游企业的合作,通过协同创新和资源共享,实现共赢发展。例如,艾为与歌尔股份建立了长期合作伙伴关系,双方在声光电射手等领域展开了深度合作,共同推出了多款优秀产品。此外,艾为还与多家ODM厂商和智能硬件企业建立了紧密的合作关系,共同推动产业链的协同发展。

问答坊 | AI 解惑

定时器为什么不中断了

  各位哥哥哥姐这个程序第一次启动定时器可以正常运行,第二次启动定时器就不中断了,小弟初学单片机,实在是找不出原因了。   ORG 0000H   LJMP START   MORG 000BH   LJMP TIMER1 ;定时器1的中断处理   ORG 30H START: &nbs ...…

查看全部问答>

LPC1114 UART收发实验(史上最全)

UART是很多实验的基础,可以作为其他实验运行的验证。在做LPC1114 UART实验时,发现LPCXpresso的例程只有发送函数,而且是发送字符串的,所以本人完善了一些,添加了一个发送字符串的函数UARTSendByte(),一个接受字符的函数UARTReceiveByte(),一 ...…

查看全部问答>

下述代码用VC能编译通过,用ads1.2编译器则不行,错误提示:Serious error: C2432E: non-constant initialiser

#define BYTE unsigned char #define WORD unsigned short int #define DWORD unsigned int #define SDWORD signed int #define SBYTE signed char #define SWORD signed short int static SWORD neg_pow2[17]={0,-1,-3,-7,-15,-31,-63,-12 ...…

查看全部问答>

udp发送文件问题

请问各位大侠,在vc下,可以用udp发送数据流吗,我现在只会发送字符串,要想发送文件该怎么实现呢?…

查看全部问答>

EVC中动态改变静态文本控件颜色

请教一个EVC中动态改变静态文本控件颜色的问题;     现在正在开发一个基于WinCE.net4.2平台的应用程序,用EVC开发一个MFC应用程序。 碰到的问题是:我在对话框中依次排列了四个静态文本控件,ID分别为IDC_STATIC1,IDC_STATIC2,IDC_STA ...…

查看全部问答>

M3工具大全

本帖最后由 paulhyde 于 2014-9-15 09:39 编辑 怎么不能上传附件?  …

查看全部问答>

DSP上电后产品功能时好时坏,拜托高手们帮帮忙啦。

我的产品是上电后,DSP程序一次性从flash搬到sram中,大部分时间是正常的,但是有时候会出现一部分功能好的,另一部分功能完全不对,重新上电后问题就有可能不复现了。 拜托各位帮我想想会是什么方面的问题呢? 有没有可能是sram中的程序在加载时 ...…

查看全部问答>

ADC检测值异样问题

我的单通道多次转换AD,已经有软件的平滑滤波,但是检测大于1V的信号是显示低于1V接近1V              检测200mV的信号显示0.956~0.542之间不断波动,总之是与实际值相差较大,检测2V以上信号时 ...…

查看全部问答>

【TI经典】数字电源UCD92xx 输出电压波形的优化

亲爱的朋友们~~小编又来献礼啦:carnation:~~今天小编为大家带来的是《数字电源UCD92xx 输出电压波形的优化》。基于UCD92xx 与UCD7xxx 的非隔离数字电源,其输出电压在软启动阶段经常出现“台阶”现象,波形不平滑,尤其是输出电压设定为较低值时, ...…

查看全部问答>

单摆倒立程序求助!!

本帖最后由 paulhyde 于 2014-9-15 03:26 编辑 新人报道!!向大神求一个程序,关于倒立摆的。就是自己手动把单摆放垂直,然后怎么让它保持倒立,稳定住!我用的是二相步进电机~~    …

查看全部问答>