Contact me: hankecnc@gmail.com

Sanguino D12 上没有 PWM #328

推推 grbl 3年前 (2023-02-05) 347次浏览
关闭
oni303 开了这个issue 2012 年 12 月 8 日 · 18条评论
关闭

Sanguino D12 上没有 PWM#328

oni303 开了这个issue 2012 年 12 月 8 日 · 18条评论

评论

Sanguino D12 上没有 PWM #328
贡献者

你好,

昨天我设法为我的 Sanguino 编译了 Marlin,但是我用作 FAN_PIN 的 D12 上的 PWM 有问题。当我将值设置为 255 时,风扇工作正常,我认为这是因为在这种情况下没有使用 PWM,但是当我将它设置为任何其他值时,没有 PWM,引脚一直处于接地状态。
任何想法我做错了什么?

Sanguino D12 上没有 PWM #328
贡献者

您使用的是来自 sanguino.cc 的 Sanguino 文件还是来自 Marlin 资源的文件?(我仍在研究如何构建所有 Marlin 变体)

Sanguino D12 上没有 PWM #328
贡献者作者

感谢您的回答,
我使用了 Marlin 来源的 Sanguino。
周末我发现 atmega644P 没有产生 PWM。
今晚我将尝试从 sanguino.cc 获取 Sanguino 文件并在这里​​分享结果。

Sanguino D12 上没有 PWM #328
贡献者作者

好的,我检查了 sanguino.cc 中的代码,没有做任何更改。
在我将 HEATER_0_MINTEMP 和 BED_MINTEMP 从 5 更改为 2 之后,我的 Huxley 再次加热。
所以 D13 产生 PWM 但 D12 不产生 PWM。
希望我能抽出时间进行更多调试。

Sanguino D12 上没有 PWM #328
贡献者

奇怪的。

我没有要测试的 Sanguino 硬件。但我今天注意到 FAST_FAN_PWM 代码中有些奇怪,所以如果它已启用,您可能希望禁用它。

Sanguino D12 上没有 PWM #328
贡献者

可能与https://github.com/ErikZalm/Marlin/issues/203有关

2012 年 12 月 11 日 10:59,daid notifications@github.com写道:

奇怪的。

我没有要测试的 Sanguino 硬件。但我今天注意到 FAST_FAN_PWM 代码中有些奇怪,所以如果它已 启用
,您可能希望禁用它。


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ErikZalm/Marlin/issues/328#issuecomment-11239363。

Sanguino D12 上没有 PWM #328
贡献者作者

好的,我尝试启用和禁用 FAST_FAN_PWM 它没有任何区别,D12 仍然没有 PWM。
还有存储库 Sanguino 代码和 sanguino.cc 代码。
明天再调试。

Sanguino D12 上没有 PWM #328
贡献者作者

今天我换了挤出机和风扇针,现在风扇是D13,挤出机是D12。
FAN_PIN(D13) 上仍然没有 PWM,但现在 D12 为挤出机生成了一个完美的 PWM。
知道有什么问题吗?

Sanguino D12 上没有 PWM #328
贡献者作者

好的,我想我发现了故障:
stepper.cpp 将 timer1 配置为 CTC 模式并禁用 PWM 输出。
这很糟糕,因为 D12 和 D13 使用定时器 1 作为它们的 PWM 源。
挤出机 PWM 很好,因为它是软件 PWM。

我将为 Sanguino 主板实现软件 pwm,当 D12 或 D13 被选为 FAN_PIN 时激活。希望很快就会有相应的拉取请求。

Sanguino D12 上没有 PWM #328
贡献者

而不是破解软件 PWM(恕我直言,我对用于温度的软件 PWM 也不是很满意),看看是否可以使步进器的计时器可配置如何?大多数芯片都有相当多的计时器,为 Sanguino 切换计时器可能会以更好的方式解决问题。

Sanguino D12 上没有 PWM #328
贡献者作者

我知道这不是最好的解决方案,但是使定时器可配置并不是那么容易,因为它们的寄存器配置有时差异很大。因此,使计时器可配置将导致大的#ifdef 块,这很丑陋且难以维护。
我发送了一个包含当前快速修复的拉取请求。

对于 OCR1A,timer1 是否正确使用大于 255 的值?
如果是这样,timer1 是 atmega644p 的唯一选择。

Sanguino D12 上没有 PWM #328

我也不喜欢软pwm。但是一些硬件开发人员不考虑固件。
但是周围有许多 sanguinololu 板可以忽略它们。

在我看来,sanguinololu 板是最不适合重制的板。(很多兼容性问题。USB 电源没有以正确的方式实现等等)
但是如果人们购买它们并期望固件支持。

daid 添加了引用此问题的提交 2012 年 12 月 17 日

Sanguino D12 上没有 PWM #328
贡献者作者

OCR1A 中是否有高于 255 的值?

Sanguino D12 上没有 PWM #328
贡献者

我认为 timer1 始终是一个 16 位定时器。其他哪些定时器是 16 位取决于芯片。

Sanguino D12 上没有 PWM #328
贡献者作者

右边的timer1是一个16位的定时器。
问题是,芯片上没有其他的 16 位定时器。

Sanguino D12 上没有 PWM #328
贡献者作者

您如何看待在 D12/13 上使用定时器 2 进行 PWM?
据我所知,它没有用于任何其他用途。

Sanguino D12 上没有 PWM #328

@daid你的承诺似乎暗示这是固定的,如果是的话你能解决这个问题吗?

Sanguino D12 上没有 PWM #328
贡献者

这个是大约一年前创建的,有很多变化,请下载最新的 marlin 副本,看看问题是否仍然存在。您还可以使用最新的 arduino IDE 来刷新 marlin 固件。如果您的板文件等只能在旧的 ide 下工作,请先升级它们,以便它们在最新的 IDE 下工作。

如果您为不在https://github.com/ErikZalm/Marlin/tree/Marlin_v1/ArduinoAddons中的硬件创建板文件,请 fork marlin 并添加文件,然后创建一个拉取请求,以便我们可以获得硬件支持的。这也将使人们了解人们正在使用什么硬件。