ARM嵌入式系统中触摸屏的中断控制方法

发布者:CuriousObserver最新更新时间:2011-06-10 关键字:ARM  嵌入式系统  触摸屏  中断控制 手机看文章 扫描二维码
随时随地手机看文章

    随着嵌入式微处理器性能的提高,集成的外围接口设备越来越多,而外围设备与处理器之间多采用中断方式进行通信,即使在没有操作系统的情况下,也常需要对多个外围设备的中断处理例程进行动态加载,从而实现对多个外围设备的集中动态管理。同时,中断功能可以解决CPU内部运行速度远远快于外部总线速度而产生的等待延时问题。因此,嵌入式微处理器的应用设计中,中断处理通常是系统的核心任务之一。

1 触摸屏
    (1)触摸屏简介
    随着多媒体信息查询的与日俱增,人们越来越关注触摸屏。触摸屏具有坚固耐用、反应速度快、节省空间、易于交流等许多优点,作为一种最新的电脑输入设备,它是目前最简单、方便、自然的人机交互方式。它赋予多媒体崭新的面貌,是极富吸引力的全新多媒体交互设备。触摸屏由触摸检测部件和触摸屏控制器组成。触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,接收信息后送至触摸屏控制器;触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标后送给CPU,同时能接收CPU发来的命令并加以执行。按照触摸屏的工作原理和传输信息的介质,触摸屏可以分为4种,即电阻式、电容感应式、红外线式以及表面声波式。这里采用的是四线电阻屏。
    (2)S3C2410A触摸屏控制器
    S3C2410A触摸屏的外接电路主要是控制上下两层导电层的通断情况以及取电压,取电压之后还需要将这个模拟量转换成数字量,这部分工作主要是靠S3C2410A芯片中的模数转换器来实现的。即触摸屏的功能实现实际上分两部分,分别是触摸屏的外接电路部分和S3C2410A芯片自带的A/D转换控制部分。

2 ARM嵌入式操作系统中断处理方法
    在嵌入式系统中外部设备的功能主要是靠中断机制来实现的。因此,ARM作为嵌入式微处理器的典型代表,为保证系统的实时性和稳定性,建立了一套完整的异常处理机制。
2.1 S3C2410A中断寄存器
    每个寄存器在中断处理流程中所扮演的角色是不同的,中断流程如图1所示。


2.2 中断与中断服务程序
    中断的硬件逻辑将检测到的中断,以某种方式指向中断服务程序的地址,该地址在头文件中以宏定义的形式出现。用户在自己的程序中,将中断服务程序的地址赋给该指针,从而将中断与中断服务程序联系起来。
    为了方便使用高级语言编写异常处理函数,ARM编译器对异常处理函数作了特定的扩展,只要使用关键字__irq,编译出来的函数就满足异常响应对现场保护和恢复的需要。
    在ADS编译器中,__irq专门用来声明IRQ中断服务程序。如果用__irq来声明一个函数,那么该函数就是IRQ中断服务程序,编译器会自动在函数内部增加中断现场保护代码。

3 中断方式实现触摸屏驱动
3.1 中断寄存器的设置与使能
    S3C2410A的触摸屏是带子中断的内部中断。当中断发生后,SUBSRCPND相应位置1,如果没有被INTSUBMSK屏蔽,那么SRCPND相应位置1,如果没有被INTMSK屏蔽,就进一步设置INTMOD。这里采用IRQ中断方式,所以SRCPND可以有多位置1(FIQ只能有1位),经过PRIORITY选出一个优先级高的,然后把INTPND相应位置1(只能选出1位),进入IRQ,让CPU处理。

[page]

    首先必须弄清楚SUBSRCPND与SRCPND之间的关系,几个SUBSRCPND可能对应同一个SRCPND。经过不断总结,得出的对应关系如表1所列。从表中可知,触摸屏要用到SUBSRCPND中的INT_TC位,即SUBSRCPND[9]。这里定义变量:
    #define BIT_SUB_TC(0x1<<9)
    与之对应的是SRCPND中的INT_ADC位,即SRCPND[31],又定义变量:
    #define BIT_ADC(0xl<<31)
    INTMOD与PRIORITY采用默认设置。因此,可以把触摸屏的中断过程写为:


   
