请教:
在我们的应用中使用到了中断嵌套,方法是使用汇编代码(intrNest_En和intrNest_Dis)。现在有一些问题希望指点:
1、实现原理是不是就是在进入中断时打开中断全局屏蔽,退出时关闭?除了这些需要有别的操作吗?
2、中断之间的切换要多少时间呢?能否在1us之内完成?
3、是否保证了一个中断服务只能被更高优先级的中断打断?
4、是否有一些代码在执行过程中不可能被打断?这些代码主要有哪些呢?
5、通常来说,在C6678中使用中断嵌套是不是不提倡的?会对流程有哪些不良影响?
谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
请教:
在我们的应用中使用到了中断嵌套,方法是使用汇编代码(intrNest_En和intrNest_Dis)。现在有一些问题希望指点:
1、实现原理是不是就是在进入中断时打开中断全局屏蔽,退出时关闭?除了这些需要有别的操作吗?
2、中断之间的切换要多少时间呢?能否在1us之内完成?
3、是否保证了一个中断服务只能被更高优先级的中断打断?
4、是否有一些代码在执行过程中不可能被打断?这些代码主要有哪些呢?
5、通常来说,在C6678中使用中断嵌套是不是不提倡的?会对流程有哪些不良影响?
谢谢!
1. 不知道你调的函数的具体实现。一般就是在进入中断时操作GIE和IER。
2. 硬件中断响应时间一般是几百个周期,应该在1us之内。
3. 可以通过IER控制实现。
4. 跳转指令的保护周期不会被打断,硬件保证的。有些情况如果被打断的话可能会出问题,编译器会帮你关中断。请参阅C6000编程指南。
5. 如果你理解并正确处理了这些限制,那就没问题。
你好:
您说第3个“可以通过IER控制实现”,您的意思是系统不会自动保证高优先级中断不被低优先级中断打断?
对,优先级由软件实现。软件通过IER把软件认为优先级高的中断enable,把软件认为优先级低的中断disable,这样就可实现高优先级中断抢断,而低优先级中断被屏蔽。