6410中断控制详解

发布者:EnchantingEyes最新更新时间:2024-08-16 来源: cnblogs关键字:S3C6410  中断控制  中断操作 手机看文章 扫描二维码
随时随地手机看文章

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模式。

 

 

设置S3C6410的向量地址(ISR地址)

   注意在S3C6410自已从了各用32个地址连续的寄存器然成两个寄存器数组。首地址分别是0x71200100和0x71300100.你可以象指针数组一样来操作它们,数组的下标就是中断号。

   这样设置让开发者大大简单化ISR的向量组织。

 

设置中断优先级

   这个也采用用32*2寄存器形成两个优先级数组。每一个寄存器对应优先级别,取值范围在0-15之间.

 

 

 

中断运行后指示

   这个因为了用VIC,现在省掉了S3C2440一大堆的SRCPND,INTPND,INTOFFSET,SUBSRCPND等寄存器。直接由VICxADDRESS来指示当前的ISR地址。  

 

  注意这个VICxADDRESS的寄存器,在S3C6410里称为在System BUS.调用。这种方式不建议调用,因为这种模式相当于S3C2440的用软件进行ISR跳转.

   这三星的给的参考流程。

 

 

 

 

 更为简单的调用方式.是VIC port 模式,是我强烈推荐的模式,它是系统产生中断后,将由VIC直接去执行相应的ISR。这不仅上编程变成简单,而且效率上更快,因为它没有访问VICxADDRESS和在System BUS执行的时间

使用这种模式,只需要在启动加上特定的代码

 

 

 

外部中断编程

----------------------------------------------------------

   

   除INT_EINT0-INT_EINT4以外,全部中断是由S3C6410内部的模块触发的。称为内部中断


  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  中断控制  中断操作 引用地址:6410中断控制详解

上一篇:linux移植u-boot(一)——U-Boot详解+自定义命令实战
下一篇:ok6410内存初始化

推荐阅读最新更新时间:2024-11-10 12:09

