版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验四 中断实验一、实验目的1、了解中断的作用;2、掌握嵌入式系统中断的处理流程;3、掌握ARM中断编程。二、实验内容1、编写中断处理程序,处理外部中断;2、实验各种外部中断触发方式。三、实验设备1、硬件:DM2410实验板;测控与显示扩展板;PC机;JTAG仿真器;2、软件: PC机操作系统(WINDOWS 2000);ARM Developer Suite v1.2;Multi-ICE V(Build1319);四、基础知识1、了解ADS集成开发环境的基本功能;2、了解I/O口的设置相关知识。3、了解中断的作用以及基本处理过程;(三)实验说明:S3C2410处理器的中断处理与其他CPU的处
2、理模式基本上是一致的,只是由于它引入了几种不同的处理器模式,使中断处理变得更加容易。其典型的步骤如下:1)保存现场:当系统出现中断时,处理器首先要做的就是保存现场,这一过程包括:保存当前的PC值到lr中,保存当前的程序运行状态到spsr中。值得注意的就是由于ARM采用三级流水线结构,当时的PC值实际上等于当前指令地址加上8(ARM指令时),所以返回时还需将保存的PC值减4;2)模式切换:当处理器完成现场保护后,就进入中断模式,并将PC值置为一个固定的值0X00000018,这就是IRQ模式的中断入口地址。在中断模式下,有2个独立的寄存器R13、R14,这样可以便于中断程序使用自己特有的堆栈。但
3、这样随之而来产生了一个问题,也就是堆栈溢出保护的问题,需要我们认真的估计堆栈的大小,同时在中断处理时也要尽量减少函数调用的层次,否则将产生一些不可预知的错误;3)获取中断源:所有的IRQ中断都从0X00000018开始执行,通常在该地址处放一条跳转指令,进一步跳到我们的中断程序中;4)处理中断:在中断程序中需要进一步获取中断源,即谁引发了该中断,然后通过查表获取相应中断的程序入口,并调用对应的函数;5)中断返回,保护现场:在返回时需要恢复处理器模式,包括恢复中断处理用到的所有寄存器、恢复被中断的程序运行状态到CPSR,并跳转到被中断的主程序。中断的入口代码(汇编代码):b HandlerIRQ
4、HandlerIQRsub sp,sp,#4 ; 为中断分发例程入口地址预留堆栈空间stmfd sp!,r0 ; 保存r0sdr r0,=HandleIRQ ; 将中断分发例程入口地址指针保存到r0中sdr r0,r0 ; 将中断分发例程入口地址保存到r0中str r0,sp,#4 ; 将中断分发例程入口地址保存到预留的堆栈空间ldmfd sp!,r0,pc ; 将r0和中断分发例程入口地址出栈,也实现了一个跳转 上述代码实现了从FLASH中跳到了RAM的中断入口,然后有从中断入口跳到中断分发例程入口。因此,必须在HandleIRQ地址处保存正确的分发例程入口地址,使用如下代码后,IsrIRQ
5、就是中断分发例程: ; Setup IRQ handlerldrr0,=HandleIRQ ;This routine is neededldrr1,=IsrIRQ ;if there isnt subs pc,lr,#4 at 0x18, 0x1cstrr1,r0IsrIRQ采用汇编语言编写,通过读取INTOFFSET寄存器获取产生中断的中断源的偏移,然后根据该偏移值获取该中断对应与中断向量表中的偏移,最后从中断向量表中获取中断服务函数入口地址,再跳转到该地址处执行,代码如下:IsrIRQsubsp,sp,#4 ; reserved for PCstmfdsp!,r8-r9 ldrr9,=I
6、NTOFFSET ; 将中断偏移寄存器地址送到r9中ldrr9,r9 ; 将INTOFFSET寄存器的值送到r9ldrr8,=HandleEINT0 ; Load the ISR vector base address to r8addr8,r8,r9,lsl #2 ; get the ISR vector r8=r8+r9*4ldrr8,r8 ; Load the ISR addressstrr8,sp,#8 ; store to sp ,new pcldmfdsp!,r8-r9,pc ;jump to new pc ,that is to ISR 中断向量表从HandleEINT0地址开始
7、,每4个字节保存一个中断服务函数入口地址,该地址再注册中断时有应用程序指定。void Test_Eint(void) /int i; int extintMode; Uart_Printf(External Interrupt Test through PF0/2/11/19n); Uart_Printf(1.L-LEVEL 2.H-LEVEL 3.F-EDGE 4.R-EDGE 5.B-EDGEn); Uart_Printf(Select the external interrupt type.n); extintMode=Uart_Getch(); /设置相关中断的I/O口寄存器 rGPF
8、CON = (rGPFCON & 0x3103)|(13)|(15)|(115)|(17);/PF0/2 = EINT1/2/3/7 rGPGCON = (rGPGCON & 0xfffffff3)|(13);/PG3/11 = EINT9 /选择外部中断触发方式 rSRCPND = rSRCPND|0xe; switch(extintMode) case 1: rEXTINT0 = (rEXTINT0 & (74)|(0x712)| (0x78)|(0x728) | 0x04 | 0x08| 0x028| 0x012; /EINT1/2/3/7=low level triggered bre
9、ak; case 2: rEXTINT0 = (rEXTINT0 & (74)|(0x712) | (0x78)|(0x728) | 0x14 | 0x18| 0x128| 0x112; /EINT1/2/3/7=high level triggered break; case 3: rEXTINT0 = (rEXTINT0 & (74)|(0x712) | (0x78)|(0x728) | 0x24 | 0x28| 0x228| 0x212; /EINT1/2/3/7=falling edge triggered break; case 4: rEXTINT0 = (rEXTINT0 & (
10、74)|(0x712) | (0x78)|(0x728) | 0x44 | 0x48| 0x428| 0x412; /EINT1/2/3/7=rising edge triggered break; case 5: rEXTINT0 = (rEXTINT0 & (74)|(0x712) | (0x78)|(0x728) | 0x64 | 0x68| 0x628| 0x612; /EINT1/2/3/7=both edge triggered break; default: break; Uart_Printf(=Press the exint buttons or Press any key
11、to exit.=n); rEINTPEND = 0xffffff; rSRCPND = BIT_EINT2|BIT_EINT1|BIT_EINT3|BIT_EINT4_7; /to clear the previous pending states rINTPND = BIT_EINT2|BIT_EINT1|BIT_EINT3|BIT_EINT4_7; /外部中断函数声明 pISR_EINT2=(unsigned)Eint2Int; pISR_EINT1=(unsigned)Eint1Int; pISR_EINT4_7=(unsigned)Eint7_9Int; pISR_EINT3=(un
12、signed)Eint3Int; rEINTMASK=( (17)|(19) ); rINTMSK=(BIT_EINT2|BIT_EINT1|BIT_EINT3|BIT_EINT4_7); /若有外部输入,种屏蔽中断 Uart_Getch(); rEINTMASK=0xffffff; rINTMSK=BIT_ALLMSK;可以看出上面的实验程序中提供了5种中断触发方式:上升沿,下降延,双边延,低电平,高电平。用到了EINT1、EINT2、EINT3、EINT7。相应函数如下:static void _irq Eint2Int(void) rSRCPND = BIT_EINT2; /Clear
13、pending bit rINTPND = BIT_EINT2; rINTPND; Uart_Printf(EINT2 interrupt is occurred.n);static void _irq Eint3Int(void) rSRCPND = BIT_EINT3; /Clear pending bit rINTPND = BIT_EINT3; rINTPND; Uart_Printf(EINT3 interrupt is occurred.n);static void _irq Eint1Int(void) rSRCPND = BIT_EINT1; /Clear pending bi
14、t rINTPND = BIT_EINT1; rINTPND; Uart_Printf(EINT1 interrupt is occurred.n);static void _irq Eint7_9Int(void) if(rEINTPEND=(17) Uart_Printf(EINT7 interrupt is occurred.n);rEINTPEND=(17); rSRCPND = BIT_EINT4_7; /Clear pending bit rINTPND = BIT_EINT4_7; 修改相应函数,就可以完成其它功能。六、实验步骤1、仔细阅读实验说明部分,熟悉S3C2410的中断功
15、能。2、将实验系统光盘中“实验工程ADS实验INT”目录拷贝到本地硬盘,用ADS组件中的CodeWarrior for ARM Developer Suite工具软件打开打开其中的INT.mcp工程文件。用实验一中的方法选用本机的地址中的scat.scf文件。3、在DebugRel目录下编译源文件。(详见实验一),分析并熟悉程序。4、将PC机、仿真器和实验板连接并打开“Multi-ICE Server”和“AXD Debugger”对CPU进行初始化,导入本地硬盘上“实验工程ADS实验INT”中“INT_DataDebugRelINT.axf”文件或光盘上的实验项目文件。(详见实验二)5、按下
16、实验系统扩展板上按键,每一行对应一个中断。观察中断的触发。实验十七 触摸屏实验一、实验目的1、了解触摸屏的基本概念和原理;2、编程实现并掌握对触摸屏的控制。二、实验内容1、编程实现触摸屏坐标的采集;2、通过中断方式将采集触摸屏坐标数据并输出。三、实验设备1、硬件:DM2410实验板;测控与显示扩展板;触摸屏;PC机;JTAG仿真器;2、软件: PC机操作系统(WINDOWS 2000);ARM Developer Suite v1.2;Multi-ICE V(Build1319);四、基础知识1、学习A/D实验;2、学习触摸屏的原理;3、了解触摸屏的数据采集输出。五、实验说明1、触摸屏的基本原
17、理触摸屏由触摸检测部件和触摸屏控制器组成;触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,接受后送触摸屏控制器;而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU,它同时能接收CPU发来的命令并加以执行。按照触摸屏的工作原理和传输信息的介质,我们把触摸屏分为四种,它们分别为电阻式、电容感应式、红外线式以及表面声波式。1)电阻式触摸屏电阻式触摸屏工作原理图这种触摸屏利用压力感应进行控制。电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导
18、电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层涂层、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。 当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。控制器侦测到这一接触并计算出(X,Y)的位置,再根据模拟鼠标的方式运作。这就是电阻技术触摸屏的最基本的原理。特点:解析度高,高速传输反应。 表面硬度高,减少擦伤、刮伤及防化学处理。 同点接触3000万次尚可使用。 导电玻璃为基材的介质。 一次校正,稳定性高,永不漂移。2)电容式触摸屏电容技术触摸屏是利用人体的电流感应进行工
19、作的。电容式触摸屏是是一块四层复合玻璃屏,玻璃屏的内表面和夹层各涂有一层ITO,最外层是一薄层矽土玻璃保护层,夹层ITO涂层作为工作面,四个角上引出四个电极,内层ITO为屏蔽层以保证良好的工作环境。 当手指触摸在金属层上时,由于人体电场,用户和触摸屏表面形成以一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流。这个电流分从触摸屏的四角上的电极中流出,并且流经这四个电极的电流与手指到四角的距离成正比,控制器通过对这四个电流比例的精确计算,得出触摸点的位置。3)红外线式触摸屏红外线式触摸屏工作原理图红外触摸屏是利用X、Y方向上密布的红外线矩阵来检测并定位用户的触摸。
20、红外触摸屏在显示器的前面安装一个电路板外框,电路板在屏幕四边排布红外发射管和红外接收管,一一对应形成横竖交叉的红外线矩阵。用户在触摸屏幕时,手指就会挡住经过该位置的横竖两条红外线,因而可以判断出触摸点在屏幕的位置。任何触摸物体都可改变触点上的红外线而实现触摸屏操作。4)表面声波触摸屏 表面声波触摸屏工作原理图表面声波技术是利用声波载物体表面进行传输,当有物体触摸到表面,阻碍声波的传输,换能器侦测到这个变化,反映给计算机,进行鼠标的模拟。表面声波屏的三个角分别粘贴着X,Y方向的发射和接收声波的换能器(换能器:由特殊陶瓷材料制成的,分为发射换能器和接收换能器。是把控制器通过触摸屏电缆送来的电信号转
21、化为声波能和由反射条纹汇聚成的表面声波能变为电信号。),四个边刻着反射表面超声波的反射条纹。当手指或软性物体触摸屏幕,部分声波能量被吸收,于是改变了接收信号,经过控制器的处理得到触摸的X,Y坐标。表面声波屏的特点有:清晰度较高,透光率好。高度耐久,抗刮伤性良好(相对于电阻、电容等有表面度膜)。反应灵敏。不受温度、湿度等环境因素影响,分辨率高,寿命长(维护良好情况下5000万次);透光率高(92%),能保持清晰透亮的图像质量;没有漂移,只需安装时一次校正。2、触摸屏与显示器的配合一般触摸屏将触摸时的X、Y方向的电压值送到A/D转换接口,经过A/D转换后的X与Y的值仅仅是对当前触摸点的电压值的A/
22、D转换值,它不具有具体的实用意义,这个值的大小不但与触摸屏的分辨率有关而且也与触摸屏与LCD贴合的情况有关。 以四线电阻式触摸屏为例,每次按压后,将产生4个电压信号:X、Y、X、Y,它经过A/D得到相应的值,LCD分辨率与触摸屏的分辨率一般是不一样的,坐标也不一样,因此,如果想得到体现LCD坐标的触摸屏位置,还需要在程序中进行转换。3、S3C2410X的触摸屏控制S3C2410X支持触摸屏接口,芯片系统触摸屏接口电路为:建议操作步骤为:1) 连接外部触摸屏和S3C2410X接口;2) 择Separate X/Y Position转换方式或者是Auto (Sequential) X/Y Posi
23、tion转换方式获X/Y的坐标;3) 置触摸屏寄存器为等待中断模式;4) 果中断发生,相应的坐标转换将会被激活;5) 取适合的X/Y坐标值以后,返回到中断等待模式。ADC触摸屏相关寄存器为:1)触摸屏控制寄存器寄存器地址为:各位功能描述:2)ADC转换数据寄存器ADCDAT0地址和位功能描述为: ADCDAT1地址和位功能描述位:4、程序解析:/* 触摸屏SEP方式中断请求函数 函数名: Adc_or_TsSep 描述: 触摸屏SEP方式中断请求函数 返回值:void */#include #include 2410addr.h#include 2410lib.h#include Ts_sep
24、.h#include def.h#define LOOP 1#define ADCPRS 39void _irq Adc_or_TsSep(void) int i; U32 Pt6; rINTSUBMSK |= (BIT_SUB_ADC|BIT_SUB_TC); / Mask sub interrupt (ADC and TC) / TC(Touch screen Control) Interrupt if(rADCTSC & 0x100) Uart_Printf(nStylus Up!n); rADCTSC &= 0xff; / Set stylus down interrupt else
25、Uart_Printf(nStylus Down!n); / rADCTSC=(08)|(07)|(16)|(15)|(04)|(13)|(02)|(1); / Down,Hi-Z,AIN5,GND,Ext vlt,Pullup Dis,Normal,X-position for(i=0;iLOOP;i+); /delay to set up the next channel for(i=0;i5;i+) rADCCON|=0x1; / Start X-position conversion while(rADCCON & 0x1); / Check if Enable_start is lo
26、w while(!(0x8000&rADCCON); / Check ECFLG Pti=(0x3ff&rADCDAT0); Pt5=(Pt0+Pt1+Pt2+Pt3+Pt4)/5; Uart_Printf(X-PosionAIN5 is %04dn, Pt5); / rADCTSC=(08)|(07)|(16)|(15)|(04)|(13)|(02)|(2); / Down,GND,Ext vlt,Hi-Z,AIN7,Pullup Dis,Normal,Y-position for(i=0;iLOOP;i+); /delay to set up the next channel for(i=
27、0;i5;i+) rADCCON|=0x1; / Start Y-position conversion while(rADCCON & 0x1); / Check if Enable_start is low while(!(0x8000&rADCCON); / Check ECFLG Pti=(0x3ff&rADCDAT1); Pt5=(Pt0+Pt1+Pt2+Pt3+Pt4)/5; Uart_Printf(Y-PosionAIN7 is %04dn, Pt5); rADCTSC=(18)|(17)|(16)|(05)|(14)|(03)|(02)|(3); / Up,GND,AIN,Hi
28、-z,AIN,Pullup En,Normal,Waiting mode rSUBSRCPND |= BIT_SUB_TC; rINTSUBMSK = (BIT_SUB_TC); / Unmask sub interrupt (TC) ClearPending(BIT_ADC);/* 触摸屏SEP方式测试函数 函数名: Adc_or_TsSep 描述: 触摸屏SEP方式测试函数 返回值:void */void Ts_Sep(void) Uart_Printf(Touch Screen Test.n); Uart_Printf(Separate X/Y position conversion mode testn); rADCDLY = (50000); / ADC Start or Interval Delay rADCCON = (114)|(ADCPRS6)|(03)|(02)|(01)|(0);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西省南昌2024-2025学年八年级上学期期末考试英语试卷(含解析无听力原文及音频)
- 2024年高端装备制造居间合同
- 2024新车购车简单的协议书范本
- 2024收养孤残儿童协议书范本参考3篇
- 中国青年政治学院《审计学原理及实务》2023-2024学年第一学期期末试卷
- 浙江中医药大学滨江学院《酒店规划与管理》2023-2024学年第一学期期末试卷
- 昭通卫生职业学院《三笔字训练》2023-2024学年第一学期期末试卷
- 《畜禽中毒病防制》课件
- 旅游行业人力资源总结
- 2024连锁店保密合同
- 付款通知确认单
- 汽机油管道安装方案指导
- 2022年中国城市英文名称
- 小龙虾高密度养殖试验基地建设项目可行性研究报告
- 《桥梁工程计算书》word版
- 中考《红星照耀中国》各篇章练习题及答案(1-12)
- 下肢皮牵引护理PPT课件(19页PPT)
- 舒尔特方格55格200张提高专注力A4纸直接打印版
- 施工单位现场收方记录表
- 参会嘉宾签到表
- 人力资源管理之绩效考核 一、什么是绩效 所谓绩效简单的讲就是对
评论
0/150
提交评论