- 积分
- 16
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 5
- 最后登录
- 1970-1-1
该用户从未签到
|
发表于 2014-10-26 23:49
|
显示全部楼层
来自: 中国广东广州
貌似EvaRegs.T2CNT计数值在0-66536之间吧;你这个程序在一个定时器中断里,两次定时器中断采集T2CNT的差值反应速度的高低;通过电机最高转速,定时器中断时间间隔,编码器分辨率我们可以确定T2CNT的差值一定会小于一个数字(这里取50000),如果定时器时间为10ms,电机最高速度为3000r/min,编码器2500线四倍频就是10000个脉冲一圈,这样可以计算10ms,电机最多转半圈,也就是dsp最多接收5000个脉冲,两次采集T2CNT的差值(temp2-temp1)绝对值最多为5000,考虑余量,这里取50000。
如果两次采集T2CNT的差值(temp2-temp1)>=50000说明T2CNT计算器向下溢出了,Place_now += temp2-temp1 + 65536;
如果两次采集T2CNT的差值(temp2-temp1)<=- 50000说明T2CNT计算器向上溢出了,Place_now += temp2-temp1 - 65536;
这里 + 65536和- 65536是为了校正T2CNT计算器溢出,造成的误差。
|
|