共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 跳转至页
回复
有奖活动 | |
---|---|
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? | |
抽奖了,抽奖了,金升阳医疗电源 |
打赏帖 | |
---|---|
【换取手持数字示波器】+与同事对定时器输出相位可调PWM移相全桥控制分享被打赏50分 | |
【换取手持数字示波器】+LP-MSPM0L1306开发板试用体验+串口被打赏40分 | |
CC-RL编译器相关问题求助被打赏10分 | |
【换取手持数字示波器】+与同事对ESP-12开发调试经验分享被打赏50分 | |
【换取手持数字示波器】+同事tek示波器调试spi解析被打赏50分 | |
【换取手持数字示波器】+2.6寸墨水屏调试经验被打赏50分 | |
换取手持数字示波器+个人开关电源的设计经验被打赏50分 | |
【换取手持数字示波器】+【APT32F173测评】+URAT被打赏20分 | |
【换取手持数字示波器】CH32X035的定时器以及外部中断体验被打赏50分 | |
【换取手持数字示波器】CH32X035搭建开发环境(RISC-V)被打赏50分 |