共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 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 |