3.2 触摸屏中断与触摸屏中断程序
    首先使能ARM芯片的中断向量。当有IRQ中断到来,CPU会自动到0x18地址处取指。0x18处的指令是CPU根据中断源算好的。这里触摸屏的中断INT-ADC来了,那么0x18处的指令就是跳转到地址0x9c处。然后就执行“ldr pc,=HandlerINT_ADC”这条指令。这条指令的执行结果就是跳转到“HandlerINT_ADC”处执行。
    那么“HandlerINT_ADC”处又是什么指令呢?从访问绝对地址的内存位置“#define pISR_ADC(*(unsigned*)(ISR_STARTADDRESS+0x9c))”可知,“HandlerINT_ADC”处的地址就是_ISR_STARTADDRESS+0x9C。
    上述语句把无符号整数_ISR_STARTADDRESS+0x9c强制转换为指针,指向RAM,通过语句“pISR_ADC=(int)touchscreen;”对它进行访问,touchscreen即为所定义的触摸屏中断程序,该中断服务程序必须使用“__irq"关键字进行声明。这样,用户在自己的程序中,将中断服务程序的地址赋给该指针,从而将触摸屏的中断与触摸屏的中断程序联系起来。整个触摸屏中断与触摸屏中断程序的联系如图2所示。

结语
     本文完成了触摸屏相关中断寄存器的设置,并编写了触摸屏的中断处理程序,采用编写“__irq”函数的方法实现了基于中断的触摸屏控制。在实际应用中,该程序设计简单可靠,触摸点坐标值读取准确,且无粘滞现象,达到了预期效果。

 

关键字:ARM  嵌入式系统  触摸屏  中断控制 引用地址:ARM嵌入式系统中触摸屏的中断控制方法

上一篇:基于USB的ARM仿真器的研究与设计
下一篇:基于ARM的智能家居视频监控系统

推荐阅读最新更新时间:2024-03-16 12:36

ARM-数据处理指令-赋值操作
1、MOV: 把某数值写入目标寄存器中; 编码格式: 指令语法: MOV{ cond }{S} Rd , shifter_operand ---字段定义--- cond: 指令的执行条件; S : 书写S,则bit =1,根据计算结果更新CPSR的条件标志位;忽略S,则bit =0,不更新CPSR的条件标志位; Rd : 保存数值的目的寄存器; shifter_operand: 指定第2操作数,需要被保存的数值; 指令语义: Rd = shifter_operand 2、MVN: 把某数值按位取反之后写入目标寄存器中; 编码格式: 指令语法: MVN{ cond }{S} Rd , shifter_operand -
[单片机]
<font color='red'>ARM</font>-数据处理指令-赋值操作
ARM基础知识教程二:ARM处理器的寄存器
在ARM体系中通常有以下3种方式控制程序的执行流程: 在正常执行过程中,每执行一条ARM指令,程序计数器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器(PC)加2个字节。整个过程是按顺序执行。 跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。其中,B指令用于执行跳转操作;BL指令在执行跳转操作同时,保存子程 序的返回地址;BX指令在执行跳转操作同时,根据目标地址为可以将程序切换到Thumb状态;BLX指令执行3个操作,跳转到目标地址处执行,保存子程序的返回 地址,根据目标地址为可以将程序切换到Thumb状态。 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程
[单片机]
ARM-Linux GPIO操作事宜
1.在嵌入式Linux GPIO表示为 S3C2410_GPx(n) ,其中x的取值为 A,B,C,D,E,F,G,H..... ,表示那个GPIO口,n的取值为 1,2,3,..... 表示第几个管脚。 例如 B口的第六管教:S3C2410_GPB(6) D口的第12管教:S3C2410_GPD(12) ..... 注 这些宏定义在arch/arm/mach-s3c2410/include/mach/gpio-nrs.h,使用#include mach/gpio-nrs.h 以下包含#include mach/hardware.h linux/gpio.h mach/regs-gpio.h 2.设置gpio的工作模
[单片机]
maXTouch控制器助力触摸屏用于三星Windows 8新型智能PC
微控制器及触摸技术解决方案的领导厂商爱特梅尔公司(Atmel® Corporation)宣布三星公司(Samsung)已经选择maXTouch® mXT1664S触摸屏控制器用于新型Smart PC 和Smart PC Pro产品。三星新型Smart PC设计用于Windows® 8操作系统,具有可分离键盘坞座系统,能够轻易从传统的翻盖式PC转变为可变换PC。 三星的Smart PC利用爱特梅尔的高性能单芯片mXT1664S触摸屏控制器,在11.6英寸屏幕上为用户提供最佳的触摸体验。通过maXTouch控制器,用户可以体验出色的触摸响应、更低的设备功耗、亮度更高的显示屏,更好的操作性能,并且可以使用噪声较大的充电器。
[手机便携]
明年电容触摸屏技术是否会迎来市场井喷?
  得益于苹果iPhone的热?卖,投射式电容触摸屏成为众多用户和开发者关注的热门技术,也有大量的供应商和设计者计划开始使用电容触摸屏。然而,随著对新技术关注度的慢慢沉淀,电容触摸屏在设计上和商业上需要考虑的各种实际问题也开始浮现。与此同时,纯平电阻式触摸屏工艺(TouchWindow)的完善使电阻式触摸屏的成本和外观更具竞争力,一些新兴电阻触摸屏技术已诞生,比如支持多点触摸感应的数字式电阻触摸屏、支持多种手势的模拟矩阵式电阻触控等等。   不过,由于电容触摸屏天生的高透光率、经久耐用、优秀的用户体验及支持多点触摸等优势,它正被越来越多的手机厂商所采用,并且即将推出的Windows7将推动电容触摸屏从小屏幕走向中屏幕,进入更多的
