开源改变世界!!

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息

推推 grbl 2年前 (2022-10-20) 501次浏览 0个评论
关闭
cosmok82 打开了这个问题 on 25 Mar · 19 条评论
关闭

任务 xTaskCreatePinnedToCore 期间没有 grbl_notifyf/grbl_msg_sendf 消息#1137

cosmok82 打开了这个问题 on 25 Mar · 19 条评论

注释

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息

宇宙82 评论 on 25 Mar

大家好,

我想将传感器 as5600 添加到我的个人 Scara 运动学中,但是当我通过串行调用 grbl_notifyf 或 grbl_msg_sendf 时,串行监视器上没有打印消息。你知道有什么问题吗?我只附上了一个例子:

static TaskHandle_t as5600UpdateTaskHandle;

void as5600Update(void* pvParameters) {
    TickType_t       xLastWakeTime;
    const TickType_t xDisplayFrequency = 100;                  // in ticks (typically ms)
    xLastWakeTime                      = xTaskGetTickCount();  // Initialise the xLastWakeTime variable with the current time.

    vTaskDelay(1000);
    
    while (true) {
      TCA9548A(2);
      ReadRawAngle();

      grbl_notifyf("AS5600 sensor", "Angle: %4.2f \r\n", degAngle);
      grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Verbose, "Angle: %4.2f", degAngle);

      vTaskDelayUntil(&xLastWakeTime, xDisplayFrequency);
    }
}

void as5600_init() {
    // Initialising the UI will init the display too.
    grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Init AS5600 SDA:%s SCL:%s", pinName(I2C_SDA_PIN), pinName(I2C_SCL_PIN));
    
    xTaskCreatePinnedToCore(as5600Update,                // task
                            "as5600UpdateTask",          // name for task
                            4096,                        // size of task stack
                            NULL,                        // parameters
                            1,                           // priority
                            &as5600UpdateTaskHandle,     //
                            CONFIG_ARDUINO_RUNNING_CORE  // must run the task on same core
                                                         // core
    );
}

as5600_init(); 它已添加到 Grbl.cpp 并且运行良好,但是在 as5600 任务初始化后,我没有按预期读取串行上的任何状态消息。我想在开发过程中至少在调试模式下评估它,或者如果可能的话在详细模式下评估它。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
合作者

米奇布拉德利 评论 on 26 Mar

vTaskDelayUntil(&xLastWakeTime, xDisplayFrequency);

这要求它等到过去的某个时间。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 on 26 Mar

vTaskDelayUntil(&xLastWakeTime, xDisplayFrequency);

这要求它等到过去的某个时间。

对不起,但我不明白它有什么用处。例如,我尝试在 GPIO 上闪烁,它工作得很好,为什么不在串行上呢?

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
合作者

米奇布拉德利 评论 on 26 Mar

尝试从串行终端发送 $Message/Level=Verbose。要么用 MessageLevel::Info 做 sendf

100ms 对于消息来说有点快。我会把它改成500

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 on 26 Mar

我将代码更改为:


static TaskHandle_t as5600UpdateTaskHandle;

void as5600Update(void* pvParameters) {
    
    while (true) {
      TCA9548A(2);
      ReadRawAngle();

      grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Angle: %4.2f \r\n", degAngle);
      delay(1000);

    }
}

void as5600_init() {
    // Initialising the UI will init the display too.
    grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Init AS5600 SDA:%s SCL:%s", pinName(I2C_SDA_PIN), pinName(I2C_SCL_PIN));
    
    xTaskCreatePinnedToCore(as5600Update,                // task
                            "as5600UpdateTask",          // name for task
                            4096,                        // size of task stack
                            NULL,                        // parameters
                            1,                           // priority
                            &as5600UpdateTaskHandle,     //NULL
                            CONFIG_ARDUINO_RUNNING_CORE  // must run the task on same core
                                                         // core
    );
}

但什么都没有,它不起作用。可能是任务问题?
串行库执行不同的任务,可能是这样。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
合作者

米奇布拉德利 评论 on 26 Mar

你真的从主初始化代码的某个地方调用了 as5600_init() 吗?

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 on 26 Mar

你真的从主初始化代码的某个地方调用了 as5600_init() 吗?

当然,正如我在第一条消息中所说的“ as5600_init(); 它已添加到 Grbl.cpp 中并且效果很好

这是输出:

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8

[MSG:Init AS5600 SDA:GPIO(21) SCL:GPIO(22)]
[MSG:Grbl_ESP32 Ver 1.3a Date 20211103]
 
xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 on 26 Mar

问题是:是否可以从任务调用中调用串行?因为我研究了代码,所以没有发现任何情况。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
合作者

米奇布拉德利 评论 on 26 Mar

我不知道为什么它不起作用。

我们不再支持 Grbl_Esp32。我们目前所有的工作都在 FluidNC 上。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 on 26 Mar

流体数控

对不起米奇,也许我错了,但我在 FluidNC https://github.com/bdring/FluidNC

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
合作者

米奇布拉德利 评论 on 26 Mar

此问题位于 Grbl_Esp32 存储库中。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 on 26 Mar

流体数控

对不起米奇,也许我错了,但我在 FluidNC https://github.com/bdring/FluidNC

此问题位于 Grbl_Esp32 存储库中。

