开源改变世界!!

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895

推推 grbl 2年前 (2022-10-19) 199次浏览 0个评论

关闭
Protoneer 打开了这个问题 on 12 May 2021 · 8 条评论
关闭

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误第895章

Protoneer 打开了这个问题 on 12 May 2021 · 8 条评论

注释

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895

您使用的是什么版本的固件?最新
问题是否可重复?是的

什么情况下会出现bug?

设置机器文件如下:

#define SPINDLE_TYPE            SpindleType::PWM
#define SPINDLE_OUTPUT_PIN      GPIO_NUM_2
#define SPINDLE_ENABLE_PIN      I2SO(28)
#define SPINDLE_DIR_PIN         I2SO(29)

Arduino错误

C:\Users\IT\AppData\Local\Temp\arduino_build_548812\sketch\src\Spindles\10vSpindle.cpp: In member function 'virtual void Spindles::_10v::deinit()':
C:\Users\IT\AppData\Local\Temp\arduino_build_548812\sketch\src\Spindles\10vSpindle.cpp:177:42: error: invalid conversion from 'int' to 'gpio_num_t' [-fpermissive]
         gpio_reset_pin(SPINDLE_ENABLE_PIN);
                                          ^
In file included from C:\Users\IT\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5/tools/sdk/include/esp32/esp_sleep.h:19:0,
                 from C:\Users\IT\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5/tools/sdk/include/esp32/esp_system.h:21,
                 from C:\Users\IT\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5/tools/sdk/include/freertos/freertos/portable.h:128,
                 from C:\Users\IT\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5/tools/sdk/include/freertos/freertos/FreeRTOS.h:105,
                 from C:\Users\IT\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5\cores\esp32/Arduino.h:32,
                 from c:\users\it\appdata\local\temp\arduino_build_548812\sketch\src\grbl.h:28,
                 from C:\Users\IT\AppData\Local\Temp\arduino_build_548812\sketch\src\Spindles\Spindle.h:44,
                 from C:\Users\IT\AppData\Local\Temp\arduino_build_548812\sketch\src\Spindles\PWMSpindle.h:24,
                 from C:\Users\IT\AppData\Local\Temp\arduino_build_548812\sketch\src\Spindles\10vSpindle.h:29,
                 from C:\Users\IT\AppData\Local\Temp\arduino_build_548812\sketch\src\Spindles\10vSpindle.cpp:27:
C:\Users\IT\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5/tools/sdk/include/driver/driver/gpio.h:261:11: note:   initializing argument 1 of 'esp_err_t gpio_reset_pin(gpio_num_t)'
 esp_err_t gpio_reset_pin(gpio_num_t gpio_num);

SPINDLE_ENABLE_PIN 和以下函数 virtual void Spindles::PWM::deinit() 重复上述错误

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895 Protoneer 添加了 漏洞 有些东西不工作标签 on 12 May 2021
将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895
作者

Protoneer 评论 on 13 May 2021  

目前看起来这些引脚只能设置为 ESP 引脚,而不能设置为 I2SO 引脚。

…10vSpindle.cpp:177:42:错误:从“int”到“gpio_num_t”的无效转换
只是寻找使用 I2SO 的示例。说不定还能用。。。

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895
合作者

米奇布拉德利 评论 on 13 May 2021  

我怀疑在 ENABLE_PIN 和 DIR_PIN 情况下调用 gpio_reset_pin 是不必要的。跟在它们后面的 pinMode(,,,, INPUT) 调用可能就足够了。

gpio_reset_pin() 可能是必要/有用的情况是用于 OUTPUT_PIN,因为它与 LEDC 控制器一起用于执行 PWM。在 deinit() 中,gpio_reset_pin() 会将其与 LEDC 控制器分离。

所以我会尝试删除除 *_OUTPUT_PIN 之外的所有内容的 gpio_reset_pin() 调用。I2S0 无论如何都不能用于 OUTPUT_PIN,因为只有 GPIO 可以连接到 LEDC 控制器。

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895
作者

Protoneer 评论 2021 年 5 月 13 日  

我怀疑在 ENABLE_PIN 和 DIR_PIN 情况下调用 gpio_reset_pin 是不必要的。跟在它们后面的 pinMode(,,,, INPUT) 调用可能就足够了。

