跟着嵌入式微处理器功用的进步,集成的外围接口设备越来越多,而外围设备与处理器之间多选用中止办法进行通讯,即便在没有操作体系的状况下,也常需求对多个外围设备的中止处理例程进行动态加载,然后完成对多个外围设备的会集动态办理。一起,中止功用能够处理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处理。
首要有必要弄清楚SUBSRCPND与SRCPND之间的联络,几个SUBSRCPND或许对应同一个SRCPND。经过不断总结,得出的对应联络如表1所列。从表中可知,接触屏要用到SUBSRCPND中的INT_TC位,即SUBSRCPND[9]。这儿界说变量:
#define BIT_SUB_TC(0x19)
与之对应的是SRCPND中的INT_ADC位,即SRCPND[31],又界说变量:
#define BIT_ADC(0xl31)
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”函数的办法完成了根据中止的接触屏操控。在实践运用中,该程序规划简略牢靠,接触点坐标值读取精确,且无粘滞现象,达到了预期作用。