不,我错了,我在 Grbl_Esp32 上,但我可以打开 FluidNC。不知道能不能解决我的问题。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
合作者

米奇布拉德利 评论 3月26日

FluidNC 中也不存在 grbl_msg_sendf()。FluidNC 使用带有 iostream 样式格式的 log_info()。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 3月26日

FluidNC 中也不存在 grbl_msg_sendf()。FluidNC 使用带有 iostream 样式格式的 log_info()。

让我试试新项目,我可以完成我的配置的移植,也许支持会更好。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
合作者

米奇布拉德利 评论 3月26日

我将此代码添加到 Main.cpp 作为测试:

void as5600Update(void* pvParameters) {
    log_info("Hello from task");
    while (true) {
        log_info("Ping from task");
        delay(1000);
    }
}

void as5600_init() {
    // Initialising the UI will init the display too.
    log_info("Creating task");

    xTaskCreatePinnedToCore(as5600Update,                // task
                            "as5600UpdateTask",          // name for task
                            4096,                        // size of task stack
                            NULL,                        // parameters
                            1,                           // priority
                            &as5600UpdateTaskHandle,     //NULL
                            CONFIG_ARDUINO_RUNNING_CORE  // must run the task on same core
                                                         // core
    );
}

并将其添加为 setup() 的最后一行

    as5600_init();

有效。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息

这就是我能提供的所有帮助。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 3月26日

设置(

抱歉,这是 Grbl_Esp32,而不是 FluidNC。此外,我在我的自定义中需要它,而不是在设置中,所以它没有解决。在我看来有问题。你用什么终端?我在 Arduino 显示器上试了试,但一无所获。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 3月26日

设置(

抱歉,这是 Grbl_Esp32,而不是 FluidNC。此外,我在我的自定义中需要它,而不是在设置中,所以它没有解决。在我看来有问题。你用什么终端?我在 Arduino 显示器上试了试,但一无所获。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息

问题已经解决但没有解决,事实上,它不能在正确的路径上工作,在你的情况下这是一个不同的场景。要解决必须尊重路径!

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
合作者

米奇布拉德利 评论 3月26日

我不愿意再支持 Grbl_Esp32 了。我的代码只是证明任务的串行输出在 FluidNC 中有效。我把它放在 Main.cpp 中,因为那是我测试它最容易的地方。如果代码在其他文件中,没有内在的原因导致它无法工作,只要在串行端口和 I2C 设置后的适当时间调用初始化例程即可。

我使用基于 Web 的实验终端、FluidTerm 和 TeraTermPro 进行了尝试。它适用于所有情况。

在这一点上,除非有人愿意帮助你,否则你只能靠自己了。我花在帮助人们解决编程问题或教授代码库的结构上的任何时间都是我没有花在改进 FluidNC 代码上的时间。我选择做后者。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 3月26日

我不愿意再支持 Grbl_Esp32 了。我的代码只是证明任务的串行输出在 FluidNC 中有效。我把它放在 Main.cpp 中,因为那是我测试它最容易的地方。如果代码在其他文件中,没有内在的原因导致它无法工作,只要在串行端口和 I2C 设置后的适当时间调用初始化例程即可。

我使用基于 Web 的实验终端、FluidTerm 和 TeraTermPro 进行了尝试。它适用于所有情况。

在这一点上,除非有人愿意帮助你,否则你只能靠自己了。我花在帮助人们解决编程问题或教授代码库的结构上的任何时间都是我没有花在改进 FluidNC 代码上的时间。我选择做后者。

我理解你的目标,但是给出一个小问题的解决方案并不能解决所提出的问题,它过于尖锐,甚至没有接近解决方案。无论如何,感谢您的时间,但老实说,它根本没有解决。如果我这么说,那就不专​​业了。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
作者

宇宙82 评论 3月26日

我达到了真正的解决方案!考虑到硬件是我的并且正在开发中。

第一个问题是硬件。

SCL 和 SDA 引脚已交换,TCA9548A 没有通信。此外,TCA9548A 的 A0 A1 A2 引脚浮动,我检查了硬件,发现另一个缺失。
这些引脚必须连接到 ESP32 的 GND 才能设置 0x70 地址。

最后一个问题是 SW。

在 SW 上,必须在屏幕截图中配置 Wire 库(这是我的配置,在您的情况下可能会更改),同时磁铁必须在传感器上才能接收信号。

而且,最后但并非最不重要的一点是,我建议在上传之前编译干净的软件,在多次修改的情况下可能很有用,简单!
我想就是这样。

现在它已经解决了。

我知道,这是我的专有项目,但想给社区留下一个小解决方案的想法在我嘴里留下了苦涩的味道。

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息

xTaskCreatePinnedToCore #1137任务期间没有 grbl_notifyf/grbl_msg_sendf 消息
 
添加标题文本添加粗体文本,<Ctrl+b>添加斜体文本,<Ctrl+i>
添加引号,<Ctrl+Shift+.>添加代码,<Ctrl+e>添加链接,<Ctrl+k>
添加项目符号列表,<Ctrl+Shift+8>添加编号列表,<Ctrl+Shift+7>添加任务列表,<Ctrl+Shift+l>
直接提及用户或团队引用问题、拉取请求或讨论

添加已保存的回复

喜欢 (0)

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