S3C6410中断控制详解--转
来源:互联网 发布:网络推广有哪些方式 编辑:程序博客网 时间:2024/05/29 23:23
如果你熟悉S3C2440的中断处理机制,可以发现S3C6410大大简化的中断编程处理。
相对于S3C2440详细而丰富的关于中断的解释,S3C6410的dataSheet明显是赶工之作,关于中断只有短短的15页,大量内容还是寄存器表格。
因此以下大部分我从S3C6410的测试程序和Application Note反推出来的。并且重新用ADS写程序验证了。 S3C6410的中断主要改进是. 增加中断向量控制器,这样在S3C2440里需要用软件来跳转的中断处理机制,在S3C6410完全由硬件来跳转。你只要把ISR地址是存在连续向量寄存器空间,而不是象S3C2440自行分配空间自行管理。 换句话说,在S3C2440下是由CPU触发IRQ/FIQ异常,由异常处理函数里再查找相关中断寄存器来跳到指定的ISR,而可以全部由S3C6410的VIC硬件来自动处理。 这个大大简化中断处理编程。 另一个是外部中断加入滤波电路,这样原来需要软件去毛刺的地方均可以采用硬件来进行滤波了,这样大大简化外部中断处理。S3C6410 中断操作 -------------------------------------------------------------------- S3C6410 中断号 64个中断按硬件分组分成VIC0, VIC1两个组,各组由一个相应寄存器来处理。
中断号为0-31是VIC0组
中断号为32-63是VIC1组 S3C6410中断操作很简单。 打开中断 VICxINTENABLE
x为0,1,0-31中断使用VIC0INTENABLE,32-63中断使用VIC1INTENABLE.以下各寄存器均同,不再重复. 对应位为1表示这个中断可用,如0号中断有效,是VIC0INTENABLE的第0位为1 关闭一个中断
向VICxINTENCLEAR对应位置1表示关闭这个中断. 这个是三星比较明智的改进,不会让开发感到比较迷惑的地方
设置中断类型
设置某一个中断是IRQ还是FIQ,注意只有一个中断才能FIQ.设置对应位1表示设为FIQ模式。
INT_EINT0-INT_EINT4是外部中断,是由CPU外的外设来触发的,它的触发哪一个中断取决外设联接哪一个GPIO中断脚。 象开发板的网络控制器,按钮等都是挂在某一些GPIO脚上。它们都是使用典形外部中断. 外部中断脚S3C6410 分9组GPIO脚来充当外部中断脚
第0组,共28脚.GPN0-GPN15 (16脚),GPL8-GPL14(7脚),GPM0-GPM4 (5脚)
第1组,由GPA0-GPA7,共8个中断脚
第2组,由GPC0-GPC0,共8个中断脚…
…
第8组,由GPP0-GPP14,共15个中断脚
第9组,由GPQ0-GPQ8,共9个中断脚 外部中断号 第0组的第0脚到第3脚的设备将触INT_EINT0=0中断
第0组的第4-11脚将触发INT_EINT1=1中断
第0组的第12-19脚将触发INT_EINT2=32中断
第0组的第20-27脚将触发INT_EINT3=33中断
第1组-第9组所有设备只触发INT_EINT4=53中断 我们可以看到,每一个组都是多个中断脚共享一个中断号的。其中第0组比较常用。占用了3个中断. 在ISR中,如何判断是哪一个中断脚的产生中断? 不同的IO脚上多个设备产生同一个中断,软件如何知道是哪一个脚?
由External Interrupt Pending Register 来判断
第0组由EINT0PEND来判断
第1,2组由EINT12PEND来判断 依此类推,EINT34PEND,EINT56PEND, 一直到EINT9PEND 来指示 外部中断信号类型 这里设置中断产生何种信号才会被捕获。主要是五种,低电平,高电平,上升沿,下降沿或者两者均可,第0组用 EINT0CON0/EINT0CON1两个寄存器来设定. 第1,2组采用 EINT12CON ,第3,4组采用EINT34CON,依此类推
临时关闭外部中断
EINTxMask是临时性关闭中断
为1表示关闭某一个中断,为表示打开0,一般只要需要使用中断才会打开。
EINT0MASK是第0组的使用
EINT12MASK是第1,2组的中断掩码
依次类推...
定义硬件滤波类型
对于一些波形不规整的外部中断信号,可以通过滤波电路让其变成规整,这样会简化软件的编写.
S3C6410有两种滤波电路,一种延时滤波(如按钮类中断可以采用这一类型),一种是数字采样滤波.第二种滤波电路还要设采样宽度。
第0组的滤波用EINT0FLTCON0,EINT0FLTCON1, EINT0FLTCON2, EINT0FLTCON3配置.
FLTEN表示是否打开滤波功能,FLTSEL是设置滤波方式,EINTn表示数字滤波采校的宽度
第1,2组的滤波采用 EINT12FLTCON第3,4组的滤波采用 EINT34FLTCON
第9组滤波 采用EINT9FLTCON 外部中断编程 外部中断除了中断编程所有流程外, 一般额外配置相应的GPxCON配置成中断脚。 还要配置滤波方式和中断信号方式。 还要打开外部中断掩码 在ISR中,在最后除了要把VICxADDRESS清0外,还需要清除 VICxSOFTINTCLEAR相应位。 软件中断编程------------------------------------------------------------- 在S3C6410有64个软中断(与硬件中断对应),这一段描述是非常含糊。是同一硬件中断可以用软件触发还是是,有一个完全对应的软件中断?这个需要软件来验证. 软中断除硬件中断的所有流程还要加上如下两条. 用VICxSOFTINT来触发软中断 ISR退出时使用VICxSOFTINTCLEAR清除状态 软中断编程流程
- 转:S3C6410中断控制详解
- S3C6410中断控制详解--转
- 转:S3C6410中断控制详解 .
- 转:S3C6410中断控制详解
- S3C6410中断控制详解
- S3C6410中断控制详解
- S3C6410中断控制,基于OK6410A裸机按键中断程序设计
- S3C6410 中断
- s3c6410 中断
- 《tiny6410裸机程序》第八章:S3C6410外部中断控制寄存器
- 《tiny6410裸机程序》第八章:S3C6410总中断控制寄存器
- arm中断控制寄存器详解
- arm中断控制寄存器详解
- wince6.0 +S3C6410 中断处理例子(按键控制LED灯)+应用程序控制LED流水灯
- S3C6410中断以及外部中断
- S3C6410中断以及外部中断
- S3C6410 中断分析
- S3c6410中断系统
- SQL Server存储过程数组参数
- 旧人旧事旧时光,旧情旧爱旧伤感
- 如何使用网络单片机W7100A实现TCP通信?
- VI使用
- 去除数组中重复数字问题
- S3C6410中断控制详解--转
- 翻译方式:编译型,解释型
- java process
- NodeJs之Socket开发
- 洗牌算法
- curl请求页面
- action 中的sql拼装
- 惠普
- 卸载symantec AntiVirus Client客户端,要求输入密码。。。。