s3c2440裸机-电阻触摸屏-3-触摸屏TSC初始化和中断服务程序框架

发布者:BlissfulMoments最新更新时间:2024-07-04 来源: elecfans关键字:电阻触摸屏  触摸屏  中断服务  程序框架 手机看文章 扫描二维码
随时随地手机看文章

1. ADC中断产生流程


中断源:

这里是ADC和TSC共用一个中断源。



SRCPND表示哪个中断源产生了中断请求。




INTMODE:配置中断模式




配置中断屏蔽寄存器




中断挂起寄存器(用来显示当前优先级最高的、正在发生的中断, 需要清除对应位)





从SRCPND寄存器可以读到ADC和TSC复用的同一个中断源,那么如何区分呢?

可以从SUBSRCPND寄存器配置,如下:




当bit 9被置1时,表示TSC中断。那么我们需要打开subsrcmask寄存器



所以TSC中断的产生流程如下:



2. TSC编程实现

  ①初始化TSC,ADCTSC寄存器

②设定TSC处于“等待中断模式”

  ③使能TSC中断

      INTSUBMSK

      MSK/MODE

  ④按下,进入TSC中断

      进入自动采集转换模式

      启动ADC

  ⑤ADC中断

      读数据

      再次进入”等待中断模式“

      启动定时器(为了处理长按或者滑动操作)

  ⑥定时器中断

      若松开,结束

      如任然按下,进入④步骤的启动ADC流程



2.1 初始化

void touchscreen_init(void) { /* 设置触摸屏接口:寄存器 */ adc_ts_reg_init(); /* 设置中断 */ adc_ts_int_init(); /* 让触摸屏控制器进入'等待中断模式' */ enter_wait_pen_down_mode(); }

2.1.1 tsc寄存器init

主要是设置预分频,产生ADC clk = 1MHz.

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; }

2.1.2 TSC interrupt init并且使能int

为了将中断源开启,这里设置SUBSRCPND 和INTSUBMSK让中断源开启。通过register_irq()注册中断号和中断服务程AdcTsIntHandle,查表得出中断号为31,这样当硬件产生中断后可以从INTOFFSET区分是哪个中断号。如下图:



void adc_ts_int_init(void) { SUBSRCPND = (1<

2.1.3 进入'等待中断模式'







进入等待中断模式,YM闭合, YP, XP, XM断开,需要pull up,WAIT_PEN_DOWN表示要等待的是按下中断,当触摸屏按下时就会产生一个TSC irq,反之WAIT_PEN_UP表示要等待的是松开中断。

#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; }

2.2 TSC中断服务程序

SUBSRCPND的bit9, bit10可以区分是TC中断还是ADC中断。



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))//dat寄存器的第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<
  //SRCPND = 1<<31;/*在interrupt.c已经清中断了*/
}

AdcTsIntHandle函数: 这里先注解掉ADC中断,只检测单独的按下松开触摸屏操作。那当isr处理完后为了能够正常响应下一次中断,需要清中断,否则会一直触发interrupt。

Isr_Tc函数:ADCDAT0 寄存器的第15位判断按下还是松开。那么当按下后,要将控制器进入”等待松开模式“,当松开后,要将控制器配置进入”等待按下模式“。



关键字:电阻触摸屏  触摸屏  中断服务  程序框架 引用地址:s3c2440裸机-电阻触摸屏-3-触摸屏TSC初始化和中断服务程序框架

上一篇:s3c2440裸机-电阻触摸屏-4-isr设计_获取触摸屏坐标
下一篇:s3c2440裸机-电阻触摸屏-2-触摸屏TS控制器

推荐阅读最新更新时间:2024-11-04 14:59

s3c2440栈分配情况(fl2440裸机 stack)
//2440INIT.S ;The location of stacks UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ SVCStack EQU (_STACK_BASEADDRESS-0x2800) ;0x33ff5800 ~ UndefStack EQU (_STACK_BASEADDRESS-0x2400) ;0x33ff5c00 ~ AbortStack EQU (_STACK_BASEADDRESS-0x2000) ;0x33ff6000 ~ IRQStack EQU (_STACK_BASEADDRESS-0x1000)
[单片机]
基于ARM微处理器的液晶触摸屏的接口设计
摘要: 作为人机交互的重要手段,液晶触摸屏使用越来越多,基于微控制器与触摸屏的接口技术在工业控制、智能家电等领域得到应用广泛,开发微控制器与液晶触摸屏的接口技术是智能电子产品设计的重要工作;介绍了一款液晶触摸屏系统的总体设计方案、电路接口和编程方法;该系统由T FT 液晶屏模块、触摸屏和ARM 微处理器控制板组成;TFT 液晶模块内置SSD1289 控制器,尺寸3.2 英寸、分辨率240×320 像素;触摸屏由触摸传感部件和触摸屏控制器ADS 7843 组成;控制板采用ARM7 微处理器LPC2148 为控制核心;测试和工程实践结果表明,所设计的软、硬件达到了各项要求,并且具有操作方便、稳定性好、性价比高等技术特点,有较好的推
[家用电子]
基于ARM微处理器的液晶<font color='red'>触摸屏</font>的接口设计
STM32 TFT学习笔记——触摸屏
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:ST NUCLEO-F303RE TFT型号:2.4英寸,带触摸,SD卡,240*320分辨率,26万色 驱动IC:ILI9325 ST库版本:STM32Cube_FW_F3_V1.1.0 SD卡:Kingston 16GB Micro SDHC Class 10 触摸IC:XPT2046 关于XPT2016的说明可以从网上下载很多资料,XPT2046使用SPI通信接口,接口说明如下: 多出了一个BUSY脚和一个PENIRQ脚,BUSY信号指示XPT2046工作状态,但是在使用过程中发现其不起作用,所以就没用了,PEN
[单片机]
STM32 TFT学习笔记——<font color='red'>触摸屏</font>
诺基亚和苹果面临手机触摸屏专利大战
  根据市场研究机构nomura的研究结果,诺基亚公司和苹果公司可能会爆发一场手机触摸屏专利权的大战。因为诺基亚宣布将在明年推出触摸屏手机,而在苹果发布iphone手机之时,首席执行官斯蒂夫.乔布斯就骄傲地宣称公司拥有触摸屏设计的专利而且准备捍卫专利权。   nomura的分析师理查德.温莎说:“我想苹果公司会认为诺基亚正在侵犯其专利使用权,但是我不认为事情会象诺基亚和高通公司之间的侵权案件那么严重。”   诺基亚已经展示了其明年即将正式发布的触摸屏手机。新款手机将使用具备触摸反馈功能和屏幕显示功能的敏感触摸屏,这和iphone手机的触摸屏从表面看非常类似。   温莎还表示,苹果公司宣称已经注册了在iphone手机上使用的触
[工业控制]
s3c2440裸机-内存控制器(三-1、norflash编程之NorFlash原理)
1.flash种类与特性: flash一般分为nand flash和nor flash,各自特性如下表: - Nor NAND XIP(片上执行) yes no 性能(擦除) 非常慢(5s,块太大) 快(3ms) 性能(写) 慢 快 性能(读) 快 快 可靠性 高 一般(容易出现位反转) 可擦除次数 10000 ~ 100000 100000 ~ 1000000 接口 与ram类似,可直接访问任意地址 I/O接口(无地址线,必须串行访问,命令、地址、数据共用8位IO) 易用性 容易 复杂 主要用途 常用于保存代码和关键数据 用于保存数据 价格 高 低 容量 小 大 常用文件系统类型 jffs yaff
[单片机]
<font color='red'>s3c2440</font><font color='red'>裸机</font>-内存控制器(三-1、norflash编程之NorFlash原理)
介绍Smart Line触摸屏与V20变频器通过MODBUS通讯的实现方法
通常情况下,要实现HMI设备与V20变频器的通讯,需要一个支持USS通讯或MODBUS通讯的PLC,比如S7-200系列PLC。其通讯电缆连接如图1所示。PLC的一个通讯端口与触摸屏连接,可以采用PPI协议通讯。PLC的另一个通讯端口与V20的RS485通讯端口连接,采用MODBUS协议通讯,PLC上编写MODBUS主站程序,V20为从站。 如果只需要对V2O变频器做简单的运行控制和变量监视,那么上述配置中PLC的作用仅为数据中转。这种情况下,触摸屏直接和V20变频器通讯,不仅能够实现监控功能,而且可以少用一个PLC,节省成本。采用西门子的SMART LINE系列触摸屏能够实现与V20变频器直接通讯的功能。通讯电缆连接如图2所
[嵌入式]
介绍Smart Line<font color='red'>触摸屏</font>与V20变频器通过MODBUS通讯的实现方法
Touch Panel Systems扩充产品群,满足触摸屏液晶显示器需求扩大
    带触摸面板的21.5英寸液晶显示器“2201L”(右下方为新产品)(点击放大) 带触摸面板的55英寸数字标牌用大型液晶显示器(点击放大)   日本Touch Panel Systems投产了5款带触摸面板的15~21.5英寸液晶显示器新产品,以及带触摸面板的55英寸数字标牌用大尺寸液晶显示器。   Touch Panel Systems对5款带触摸面板的15~21.5英寸液晶显示器新产品的定位是,通过提供多种画面尺寸和触摸面板方式选项,广泛满足使用POS系统及Kiosk终端的店铺及流通领域和待客服务领域的需求。此次投产了画面尺寸为15英寸的“1515L”、17英寸的“1715L”、15.6英寸宽屏的“1519L”、18
[手机便携]
什么是单片机堆栈?单片机堆栈原理
单片机堆栈是什么? 在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。 单片机堆栈有什么用? 1)子程序调用和中断服务时CPU自动将当前PC 值压栈保存,返回时自动将PC值弹栈。 2)保护现场/恢复现场 3)数据传输 单片机堆栈原理: 堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。 堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的R
[单片机]
什么是单片机堆栈?单片机堆栈原理
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved