定点DSP的准确计时
计数寄存器还有剩余值,必须计算这部分的时间。方法是先停止定时器,再读TIM的值,然后读TCR的值,通过运算获取PSC的值。再按公式(1)计算定时器在最后一次所开销的时间。定时器最后一次开销时间为:
本文链接地址:http://www.oyaya.net/fanwen/view/154756.html
T=[(TDDR+1)×(PRD-TIM)+TDDR-PSC]/20M (1)
式中,20M为本文采用的晶振频率。
(2)进入定时器中断服务子程序,程序执行
本身要花费一定的时间;而进入中断服务子程序时,定时器就自动停止,那么所计算的时间自然就少了。TMS320F206每个指令周期的执行时间是50ns,通过计算中断服务子程序的指令周期数和进入中断的次数可以计算出这部分的时间。
把这三部分时间加起来就得到准确的定时器时间,有了准确的时间,物理量的测量自然就准,精度就高。结果表明,通过这样准确计时,使得频率和相位的测量精度在万分之二以内。如果测量的是一个标准的50Hz频率,那么测量结果的范围在50~50.001Hz。
4 DSP程序实现
splk #0412h,64h
out 64h,0fff8h ;停止DSP定时器
in 65h,tim ;读tim寄存器的数值
in 67h,tcr ;计算tcr中psc的值
lacl 67h
and #03c0h ;与03c0h获得psc的值
sacl 67h ;左移10位
lacc 67h,10
sach 67h
lacl #9
sub 67h
sacl 67h ;存psc中剩下的值(即使用了的)
lacl #07cfh
sub 65h
sacl 68h ;存prd-tim的值
lt 68h
mpy #10 ;TDDR+1
pac
sacl 68h
lacl 68h
add 67h
sacl 68h
lt 68h ;*0.1
lar ar1;#temptddr ;temptddr=0.1
mar *,ar1
mpy *
pac
add #1,14
sach 68h,1
lacl 68h
sfr
sacl 68h ;存定时器最后一次的时间单位为μs
lt 69h
lar ar2;#temptddr
《定点DSP的准确计时(第2页)》