6410中断控制详解

发布时间:2024-08-16  

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相应位。

好文要顶 关注我 收藏该文 微信分享


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    寄存器,确定工作方式和功能;TCON 是控制寄存器,控制 T0、 T1 的启动和停止及设置溢出标志。 定时器/计数器通过两个寄存器进行工作。 控制寄存器 TCON 1.作用:TCON 的低 4 位用于控制外部中断......
    会被低优先级的IRQ中断源打断 关闭低优先级IRQ中断源 3 被禁止的低优先级IRQ中断需要被挂起 取决于中断控制器的实现方式 表格3.1 ARM7解决中断嵌套问题的过程   以LPC2368为例(为什......
    支持64个中断源; S5PV210支持93个中断源; 1.2 中断控制器 1.3 中断处理1)非向量方式(2440) 2)向量方式(6410/210) (对于向量方式,是直接进入中断函数(而不是跳转到中断......
      TF0:T0溢出请求标志位,CPU响应中断后清零,查询方式下由软件清零   TR1:T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制......
    S3C2440中断控制系统; 1.1  S3C2440系统中断 CPU和外设构成了计算机系统,CPU和外设之间通过总线进行连接,用于数据通信和控制,CPU管理监视计算机系统中所有硬件,通常以两种方式......
    器中的屏蔽位来禁止。L80C186-10的中断控制器有自己的控制寄存器,该寄存器用于设置控制器的操作方式。 主设备方式下中断控制器的基本操作方式与8259A类似。中断控制器对在所有三种方式下的内部中断......
    位。IT0=0,外部中断0被设置为边沿触发方式。IT0=1时,外部中断0被设置为边电平发方式。其功能和IT1类似。 中断控制:除特殊功能寄存器TCON和SCON中某些位与中断有关外,还有......
    S3C2440 中断(2024-08-21)
    键按下时电路接通,整个电路变成低电平,中断信号线上电压产生变化,通过设置中断触发方式,产生外部中断请求,输入到CPU内部,从而实现按键中断控制。   S3C2440A可以支持EINT0~EINT23共......
    ,标识定时器的溢出和中断情况。 定时器/计数器模式控制寄存器(TMOD) GATE = 0  不受外部中断控制GATE = 1  受外部中断控制(即使软件开启了,也要外部中断引脚置位才行) 方式0......
    构架分析完了。后面再来分析,ARM-Linux s3c2440之中断分析的软件实现原理。 软件篇: 上一篇文章回顾了s3c2440的中断控制器原理的相关硬件知识,有了这个基础再来分析Linux中的软件分析方式......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>