前面我们在按下触摸屏时只是打印调试信息,现在我们再按下的中断处理函数里面增加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< if (SUBSRCPND & (1< SUBSRCPND = (1< void adc_ts_int_init(void) { SUBSRCPND = (1< /* 注册中断处理函数 */ register_irq(31, AdcTsIntHandle); /* 使能中断 */ INTSUBMSK &= ~((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(); }
上一篇:S3C2440裸机------触摸屏_定时候程序优化
下一篇:S3C2440裸机------触摸屏_按下松开检测
推荐阅读最新更新时间:2024-11-08 10:20
推荐帖子
- MSP430程序库<四>printf和scanf函数移植
- printf和scanf函数是C语言中最常用的输入出函数,从学习C语言开始,就开始使用这两个函数,然而当写用C语言写单片机程序时却不能使用这两个函数,总觉得单片机的C语言和一般的C语言差别很大,写起来不大方便;其实,单片机的C语言也是标准C语言上扩展或是改动的,都支持格式化输入输出函数(printf和scanf);事实上,printf,scanf只负责格式化输入输出的字符,至于从哪儿输入,输出到哪儿,他们分别依靠getchar和putchar函数,只要实现单片机上的ge
- Engin 微控制器 MCU
- 人工智能必看5本经典书
- 《人工智能复杂问题求解的结构和策略(原书第6版)》书评:本书是一本经典的人工智能教材,全面阐述了人工智能的基础理论,有效结合了求解智能问题的数据结构以及实现的算法,把人工智能的应用程序应用于实际环境中,并从社会和哲学、心理学以及神经生理学角度对人工智能进行了独特的讨论。新版中增加了对“基于随机方法的机器学习”的介绍,并提出了一些新的主题,如涌现计算、本体论、随机分割算法等。《人工智能一种现代的方法(第3版)》书评:本书教学内容非常丰富,不但涵盖
- 高进 下载中心专版
- 功率放大器的性能指标
- 功率放大器的性能指标很多,有输出功率、频率响应、失真度、信噪比、输出阻抗、阻尼系数等,其中以输出功率、频率响应、失真度三项指标为主。1.输出功率输出功率是指功放输送给负载的功率,以瓦(W)为基本单位。功放在放大量和负载一定的情况下,输出功率的大小由输入信号的大小决定。过去,人们用额定输出功率来衡量输出功率,现在由于高保真度的追求和对音质的评价不一样,采用的测量方法不同,因此形成了许多名目的功率称呼,应当注意。(1)额定输出功率(RMS)。额定输出功率是指在一定的
- fish001 模拟与混合信号
- 芯片漏电分析手段被误导了很多年
- 激光诱导定位系统一提到IC漏电定位大家都认为只有OBIRCH,甚至现在可笑的是认为OBIRCH是一种设备的名称。今天小编给大家普及一下这方面的知识。OBIRCH其实只是一种技术,是早年日本NEC发明并申请了专li。它的原理是:给IC加上电压,使其内部有微小电流流过,同时在芯片表面用激光进行扫描。激光扫描的同时,对微小电流进行监测,当激光扫到某个位置,电流发生较大变化,设备对这个点进行标记,也就是
- advbj 测试/测量
- uCOS-II在S3C2440上的移植
- 1)下载源代码http://www.armforum.cn下载最新的uCOS-II-V286版和MichaelAnburaj基于S3C2410的1.6.1移植版。根据代码用途的,建立app,s3c2440,ucosii三个目录,分别放置应用程序,平台移植文件和uCOS的源代码。如图:ARMM开发论坛字串42)新建ADS工程http://www.armforum.cn加入所有代码,修改ARM
- songbo 实时操作系统RTOS
- [开源]UMLStatemachineWizard6.
- UMLStatemachineWizard6.UMLStatemachineWizard6.
- maker Microchip MCU
设计资源 培训 开发板 精华推荐
- DC1785B,使用 LTC2991 I2C 温度、电压和电流监视器的演示板
- LT1376HVCS8 1.5A、500kHz 降压型开关稳压器的典型应用电路
- L78L24AC正压稳压器的电流调节器典型应用
- AD5342 并行接口、双电压输出、12 位 DAC 的典型应用
- EV1HMC6300BG46,HMC6300 57 至 64 GHz 射频发射器评估板
- ADL5324-EVALZ,基于 ADL5324 400 至 4000 MHz 射频驱动放大器的评估板
- LTC6401-14 的典型应用 - 用于 DC-140MHz 的 2GHz 低噪声、低失真差分 ADC 驱动器
- 基于AS5147P的ODrive配套磁编码器_pro
- #第八届立创电赛#电子时钟
- FSEZ1016A 初级侧调节 PWM 集成功率 MOSFET 的典型应用电路