开源改变世界

步进脉冲有时非常非常短 #149

推推 grbl 3年前 (2023-01-21) 106次浏览

关闭
blinkenlight 打开了这个问题 2012 年 12 月 17 日 · 1条评论
关闭

步进脉冲有时非常非常短#149

blinkenlight 打开了这个问题 2012 年 12 月 17 日 · 1条评论

注释

步进脉冲有时非常非常短 #149

调查希望通过当前边缘构建 (0.9a) 解决的其他问题,我注意到一些步进脉冲非常短 (~2.2us),而其他则完全正常。这似乎并不取决于脉冲长度设置,在 10us 和 40us 时一样容易发生。有问题的脉冲太短,无法在各种硬件上可靠地注册——有些,比如相当流行的 TB6560 需要至少 30us 宽的脉冲——因此存在错过这些步骤的真正危险。

检查代码我认为问题出在 stepper.c 中的定时器 0 溢出处理程序:第 305 行,当前

TCNT0 = 0; // Disable timer until needed.

这可能意味着访问定时器控制寄存器,但目前不会停止定时器——然后它可以自由地每 128us 随机地“关闭”步进脉冲,当它到达新脉冲的开始和定时器计数器的复位。

步进脉冲有时非常非常短 #149
成员

哎呀,不错的收获。那是注定的TCCR0 = 0;,不是TCNT0 = 0;

在 2012 年 12 月 16 日星期日下午 1:17,Asztalos Attila Oszkár <
notifications@github.com > 写道:

调查希望通过当前边缘构建
(0.9a) 解决的其他问题,我注意到一些步进脉冲非常短 (~2.2us)
,而其他则完全正常。这似乎并不取决于
脉冲长度设置,在 10us 和 40us 时一样容易发生。有问题的
脉冲太短,无法在各种
硬件上可靠地注册——有些,比如相当流行的 TB6560 需要至少 30us
宽的脉冲——因此存在错过这些步骤的真正危险。

检查代码我认为问题出在 stepper.c 中的定时器 0 溢出处理程序:第 305 行,当前

TCNT0 = 0; // 在需要之前禁用定时器。

这可能意味着访问定时器控制寄存器,但
目前不会停止定时器——然后它可以自由
地每 128us 随机地“关闭”步进脉冲,当
它到达新脉冲的开始和
定时器计数器的复位。


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ /issues/149

喜欢 (0)