[求助] f28035和f2812的中断

506977544   2015-1-21 12:44 楼主
之前用f28035的时候记得中断是不能嵌套的(也就是说当CPU正在处理一个中断的时候,又接收到一个或者几个中断时,CPU是处理完正在执行的这个中断,再去处理其他中断中中断优先级最高的中断),可现在学习f2812的时候怎么又说中断可以嵌套(也就是说当CPU正在处理一个中断的时候,当接收到一个比正在处理的中断优先级更高的中断时,CPU就会先去处理较高优先级的这个中断,等其处理完后在处理开始执行的这个中断),感觉有点迷糊了,请各位高手能够帮忙解答,谢谢。

回复评论 (10)

我好像从没遇到过中断不能嵌套的MCU
点赞  2015-1-21 13:04
引用: 小an 发表于 2015-1-21 13:04
我好像从没遇到过中断不能嵌套的MCU





可是为什么会在f28035中是这样应用的?求进一步指教,谢谢
每天进步一点,大神带菜鸟,真是谢谢您们的支持、帮助和无私的奉献。
点赞  2015-1-22 09:08
使用堆栈保存中断现场的MCU一般都可以支持中断嵌套,市面上多数MCU采用这种方式。C2000也一样都可以支持中断嵌套。

电子工程师技术交流QQ群:12425841,专注于自动控制、数字电源等
点赞  2015-1-22 10:38
用汇编写,要考虑现场保护。用C写,不用考虑中断嵌套方式。
点赞  2015-1-22 12:41
引用: ltbytyn 发表于 2015-1-22 12:41
用汇编写,要考虑现场保护。用C写,不用考虑中断嵌套方式。





为什么用C写,不考虑中断嵌套方式,是因为堆栈保护现场的原因吗?另外我现在就是用C做C2000的,就是不能理解到底能不能中断嵌套(比如:进入AD中断时,如果有相对AD中断级别高的中断发生时,能否响应其中断?)请指教,谢谢
每天进步一点,大神带菜鸟,真是谢谢您们的支持、帮助和无私的奉献。
点赞  2015-1-22 16:54
引用: 506977544 发表于 2015-1-22 16:54
为什么用C写,不考虑中断嵌套方式,是因为堆栈保护现场的原因吗?另外我现在就是用C做C2000的,就是不能理解到底能不能中断嵌套(比如:进入AD中断时,如果有相对AD中断级别高的中断发生时,能否响应其中断?)请指教,谢谢



用C语言写的程序,编译生产汇编的时候,会自动保护现场。如果你纠结中断嵌套的话,可以考虑设置不同中断优先级
点赞  2015-1-22 17:24
引用: ltbytyn 发表于 2015-1-22 17:24
用C语言写的程序,编译生产汇编的时候,会自动保护现场。如果你纠结中断嵌套的话,可以考虑设置不同中断优先级

理解用C语言编写不考虑中断嵌套的原因了,感谢你的解答和指导。另外,我的问题可能之前说的不是很清楚,我想问的是现在已经有中断优先级了,比如有定时器0和AD两个中断,若定时器0的中断优先级高于AD中断;那如果程序在进入AD中断中运行的时候,如果产生定时器0的中断请求,此时CPU运行是暂停AD中断而去响应处理定时器0中断,待定时器0中断处理完成后再返回来继续处理没有处理完的AD中断,还是等AD中断处理完后再响应处理定时器0中断呢?求指教,谢谢

每天进步一点,大神带菜鸟,真是谢谢您们的支持、帮助和无私的奉献。
点赞  2015-1-22 21:59
可能楼主是看了CLA运行时不能嵌套呢。

F28035的所有文档中,有 “ 中断不能嵌套使用 ” 之意的,只有在讲CLA时出现过。C28的CPU中并没有。
点赞  2015-1-22 22:11
引用: dontium 发表于 2015-1-22 22:11
可能楼主是看了CLA运行时不能嵌套呢。

F28035的所有文档中,有 “ 中断不能嵌套使用 ” 之意的,只有在讲CLA时出现过。C28的CPU中并没有。





是的,谢谢你的回复,但是我不知道为什么要这样做。请指教,谢谢
每天进步一点,大神带菜鸟,真是谢谢您们的支持、帮助和无私的奉献。
点赞  2015-1-23 19:41
引用: 506977544 发表于 2015-1-23 19:41
是的,谢谢你的回复,但是我不知道为什么要这样做。请指教,谢谢



这是TI的人安排的,是与CLA的结构有关的。
实际上,我们也可以想想它为什么要这样安排。F28035中,有C28 CPU,又有CLA。这个CLA也相当于一个CPU了。它也象80386中的协处理器。即协助CPU干活。


CLA的运算能力很强,浮点运算快、指令执行可以并行。这样,C28可以负责控制,CLA负责运算。
点赞  2015-1-23 20:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复