gpio_reset_pin() 可能是必要/有用的情况是用于 OUTPUT_PIN,因为它与 LEDC 控制器一起用于执行 PWM。在 deinit() 中,gpio_reset_pin() 会将其与 LEDC 控制器分离。

所以我会尝试删除除 *_OUTPUT_PIN 之外的所有内容的 gpio_reset_pin() 调用。I2S0 无论如何都不能用于 OUTPUT_PIN,因为只有 GPIO 可以连接到 LEDC 控制器。

谢谢…我们正在取得进展。

我可以从以下开始:

#define SPINDLE_TYPE            SpindleType::PWM
#define SPINDLE_OUTPUT_PIN      GPIO_NUM_2

我按照建议删除了 gpio_reset_pin() ……并且能够编译:

[MSG:PWM spindle Output:GPIO(2), Enbl:I2SO(28), Dir:I2SO(29), Freq:5000Hz, Res:1 3bits]

然而,spindle_enable_pin 做了一些奇怪的事情……当 GRBL 处于空闲状态时,当我运行 X1000 时它读取 0V,它在 2 和 3V 之间振荡。

对于我的冷却液销,我使用了:

#define COOLANT_MIST_PIN        I2SO(30)

这在空闲或运行模式下非常稳定。

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895
所有者

婚戒 评论 2021 年 5 月 13 日

I2S0 引脚最初用于驱动步进电机。它们也可用于开/关信号(无 PWM)。

我们没有考虑将它们用于 PWM 主轴,但它们应该适用于 Enable 和 Dir 使用。gpio_reset_pin(...)导致问题的原因。它要么需要为这些引脚删除,要么被抽象为与所有引脚类型兼容。

我注释掉了那个函数并运行了这个设置。

#define SPINDLE_TYPE            SpindleType::PWM
#define SPINDLE_OUTPUT_PIN      GPIO_NUM_26
#define SPINDLE_ENABLE_PIN      I2SO(24)
#define SPINDLE_DIR_PIN         I2SO(25)

它工作得很好。这是在我的逻辑分析仪上捕获的 M3S100 (10%)。启用信号在我的设置中是稳定的。

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895

I2SO(28) 上的 SPINDLE_ENABLE_PIN“振荡”表明移位寄存器芯片和测量点之间某处连接不良。销上有负载吗?如果错误的连接猜测是正确的,那么添加负载将消除振荡,电压将始终为 0。

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895

I2S0 引脚最初用于驱动步进电机。它们也可用于开/关信号(无 PWM)。
@bdring 我同意,我只会将 I2SO 引脚用于开/关输出。

@MitchBradley我会再次检查连接。10K 下拉会不会因为负载而变得橡木?

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895

10k 下拉负载足以检测开路。您也可以直接在移位寄存器引脚上进行探测。如果引脚和电路板之间的焊点不良,有时探测引脚会“解决”问题。探针将引脚向下推,使其更好地接触焊盘。不过,这样的修复不会持久。您需要回流焊料以正确恢复连接。

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895

I2SO(28) 上的 SPINDLE_ENABLE_PIN“振荡”表明移位寄存器芯片和测量点之间某处连接不良。销上有负载吗?如果错误的连接猜测是正确的,那么添加负载将消除振荡,电压将始终为 0。

发现!!!我的螺丝连接器有点松动。

一切正常!!!谢谢

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895
 
添加标题文本添加粗体文本,<Ctrl+b>添加斜体文本,<Ctrl+i>
添加引号,<Ctrl+Shift+.>添加代码,<Ctrl+e>添加链接,<Ctrl+k>
添加项目符号列表,<Ctrl+Shift+8>添加编号列表,<Ctrl+Shift+7>添加任务列表,<Ctrl+Shift+l>
直接提及用户或团队引用问题、拉取请求或讨论

添加已保存的回复

请记住,对此存储库的贡献应遵循我们的 GitHub 社区指南
通过赞助他们 来表达 您对 bdring的支持。

 赞助

标签
漏洞有些东西不工作
项目

还没有

发展

没有分支或拉取请求

3名参与者
将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895

将 I2SO 与 SPINDLE_DIR_PIN 和 SPINDLE_ENABLE_PIN 一起使用会导致转换错误 #895
Protoneer贝尔图斯克鲁格
新西兰惠灵顿

打开这个问题

按 Escape 关闭此悬停卡
喜欢 (0)

您必须 登录 才能发表评论!