打印
[ZLG-ARM]

ARM7中断嵌套(SPI中断与外部中断0)能否实现?

[复制链接]
2576|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
米其林r|  楼主 | 2010-8-10 22:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题提出背景:
在采用SPI接口的A/D模块(CS5532)时,如果SPI收发数据采用中断,则中断一次表示一个字节数据收发完成。
在启动A/D后,当A/D模块一次数据转换好后,SOD数据线会被拉低(转换期间是高电平),但是通过SPI接口无法监测到线状态中断,所以想把SOD再引入到外部中断0,当外部中断0产生中断后,在外部中断0中读取A/D数据时SPI中断将无法响应,所以无**常读取4个字节的数据,因为ARM在进入IRQ中断时自动屏蔽IRQ中断。

请问:怎么解决能实现嵌套?

相关帖子

沙发
年轻不在| | 2010-8-10 23:00 | 只看该作者
此问题的换向解决方法是:

1.SPI不采用中断方式,采用查询;

2.将SPI的MISO引脚正常配置为IO,然后监测,当变低之后再配置为MISO读取数据,不知这么可否?

3.外部中断0来了先禁止自己,然后置全局标志,退出中断,然后在主程序中判断标志为真就读取数据,然后再开放外部中断0。隐患,别的地方如果调用了读取函数,同样会出现以上的问题。

使用特权

评论回复
板凳
hgjinwei| | 2010-8-11 07:52 | 只看该作者
ARM进中断时自动屏蔽IRQ中断,你不可以进中断后第一条指令就允许IRQ吗?

使用特权

评论回复
地板
LPC300| | 2010-8-22 15:01 | 只看该作者
一般来说,ARM7并不支持硬件中断嵌套,如果真要嵌套,就必须采用软件嵌套,这就要涉及的底层汇编程序的编写的。总的中断嵌套的过程如下:
     当发生IRQ中断。就会进入IRQ模式,而此时IRQ中断是被禁能的,PC就会跳转到中断向量表来查找该IRQ中断的入口地址来执行总的中断服务函数。而此时,我们可以对当前的任务环境、SPSR、链接寄存器进行压栈保存,然后系统切换为处理器模式,执行与中断相关的服务函数,此时IRQ中断自然被使能,同样在执行该相关程序也会被其他中断给打断,而当中断服务函数执行结束时,又进入IRQ模式,弹出进入时各个任务环境及SPSR的值,总的一个中断服务函数执行结束。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

340

主题

1587

帖子

3

粉丝