|
引用:
不解,为什么要在TA中断服务处理程序里做除法运算呢?
一定要这么办的话,就用两套变量。
也可以用局部变量:
1、主程序里调用除法子程序时用一套变量,比如Rxx。
2、进入TA中断服务处理程序时,先将主程序里的除法变量压栈,TA中断服务处理程序里调用除法子程序时还用Rxx。
3、TA中断服务处理程序退出之前,进行对应的出栈操作
不过,最好不要在TA中断服务处理程序里进行除法运算,太费时间了吧?有可能不能及时响应ADC12的中断请求。
|
|
我的TA设为上升沿捕获,然后计算连续两个上升沿之间的差得到脉宽,再用主频除以脉宽得到频率值,也就是每两次TA中断做一次除法,计算出频率值后把频率值存入RAM再中断返回.
实在不行就只能用两套变量,不过我现在弄清楚这里面的问题.
谢谢你说的局部变量压栈的方法,我会试试.
我的TA中断频率最高只有2K,而AD中断频率是22K,但反而AD中断一点不出问题. 我AD中断是做250次平均值的,也就是每250次AD中断在AD中断程序里会做一次除法.
另外,刚刚看了老大你关于使用硬件乘法器做除法的帖子,很感兴趣.因为我的主程序里要做不少除法,真是很头痛除法运算啊.
我是用汇编的,用C就可以使用硬件乘法器做除法提高速度吗?
我用的除法子程序就是魏小龙老师书上提供的32位除16位无符号数的汇编除法子程序,应该也是TI提供的标准子程序吧,我现在想搞清楚这个子程序的效率到底如何,做一次运算到底需要运行多少条指令,需要多少时间.所以现在正在努力看这个子程序,请问mmtcyq老大是否了解这个子程序的运算速度.
另外有人说这个程序做除法时,如果分母是2的次方,比如2 4 8 16 32的时候速度比较快,是不是这样啊. |
|