Android JNI用于驱动測试
硬件平台:S3C6410 操作系统:Ubuntu、windows 板子系统:Android 开发工具:jdk。ndk,eclipse 本次測试从linux内核模块编译開始。以S3C6410的pwm驱动为例。 pwm_6410.c: #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/init.h #include linux/delay.h #include linux/poll.h #include linux/clk.h #include linux/cdev.h #incl
[单片机]
Android JNI用于驱动測试
S3C6410学习——Nand flash陷阱
当系统以Nand方式启动时,硬件将Nand Flash的前8KB拷贝到Steppingstone,然后从0地址开始运行程序,在这8KB以内代码中,我们需要完成必要的硬件初始化,如果代码超过8K,我们还需要将剩余代码的搬移到链接地址处,一般在SDRAM/DDR中。其中,硬件部分需要初始化系统时钟、DDR和NAND Flash三部分。这就是S3C6410以Nand方式启动时的大致流程,看上去跟ARM9(S3C2440)没有差别,但是如果您亲自动手写一下这个启动过程,你会发现ARM9跟ARM11还是存在若干差别的,这里我要说的是Nand裸机驱动的问题。述了S3C6410的Nand方式启动流程,看上去跟ARM9(S3C2440)没有太大差别
[单片机]
Linux 3.3.0移植到S3C6410开发板上之一
这里仅仅是移植成功内核,可以挂载文件系统运行,至于驱动会陆续添加。 第一步:到内核官网上下载最新的内核,我下载的是linux-3.3-rc3.tar.bz2。 第二步:解压内核,进入arch/arm/mach-s3c64xx目录下,看到不少6410的板级文件,我们这里选择mini6410开开展工作,在目录下将mach-mini6410.c文件复制一份,命名为:mach-jfj6410.c。这里我们将文件里面关于mini6410的字样都修改为jfj6410.但是这里要注意,MACHINE_START(JFJ6410, JFJ6410 )这里的JFJ6410要使用大写,稍候说明为什么。大家都知道在一个目录下添加了文件后,都应该
[单片机]
深入理解ARM体系架构(S3C6410)---S3C6410看门狗源码实例
当系统运行受到外部干扰或者系统错误,程序有时会出现跑飞,导致整个系统瘫痪。他会设置一段时间,当超出这段时间,从程序中跳出进入中断处理程序。WatchDog本质上是一种定时器,那么普通定时器拥有的特性它也应该具备,是的当它计时超时时也会引起事件的发生,只是这个事件除了可以是系统中断外,他也可以是一个系统重启信号(Reset Signal)。可以这么说,能发送系统重启信号的定时器我们就叫它WatchDog。看门狗定时器中断是我们不希望看到的,因此我们要想方设法避免它发生。主要的方法就是在中断发生前,重新对看门狗定时器的寄存器进行赋值,使它的定时器重新开始记时,这种方法俗称喂狗。 S3C6410看门狗定时器的功能: 作为常规时钟
[单片机]
深入理解ARM体系架构(<font color='red'>S3C6410</font>)---<font color='red'>S3C6410</font>看门狗源码实例
s3c6410硬件RTC实时时钟
1、OVERVIEW综述 The Real Time Clock (RTC) unit can be operated by the backup battery when the system power is off. The data include the time by second, minute, hour, date, day, month, and year. The RTC unit works with an external 32.768 KHz crystal and can perform the alarm function. 当系统电源关闭时,通过备用电源可以运行实时时钟(RTC)单元。数据包含的
[单片机]
<font color='red'>s3c6410</font>硬件RTC实时时钟
ARM·中断控制
【本章内容】 之前在基础篇里面看过中断概念的视频,不过因为介绍的十分繁琐,效果不是很好。今天看了高级开发篇,决定把中断的内容简化一些。 我觉得可以把这篇笔记分成2个区,寄存器区和代码区。寄存器区方便以后查看,代码区方便对中断控制的分析 【代码分析】 @****************************************************************************** @ File:head.S @ 功能:初始化,设置中断模式、管理模式的栈,设置好中断处理函数 @**********************************************************
[单片机]
stm32F4 定时器中断 + 步进电机控制控制四线两相步进电机
今天给大家分享一个 初级版本的步进电机的控制方法,用到的步进电机是4线两相的42步进电机 如下图: 步进电机驱动选用的是这款 TB6600 供电选用了12V的稳压电源 最小系统板供电是从Jlink上直接引出 MCU是 stm32F407ZGT6 最小系统板 根据步进电机控制器的资料可以知道 步进电机的速度和转过的角度都是通过 PUL + 和PUL- 来控制的 (这里插一段关于步进电机驱动上的六个控制接线端子的使用,将其中的四个+ 或者是四根 - 接在一起做成共阳接法或者共阴接法,如果 电平是3.3V 或者 5V 可以不串接电阻 ,如果电压大于5V 需要在每一根线上串接相应阻值的电阻) 这里我选择的是共阳
[单片机]
stm32F4 定时器<font color='red'>中断</font> + 步进电机<font color='red'>控制</font>器 <font color='red'>控制</font>四线两相步进电机
基于S3C6410的CAN总线接口扩展方案
  本文介绍了一种基于S3C6410的CAN总线接口扩展方案,通过SPI接口对CAN接口进行扩展,并给出具体的硬件电路。重点研究了WINCE系统下独立CAN控制器MCP2515的驱动程序。结合CAN总线技术规范和MCP2515的特点设计了相关的软件代码,编写了CAN流接口驱动程序,实验结果表明,在WINCE系统下能够较好实现CAN总线的通信。   CAN是博世公司开发的一种串行通讯总线,主要是为解决现代汽车中不断增加的电子器件相互间的信息交换问题。CAN总线的数据通信在工业应用中相比其他总线在可靠性、实时性和灵活性等方面具有较大优势,凭借其优良的性能及独特的设计,在嵌入式开发中有着广泛的应用。随着现代汽车电子网络化的不断发展,车载
[单片机]
基于<font color='red'>S3C6410</font>的CAN总线接口扩展方案
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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