[类型] 修改最小重量,加入循环时间检测
详细描述,降低播放延时,日志加入互斥
This commit is contained in:
parent
7767ddd84e
commit
7a4c95994f
@ -305,7 +305,7 @@ void FoodCube::playText(String str, VoiceVolume vol)
|
|||||||
SWrite(command, sizeof(command), voiceSerial);
|
SWrite(command, sizeof(command), voiceSerial);
|
||||||
|
|
||||||
// 延时等待模块处理,防止连续播放死机
|
// 延时等待模块处理,防止连续播放死机
|
||||||
delay(300); // 可根据模块处理时间调节
|
//delay(300); // 可根据模块处理时间调节
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,7 +62,7 @@ String topicHandle[] = {"crosFrequency"};
|
|||||||
Ticker pubTicker; // 定时发布主题 线程
|
Ticker pubTicker; // 定时发布主题 线程
|
||||||
Ticker mavTicker; // 定时 指定飞控mavlink 串口返回的数据类别 防止飞控启动滞后
|
Ticker mavTicker; // 定时 指定飞控mavlink 串口返回的数据类别 防止飞控启动滞后
|
||||||
// Ticker chanTicker; //定时向飞控 发送油门指定
|
// Ticker chanTicker; //定时向飞控 发送油门指定
|
||||||
|
portMUX_TYPE espMutex = portMUX_INITIALIZER_UNLOCKED;
|
||||||
/**
|
/**
|
||||||
* @description: mqtt订阅主题 收到信息 的回调函数
|
* @description: mqtt订阅主题 收到信息 的回调函数
|
||||||
* @param {char*} topic 主题名称 msg/macadd
|
* @param {char*} topic 主题名称 msg/macadd
|
||||||
@ -477,7 +477,7 @@ void mavlink_receiveCallback(uint8_t c)
|
|||||||
// 没有激光高度直接退出
|
// 没有激光高度直接退出
|
||||||
if (rngalt_cm == 0)
|
if (rngalt_cm == 0)
|
||||||
{
|
{
|
||||||
rngalt_cm == 500;
|
//rngalt_cm == 500;
|
||||||
// printf("exit rngalt_cm==0");
|
// printf("exit rngalt_cm==0");
|
||||||
addLogMessage("exit rngalt_cm==0,激光高度异常");
|
addLogMessage("exit rngalt_cm==0,激光高度异常");
|
||||||
// break;
|
// break;
|
||||||
@ -985,6 +985,8 @@ void pubThread()
|
|||||||
// 添加日志 到日志队列
|
// 添加日志 到日志队列
|
||||||
void addLogMessage(const String &msg)
|
void addLogMessage(const String &msg)
|
||||||
{
|
{
|
||||||
|
portENTER_CRITICAL(&espMutex);
|
||||||
|
|
||||||
int nextTail = (logTail + 1) % LOG_QUEUE_SIZE;
|
int nextTail = (logTail + 1) % LOG_QUEUE_SIZE;
|
||||||
if (nextTail != logHead)
|
if (nextTail != logHead)
|
||||||
{ // 队列未满
|
{ // 队列未满
|
||||||
@ -996,6 +998,7 @@ void addLogMessage(const String &msg)
|
|||||||
// 队列已满,这里可以选择丢弃或覆盖最旧的日志
|
// 队列已满,这里可以选择丢弃或覆盖最旧的日志
|
||||||
// logHead = (logHead + 1) % LOG_QUEUE_SIZE; // 开启这行表示覆盖最旧的
|
// logHead = (logHead + 1) % LOG_QUEUE_SIZE; // 开启这行表示覆盖最旧的
|
||||||
}
|
}
|
||||||
|
portEXIT_CRITICAL(&espMutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
// Moto-CAN //第二版本硬件参数---2号机使用
|
// Moto-CAN //第二版本硬件参数---2号机使用
|
||||||
#define MOTO_CAN_RX 27 // PCB画板需要,做了调整
|
#define MOTO_CAN_RX 27 // PCB画板需要,做了调整
|
||||||
#define MOTO_CAN_TX 26 // 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通道的感度
|
#define HX711_GAIN 32 // 减少零点漂移用B通道的感度
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
19
src/main.cpp
19
src/main.cpp
@ -74,6 +74,13 @@ bool _checkweightcal = false; // 检测是否要检测称重传感器是否需
|
|||||||
uint8_t _checkweighttimes = 0; //
|
uint8_t _checkweighttimes = 0; //
|
||||||
unsigned long _tm_checkweigh;
|
unsigned long _tm_checkweigh;
|
||||||
static const char *MOUDLENAME = "MAIN";
|
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
|
enum Weightalign_status
|
||||||
{
|
{
|
||||||
@ -147,7 +154,7 @@ void setup()
|
|||||||
fc.mqttClient->setCallback(mqtt_receiveCallback); // 设置订阅成功 回调
|
fc.mqttClient->setCallback(mqtt_receiveCallback); // 设置订阅成功 回调
|
||||||
fc.mav_request_data(); // 指定飞控串口返回的数据类别(飞控启动之后发送才有意义)
|
fc.mav_request_data(); // 指定飞控串口返回的数据类别(飞控启动之后发送才有意义)
|
||||||
|
|
||||||
/*异步线程*/
|
/*异步线程,在核心0上回调*/
|
||||||
tksendinfo.attach(1, sendinfo); // 发送状态
|
tksendinfo.attach(1, sendinfo); // 发送状态
|
||||||
pubTicker.attach(1, pubThread); // 定时 发布主题
|
pubTicker.attach(1, pubThread); // 定时 发布主题
|
||||||
/////////////////////////////////MQTT_语音_MAVLINK 部分结束
|
/////////////////////////////////MQTT_语音_MAVLINK 部分结束
|
||||||
@ -407,6 +414,7 @@ void set_locked(bool locked)
|
|||||||
// 在核心1上执行,重要的延迟低的
|
// 在核心1上执行,重要的延迟低的
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
|
_tm_core1= millis();
|
||||||
// sercomm.getcommand(); // 得到控制命令
|
// sercomm.getcommand(); // 得到控制命令
|
||||||
button_checktop.tick(); // 按钮
|
button_checktop.tick(); // 按钮
|
||||||
button_down.tick(); // 按钮
|
button_down.tick(); // 按钮
|
||||||
@ -441,6 +449,15 @@ void loop()
|
|||||||
check_tare(); // 检查看是否需要校准称重
|
check_tare(); // 检查看是否需要校准称重
|
||||||
checkinited(); // 检测执行初始化工作
|
checkinited(); // 检测执行初始化工作
|
||||||
delay(1);
|
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上执行耗时长的低优先级的
|
// 在核心0上执行耗时长的低优先级的
|
||||||
void Task1(void *pvParameters)
|
void Task1(void *pvParameters)
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#define SERVO_UNLOCKPOS 1120 // 1800 // 舵机解锁位置
|
#define SERVO_UNLOCKPOS 1120 // 1800 // 舵机解锁位置
|
||||||
#define SERVO_BLOCKUNLOCKPOS 1100 // 舵机堵转需要转回的位置--可以和SERVO_UNLOCKPOS一样,为了速度快也可以更小
|
#define SERVO_BLOCKUNLOCKPOS 1100 // 舵机堵转需要转回的位置--可以和SERVO_UNLOCKPOS一样,为了速度快也可以更小
|
||||||
|
|
||||||
#define HOOK_WEIHT_MIN 100 // 最小货物重量 小于这个认为没挂东西 (克)
|
#define HOOK_WEIHT_MIN 300 // 最小货物重量 小于这个认为没挂东西 (克)
|
||||||
|
|
||||||
#define HOOK_WEIHT_MAX 12000 // 最大货物重量 大于这个认为超重不工作 (克)
|
#define HOOK_WEIHT_MAX 12000 // 最大货物重量 大于这个认为超重不工作 (克)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user