共2条
1/1 1 跳转至页
arm arm为什么中断会丢,同时中断多了,会死机?
问
如果定时器的间隔设得短一点,中断会丢掉。
同时,如果开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: 问题已经解决了谢谢大家。
主要原因是某种情况我的电流振荡,导致电源被拉低。导致复位
同时,如果开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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动——B站互动赢积分】活动开启啦! | |
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |