Browse Source

1.电机优先级调高;2.增加电机报文发送超时日志;3.电机有错误码时断电不再重置按键复位标识

master
Lizongdi 6 days ago
parent
commit
0cf75b9082
  1. 2
      RBcore/drv_interface.c
  2. 17
      library/ringbuffer/ringbuffer.c
  3. 3
      project/paint_robot_new/paint_robot_new.c
  4. 8
      project/paint_robot_new/paint_robot_new_motors.c

2
RBcore/drv_interface.c

@ -278,7 +278,7 @@ void Drv_InterfaceInit(void)
const osThreadAttr_t motor_task_attributes = { const osThreadAttr_t motor_task_attributes = {
.name = MODULE_NAME_MOTOR, .name = MODULE_NAME_MOTOR,
.stack_size = THREAD_DEFAULT_STACK, .stack_size = THREAD_DEFAULT_STACK,
.priority = (osPriority_t) osPriorityRealtime1, .priority = (osPriority_t) osPriorityRealtime2,
}; };
(void)osThreadNew(MotorTask, NULL, &motor_task_attributes); (void)osThreadNew(MotorTask, NULL, &motor_task_attributes);

17
library/ringbuffer/ringbuffer.c

@ -395,6 +395,7 @@ int rd_RingbufferGetchar(rd_ringbuf_t *rb, char *ch)
int rd_RingbufferDataLen(rd_ringbuf_t *rb) int rd_RingbufferDataLen(rd_ringbuf_t *rb)
{ {
if (!rb) return RD_INVALUE; if (!rb) return RD_INVALUE;
int iRet = 0;
unsigned short wi = ATOMIC_LOAD(&rb->m_sWriteIndex, unsigned short, ATOMIC_ORDER_ACQUIRE); unsigned short wi = ATOMIC_LOAD(&rb->m_sWriteIndex, unsigned short, ATOMIC_ORDER_ACQUIRE);
unsigned short ri = ATOMIC_LOAD(&rb->m_sReadIndex, unsigned short, ATOMIC_ORDER_RELAXED); unsigned short ri = ATOMIC_LOAD(&rb->m_sReadIndex, unsigned short, ATOMIC_ORDER_RELAXED);
@ -402,13 +403,23 @@ int rd_RingbufferDataLen(rd_ringbuf_t *rb)
unsigned char rb_m = ATOMIC_LOAD(&rb->m_bReadMirror, unsigned char, ATOMIC_ORDER_RELAXED); unsigned char rb_m = ATOMIC_LOAD(&rb->m_bReadMirror, unsigned char, ATOMIC_ORDER_RELAXED);
if (wi == ri) { if (wi == ri) {
return (wb == rb_m) ? 0 : rb->m_iBufsize; iRet = (wb == rb_m) ? 0 : rb->m_iBufsize;
} }
if (wb == rb_m) { if (wb == rb_m) {
return wi - ri; iRet = wi - ri;
} else { } else {
return rb->m_iBufsize - (ri - wi); iRet = rb->m_iBufsize - (ri - wi);
}
if (iRet >= 0)
{
return iRet;
}
else
{
log_e("wb = %d, rb_m = %d, wi = %d, ri = %d", wb, rb_m, wi, ri);
return 0;
} }
} }

3
project/paint_robot_new/paint_robot_new.c

@ -931,7 +931,10 @@ static void Custom_ModuleHandler(const Msg_t *pstMsg)
MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_POWER_DISABLE, NULL, 0); MsgCenter_SendTo(MODULE_NAME_MOTOR, MOTOR_POWER_DISABLE, NULL, 0);
MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_STOP_ALL, NULL, 0); MsgCenter_SendTo(MODULE_NAME_RBCORE, RBCORE_CMD_STOP_ALL, NULL, 0);
if (g_stMK32.IsOnline == 0)
{
g_Is_All_Button_Reset = 0; g_Is_All_Button_Reset = 0;
}
break; break;
} }

8
project/paint_robot_new/paint_robot_new_motors.c

@ -243,6 +243,7 @@ void MotorTask(void *argument)
{ {
static int LS_Motor_Config_Count = 0; static int LS_Motor_Config_Count = 0;
static int iStatusQueryCycle = 0; static int iStatusQueryCycle = 0;
static int iLastiCount = 0;
if (LS_Motor_Config_Count <= 200) if (LS_Motor_Config_Count <= 200)
{ {
@ -253,10 +254,17 @@ void MotorTask(void *argument)
Rd_Delay(4); Rd_Delay(4);
} }
int iCurrentCount = Rd_GetTime();
if (iCurrentCount - iLastiCount >= 1000)
{
log_e("Send motor timeout (%d) !", iCurrentCount - iLastiCount);
}
MotorMgr_SetTargetSpeed(g_apstMotors[0], g_aiMotorSpeed[0]); MotorMgr_SetTargetSpeed(g_apstMotors[0], g_aiMotorSpeed[0]);
Rd_Delay(4); Rd_Delay(4);
MotorMgr_SetTargetSpeed(g_apstMotors[1], g_aiMotorSpeed[1]); MotorMgr_SetTargetSpeed(g_apstMotors[1], g_aiMotorSpeed[1]);
Rd_Delay(4); Rd_Delay(4);
iLastiCount = Rd_GetTime();
if (++iStatusQueryCycle >= 10) if (++iStatusQueryCycle >= 10)
{ {

Loading…
Cancel
Save