From 7a4c95994fbc7073253956a19591364fa270f3e8 Mon Sep 17 00:00:00 2001 From: xu Date: Thu, 15 May 2025 19:15:02 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=B1=BB=E5=9E=8B]=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=9C=80=E5=B0=8F=E9=87=8D=E9=87=8F=EF=BC=8C=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E5=BE=AA=E7=8E=AF=E6=97=B6=E9=97=B4=E6=A3=80=E6=B5=8B=20?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E6=8F=8F=E8=BF=B0,=E9=99=8D=E4=BD=8E?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=BB=B6=E6=97=B6,=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=92=E6=96=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/FoodDeliveryBase.cpp | 2 +- src/commser.cpp | 7 +++++-- src/config.h | 2 +- src/main.cpp | 19 ++++++++++++++++++- src/motocontrol.h | 2 +- 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/FoodDeliveryBase.cpp b/src/FoodDeliveryBase.cpp index 2b085a1..37b4961 100644 --- a/src/FoodDeliveryBase.cpp +++ b/src/FoodDeliveryBase.cpp @@ -305,7 +305,7 @@ void FoodCube::playText(String str, VoiceVolume vol) SWrite(command, sizeof(command), voiceSerial); // 延时等待模块处理,防止连续播放死机 - delay(300); // 可根据模块处理时间调节 + //delay(300); // 可根据模块处理时间调节 } /** diff --git a/src/commser.cpp b/src/commser.cpp index 3e4c396..0703a3f 100644 --- a/src/commser.cpp +++ b/src/commser.cpp @@ -62,7 +62,7 @@ String topicHandle[] = {"crosFrequency"}; Ticker pubTicker; // 定时发布主题 线程 Ticker mavTicker; // 定时 指定飞控mavlink 串口返回的数据类别 防止飞控启动滞后 // Ticker chanTicker; //定时向飞控 发送油门指定 - +portMUX_TYPE espMutex = portMUX_INITIALIZER_UNLOCKED; /** * @description: mqtt订阅主题 收到信息 的回调函数 * @param {char*} topic 主题名称 msg/macadd @@ -477,7 +477,7 @@ void mavlink_receiveCallback(uint8_t c) // 没有激光高度直接退出 if (rngalt_cm == 0) { - rngalt_cm == 500; + //rngalt_cm == 500; // printf("exit rngalt_cm==0"); addLogMessage("exit rngalt_cm==0,激光高度异常"); // break; @@ -985,6 +985,8 @@ void pubThread() // 添加日志 到日志队列 void addLogMessage(const String &msg) { + portENTER_CRITICAL(&espMutex); + int nextTail = (logTail + 1) % LOG_QUEUE_SIZE; if (nextTail != logHead) { // 队列未满 @@ -996,6 +998,7 @@ void addLogMessage(const String &msg) // 队列已满,这里可以选择丢弃或覆盖最旧的日志 // logHead = (logHead + 1) % LOG_QUEUE_SIZE; // 开启这行表示覆盖最旧的 } + portEXIT_CRITICAL(&espMutex); } /** diff --git a/src/config.h b/src/config.h index 685af4e..0a030d9 100644 --- a/src/config.h +++ b/src/config.h @@ -29,7 +29,7 @@ // Moto-CAN //第二版本硬件参数---2号机使用 #define MOTO_CAN_RX 27 // PCB画板需要,做了调整 #define MOTO_CAN_TX 26 // PCB画板需要,做了调整 -#define WEIGHT_SCALE 41 // 减少零点漂移用B通道是41 +#define WEIGHT_SCALE 49 // 减少零点漂移用B通道是41 实测改为49 #define HX711_GAIN 32 // 减少零点漂移用B通道的感度 #endif diff --git a/src/main.cpp b/src/main.cpp index f384270..71c776e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -74,6 +74,13 @@ bool _checkweightcal = false; // 检测是否要检测称重传感器是否需 uint8_t _checkweighttimes = 0; // unsigned long _tm_checkweigh; static const char *MOUDLENAME = "MAIN"; +unsigned long _tm_core1 ; //主核心1 循环开始时间 +unsigned long _tm_core0 ; //核心0 循环开始时间 +unsigned long _looptm_core1=0 ; //主核心1单次循环时间--评估是否超时卡顿 +unsigned long _looptm_core0=0 ; //核心0单次循环时间--评估是否超时卡顿 + + + // 称重校准状态 enum Weightalign_status { @@ -147,7 +154,7 @@ void setup() fc.mqttClient->setCallback(mqtt_receiveCallback); // 设置订阅成功 回调 fc.mav_request_data(); // 指定飞控串口返回的数据类别(飞控启动之后发送才有意义) - /*异步线程*/ + /*异步线程,在核心0上回调*/ tksendinfo.attach(1, sendinfo); // 发送状态 pubTicker.attach(1, pubThread); // 定时 发布主题 /////////////////////////////////MQTT_语音_MAVLINK 部分结束 @@ -407,6 +414,7 @@ void set_locked(bool locked) // 在核心1上执行,重要的延迟低的 void loop() { + _tm_core1= millis(); // sercomm.getcommand(); // 得到控制命令 button_checktop.tick(); // 按钮 button_down.tick(); // 按钮 @@ -441,6 +449,15 @@ void loop() check_tare(); // 检查看是否需要校准称重 checkinited(); // 检测执行初始化工作 delay(1); + _looptm_core1= millis()-_tm_core1; + //如果循环时间超过1000ms,则打印错误日志 + + //if (_looptm_core1>1000) + { + // ESP_LOGE(MOUDLENAME, "main loop time out %d ms", _looptm_core1); + addLogMessage("core1 loop time out: " + String(_looptm_core1)); + } + } // 在核心0上执行耗时长的低优先级的 void Task1(void *pvParameters) diff --git a/src/motocontrol.h b/src/motocontrol.h index 28c7b08..962fcb3 100644 --- a/src/motocontrol.h +++ b/src/motocontrol.h @@ -34,7 +34,7 @@ #define SERVO_UNLOCKPOS 1120 // 1800 // 舵机解锁位置 #define SERVO_BLOCKUNLOCKPOS 1100 // 舵机堵转需要转回的位置--可以和SERVO_UNLOCKPOS一样,为了速度快也可以更小 -#define HOOK_WEIHT_MIN 100 // 最小货物重量 小于这个认为没挂东西 (克) +#define HOOK_WEIHT_MIN 300 // 最小货物重量 小于这个认为没挂东西 (克) #define HOOK_WEIHT_MAX 12000 // 最大货物重量 大于这个认为超重不工作 (克)