这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » arm arm为什么中断会丢,同时中断多了,会死机?

共2条 1/1 1 跳转至

arm arm为什么中断会丢,同时中断多了,会死机?

院士
2006-09-17 18:14:16     打赏
arm arm为什么中断会丢,同时中断多了,会死机?



关键词: 为什么     中断     会丢     同时     多了     死机    

院士
2006-12-22 22:43:00     打赏
2楼
问 如果定时器的间隔设得短一点,中断会丢掉。
同时,如果开ad,timera,timerb,uart1,uart2,spi,eint中断得话,不停得死机,主要是ad中断太多。如果把ad中断里的程序放短一点,系统就稳定多了。
我的中断里面有整数得除法(有一些运算),没有浮点运算。
我是从430里面移植过来得,在430里面跑得很稳定。不料在ARM里面经常死机。如果把ad中断程序写短点,不会死机得。可是,我必须实时处理这些数据.

是不是因为发生了中断嵌套(我的程序里面没有使用),导致死机?

绝对不是看门狗之类得原因。应该是中断得问题。

不知我有否描叙清楚。请大侠帮忙! 1: 在中断中有没有开中断?是否基于操作系统?死机的具体情况是什么? 2: 关于定时器的中断丢失可以参考相应的勘误手册我用AD频繁时也死机,最后整了个队列来处理AD, 3: 没有操作系统没有操作系统。
AD比较频繁,但是我要做ad过滤,就是去掉四个最大值,四个最小值,求平均。所以代码也有点长。排序只敢用冒泡,快速排序是递归的,不敢在中断里面用。
4: 在中断中有没有开中断?中断堆栈设置为多少?程序飞哪里? 5: PHILIPS ARM开多个中断会丢中断,我发现过多次,不知道原因。 6: 中断堆栈倒是没有注意。呆会儿看一下。不知程序飞在何处,我不是用仿真。是直接上板调试的。可以肯定的是如果ad中断和timer1里面的程序放短点的话,就不会死机了。
7: 目前所知,对于所有ARM7,有两种情况可能造成丢失中断1,中断服务程序执行时间太长,长于两次中断的间隔。
2,没有关总中断(CPSR)的情况下,通过中断控制器或外设关中断。
第2种情况还可能造成程序跑飞。 8: 我的程序没有关中断的操作比如我想屏蔽eint的中断,我是把他的port sel 改变。
在keil编译器里面,我没看到堆栈的地方。(我是初学者。不好意思) 9: 这是我的堆栈大小        UND_Stack_Size  EQU     0x00000004
        SVC_Stack_Size  EQU     0x00000004
        ABT_Stack_Size  EQU     0x00000004
        FIQ_Stack_Size  EQU     0x00000004
        IRQ_Stack_Size  EQU     0x00000080
        USR_Stack_Size  EQU     0x00000400

同时,你说“没有关总中断(CPSR)的情况下,通过中断控制器或外设关中断。”是不是说我如果在中断里面“改变port sel来屏蔽eint的中断”也算?
那么,是不是我在关eint的中断前,要把cpsr关掉呢?
但是,我是在中断里面屏蔽eint的中断的,这时候,cpsr应该已经关掉了吧?
发现ARM中断比较搞。呵呵 10: 好像不支持中断嵌套 11: 建议改造中断处理测试过在每秒钟2万次以上的中断(2106)情况下能够稳定的工作。中断的潜套也没有发现问题。
12: 问题已经解决了谢谢大家。
主要原因是某种情况我的电流振荡,导致电源被拉低。导致复位

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]