[手机便携]
Atmel MCU为何坚持AVR与ARM两条路线?
在很多MCU公司放弃8/16位研发、仅仅是维持时,Atmel仍坚持自有的AVR架构,并与其ARM MCU互补的立场。 目前,Atmel有两大系列:自有的AVR和ARM系列。AVR是Atmel独特的,特别在8位MCU很受欢迎的。8位MCU用于更低成本。在8位市场AVR数一数二,所以Atmel会在8位继续保持AVR的技术研发。而32位MCU,Atmel也发现市场趋势会渐渐转到ARM架构上。所以也很早推出ARM产品,定位更高计算能力的产品。当然,也会有一些高端的8位MCU产品和低端的32位MCU,该如何取舍呢?Atmel主要看我们的客户想选择AVR或是ARM。 让ARM MCU差异化 那么,基于ARM的MCU是不是会产生同质
[单片机]
配置arm linux Qt开发环境
配置arm linux Qt开发环境的过程相对比较复杂,所以有必要把步骤记录一下。 版本:Ubuntu10.04 LTS / Qt SDK 4.7.3 / arm-linux-gcc 4.4.3 一、安装arm-linux-gcc编译器 1.下载arm-linux-gcc-4.4.3, http://ishare.iask.sina.com.cn/f/13836544.html 2.解压后复制到/usr/local/toolschain目录,其他目录也可以,本文以此路径为例 3.使用 sudo gedit /etc/enviroment 修改PATH,添加/usr/local/toolschain/4.4.3/bin:。注意
[单片机]
一文带你了解ARM的发展历程
ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权。却做到了在手持设备市场上占有90%以上的份额。软银在2016年耗资300多亿美元拿下ARM,使得本来就大红大紫的ARM公司,再一次窜到了业界人士的面前。ARM这家不生产芯片却也能数钱数到手抽筋的公司到底有着怎样的发展史。1978年,CPU公司悄悄在英国剑桥诞生。 这个CPU指的不是电脑里面的CPU芯片,而是跟它有一样字母的公司,可能很多人并不是很熟悉。 Central Processing Unit,中央处理器 CPU公司的全称:Cambridge Processor Unit,字面意思是“剑桥处理器单元”。 CPU公司的创始人:奥地利籍物理学博士Hermann H
[单片机]
一文带你了解<font color='red'>ARM</font>的发展历程
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved