goblin 发表于 2012-11-18 12:05:05

DSPIC 时间片轮转调度切换,不支持DSP指令吗?(放这里看看)

这里搞OS 的人气多,转放在这里看看能找到答案不!谢谢大家的支持。

自己做了个很简单的时间片轮转调度程序,(使用的microchip的DSPIC30F6010芯片,16MHZ,每任务工作时间周期约20us,调度程序使用时间4us)
用汇编程序编的TIMER1 的裸中断,此中断内直接进行任务调度切换。
//---------------------------------------------------------------------------------------------------
发现其他的功能都正常,唯独进行float的乘除运算时,会和任务调度冲突!!表现为计算的数据错误!!!
如果在进行float乘除运算时关闭中断,禁止任务调度,那么计算的结果就是正确的!!!!
查汇编代码,结果是程序会CALL函数库吧!估计是在调用DSP函数库计算时,切换任务造成的错误结果。
如果是使用整数的计算,那么结果是正确的。

有朋友遇到类似问题的吗? 如何解决这个问题??优化或设置上是否可以进行设置避免呢???


对了,还有个问题一并加入!
在上面的调度任务中,还不能使用C 语言的开关switch语句!!
一用也是会产生错误!!
很怪异
页: [1]
查看完整版本: DSPIC 时间片轮转调度切换,不支持DSP指令吗?(放这里看看)