需要32位定时器,主要是如果需要电机速度很慢的话。

[复制链接]
4426|14
 楼主| 精益求精 发表于 2010-12-9 15:52 | 显示全部楼层 |阅读模式
16位--65536不够用。32位4294967296正好。一般都不要分频了。

对STM32的16位级联不了解,知道的大侠说说。

我只是特例啊。希望STM32出32位定时,和32位PWM...


友好讨论,拒绝抬杠。呵呵。
 楼主| 精益求精 发表于 2010-12-9 15:54 | 显示全部楼层
现在用其他公司的ARM7(M3)...
感觉ST的STM32型号多,适合多种产品选型。
香水城 发表于 2010-12-9 16:15 | 显示全部楼层
哈哈,我开了一个帖请教,你却跑这里来了:请教"精益求精"关于控制慢电机时定时器位数的问题

我的困惑是:既然速度非常慢,为什么不能使用16位定时器通过软件实现呢?难道非要使用32位定时器不可?

要知道从系统成本考虑,用软件实现要比用硬件实现便宜,尤其是大批量产品。
yybj 发表于 2010-12-9 18:45 | 显示全部楼层
这个问题让我也很困惑
airwill 发表于 2010-12-9 19:14 | 显示全部楼层
16位级联, 就是用一个定时器的溢出信号去作为另一个定时器的时钟输入的主从方式, 即一个定时器的 TRGO -> 另一个定时器的 ITR. 我记得库里有这个例子.
 楼主| 精益求精 发表于 2010-12-9 21:10 | 显示全部楼层
在上一个帖子里,香版让另开一帖,所以开了这贴,没看到香版的帖子。

我先说说我的情况,不对请香版和其他大侠指正。
1,定时器溢出周期= (Period of timer clock input) * (32-bit Prescale + 1) * (32-bit TCMP)
设:预分频为0
 楼主| 精益求精 发表于 2010-12-9 21:14 | 显示全部楼层
2.最大计数周期= 1/48 * (0+ 1) * (2^32)  假设 TCMP=48M
              =89478485.333333333333333333333333
 楼主| 精益求精 发表于 2010-12-9 21:23 | 显示全部楼层
3.MotorTimer=(((uint32)(((float)TCMP)/MotorSpeed*OtherTempVar)))
但是MotorTimer必须小于等于最大计数周期

4,选择32位时,最大计数周期为89478485,
而选择16位,最大计数周期1365
 楼主| 精益求精 发表于 2010-12-9 21:24 | 显示全部楼层
不对请指正。谢谢。
eydj2008 发表于 2010-12-10 08:16 | 显示全部楼层
是的 在TIME 里 有现成的例子 好好看看吧
香水城 发表于 2010-12-10 09:55 | 显示全部楼层
原理大致清楚,从6~8楼给出的计算方法,我还是不能解惑:既然速度非常慢,为什么不能使用16位定时器通过软件实现呢?难道非要使用32位定时器不可?
 楼主| 精益求精 发表于 2010-12-10 10:07 | 显示全部楼层
定时器用16位可以实现,但16位的PWM实现不了,到了溢出时就中断,比65536大的周期,实现不了。非常想用PWM,控制电机非常好。呵呵。

STM32的型号多,价格低,非常有吸引。
谢谢各位。
eydj2008 发表于 2010-12-10 21:51 | 显示全部楼层
不是吧 你要32位的PWM? 那么高的精度?   精度不高 可以分频啊。
你想要多少时间 多少精度 我也做过电机
 楼主| 精益求精 发表于 2011-5-31 09:02 | 显示全部楼层
16位定时器可以实现。但16位PWM加16为预分频不能实现。我说的都是低速的情况。
wenzj12345 发表于 2012-11-16 16:36 | 显示全部楼层
外部输入32位计数器有方法了···:lol
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:开发新产品,完善旧产品。精益求精,追求卓越。 希望每一次硬件或软件的改进,都能把产品的质量提高一点。

19

主题

364

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部