第一次合并后,水平电机收发测试通过(垂直没有测试)
This commit is contained in:
parent
d5ee07278f
commit
c30d8e8981
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
#include "rotate_servo.h"
|
#include "rotate_servo.h"
|
||||||
|
#include "speed_to_servoMotor.h"
|
||||||
|
|
||||||
#ifdef PTZ_MEDIUM_WORM_SERVO_MOTOR_24V
|
#ifdef PTZ_MEDIUM_WORM_SERVO_MOTOR_24V
|
||||||
|
|
||||||
|
@ -79,7 +79,44 @@ void ptz_vert_stop(unsigned short int time)
|
||||||
|
|
||||||
static void ptz_hori_rotate_monitor_task()
|
static void ptz_hori_rotate_monitor_task()
|
||||||
{
|
{
|
||||||
|
static uint8_t status;
|
||||||
|
static uint16_t speed = 100;
|
||||||
|
switch( status )
|
||||||
|
{
|
||||||
|
case 0://切换为速度控制模式
|
||||||
|
|
||||||
|
servoSendData(horiMotorType, WriteMotorOneReg(H_MOTOR, H02_CONTR_MODE_SELEC, 0)
|
||||||
|
, WRITE_ONE_REG_FRAME_NUM, lowPriority);
|
||||||
|
status = 1;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1://设置加速度时间常数
|
||||||
|
servoSendData(horiMotorType, WriteMotorOneReg(H_MOTOR, H06_SPEED_UP_SLOPE_VALUE, 3000)
|
||||||
|
, WRITE_ONE_REG_FRAME_NUM, lowPriority);
|
||||||
|
status = 2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2://设置减速度时间常数
|
||||||
|
servoSendData(horiMotorType, WriteMotorOneReg(H_MOTOR, H06_SPEED_DOWN_SLOPE_VALUE, 2000)
|
||||||
|
, WRITE_ONE_REG_FRAME_NUM, lowPriority);
|
||||||
|
status = 3;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3://设置运行速度
|
||||||
|
servoSendData(horiMotorType, WriteMotorOneReg(H_MOTOR, H06_SPEED_COMMU_SET_VALUE, speed)
|
||||||
|
, WRITE_ONE_REG_FRAME_NUM, lowPriority);
|
||||||
|
speed += 20;
|
||||||
|
speed %= 500;
|
||||||
|
status = 4;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4://保存设定的参数并运行
|
||||||
|
servoSendData(horiMotorType, WriteMotorOneReg(H_MOTOR, H03_DI1_LOGICAL_SELEC, 1)
|
||||||
|
, WRITE_ONE_REG_FRAME_NUM, lowPriority);
|
||||||
|
status = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ptz_vert_rotate_monitor_task()
|
static void ptz_vert_rotate_monitor_task()
|
||||||
|
@ -93,7 +130,7 @@ static void ptz_hori_rotate_task()
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
ptz_hori_rotate_monitor_task();
|
ptz_hori_rotate_monitor_task();
|
||||||
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
OSTimeDlyHMSM(0u, 0u, 0u, 100u);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ static void ptz_recv_hori_servo_task()
|
||||||
OSSemPend(g_horiMotorMutex, 0, &err);
|
OSSemPend(g_horiMotorMutex, 0, &err);
|
||||||
if ( MotorReplyForWrite(H_MOTOR) == true )
|
if ( MotorReplyForWrite(H_MOTOR) == true )
|
||||||
{
|
{
|
||||||
OSSemPost(g_horiSpeedMutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ void ptz_send_speed(char dev, char speed)
|
||||||
\param[out] none
|
\param[out] none
|
||||||
\retval none
|
\retval none
|
||||||
*/
|
*/
|
||||||
void servoHoriLinkListMemPut(uint8_t motorType)
|
void servoLinkListMemPut(uint8_t motorType)
|
||||||
{
|
{
|
||||||
//水平电机
|
//水平电机
|
||||||
if (motorType == horiMotorType) {
|
if (motorType == horiMotorType) {
|
||||||
|
@ -124,6 +124,9 @@ void servoHoriLinkListMemPut(uint8_t motorType)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//释放信号量,通知能发送一次
|
||||||
|
OSSemPost(g_horiSpeedMutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -299,7 +302,7 @@ static void ptz_vert_servo_task()
|
||||||
g_servoMotorLinkList.vertMotor.linkListNum = highPriority;
|
g_servoMotorLinkList.vertMotor.linkListNum = highPriority;
|
||||||
CommuTransData(V_MOTOR, g_servoMotorLinkList.vertMotor.LinkListHead_H->data
|
CommuTransData(V_MOTOR, g_servoMotorLinkList.vertMotor.LinkListHead_H->data
|
||||||
, g_servoMotorLinkList.vertMotor.LinkListHead_H->length);
|
, g_servoMotorLinkList.vertMotor.LinkListHead_H->length);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,6 +316,7 @@ static void ptz_vert_servo_task()
|
||||||
else {
|
else {
|
||||||
pdebug(DEBUG_LEVEL_FATAL,"ptz_vert_servo_task no data...\n\r");
|
pdebug(DEBUG_LEVEL_FATAL,"ptz_vert_servo_task no data...\n\r");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -480,7 +484,7 @@ void init_speed_module(void)
|
||||||
if (err != OS_ERR_NONE) {
|
if (err != OS_ERR_NONE) {
|
||||||
pdebug(DEBUG_LEVEL_FATAL, "Failed to create the motor memory pool\n\r");
|
pdebug(DEBUG_LEVEL_FATAL, "Failed to create the motor memory pool\n\r");
|
||||||
}
|
}
|
||||||
|
|
||||||
//初始化链表头尾
|
//初始化链表头尾
|
||||||
g_servoMotorLinkList.horiMotor.LinkListHead_H = NULL;
|
g_servoMotorLinkList.horiMotor.LinkListHead_H = NULL;
|
||||||
g_servoMotorLinkList.horiMotor.LinkListHead_L = NULL;
|
g_servoMotorLinkList.horiMotor.LinkListHead_L = NULL;
|
||||||
|
@ -506,10 +510,9 @@ void init_speed_module(void)
|
||||||
|
|
||||||
OSTimeDlyHMSM(0u, 0u, 0u, 500u);//等待硬件初始化成功
|
OSTimeDlyHMSM(0u, 0u, 0u, 500u);//等待硬件初始化成功
|
||||||
|
|
||||||
uint8_t buffer[20] = {0};
|
|
||||||
uint8_t buffer_len = 0;
|
// servoSendData(horiMotorType, WriteMotorOneReg(H_MOTOR, H02_CONTR_MODE_SELEC, 0),
|
||||||
buffer_len = WriteMotorOneReg_buffer(H_MOTOR, H02_CONTR_MODE_SELEC, 0, buffer);
|
// WRITE_ONE_REG_FRAME_NUM, lowPriority);
|
||||||
servoSendData(horiMotorType, buffer, buffer_len, lowPriority);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ void ptz_send_speed(char dev, char speed);
|
||||||
void init_speed_module(void);
|
void init_speed_module(void);
|
||||||
|
|
||||||
void servoSendData(uint8_t motor,uint8_t *data, uint8_t dataLen, uint8_t priority);
|
void servoSendData(uint8_t motor,uint8_t *data, uint8_t dataLen, uint8_t priority);
|
||||||
void servoHoriLinkListMemPut(uint8_t motorType);
|
void servoLinkListMemPut(uint8_t motorType);
|
||||||
void stopTimeOut(uint8_t motorType);
|
void stopTimeOut(uint8_t motorType);
|
||||||
void startTimeOut(uint8_t motorType);
|
void startTimeOut(uint8_t motorType);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#include "motorCommu.h"
|
#include "motorCommu.h"
|
||||||
#include "servoMotor_recv.h"
|
#include "servoMotor_recv.h"
|
||||||
|
#include "speed_to_servoMotor.h"
|
||||||
/*
|
/*
|
||||||
********************************************************************************************************
|
********************************************************************************************************
|
||||||
* 电机串口通讯驱动初始化相关结构体
|
* 电机串口通讯驱动初始化相关结构体
|
||||||
|
@ -302,6 +302,7 @@ void DMA0_Channel3_IRQHandler(void)
|
||||||
|
|
||||||
CommuInfo_t *pCommuDeal = g_commuInfoBuff[H_MOTOR].pCommuInfo;
|
CommuInfo_t *pCommuDeal = g_commuInfoBuff[H_MOTOR].pCommuInfo;
|
||||||
while(usart_flag_get(g_motorCommuBuff[H_MOTOR].uartNo, USART_FLAG_TC) == RESET); // 等待串口发送完成
|
while(usart_flag_get(g_motorCommuBuff[H_MOTOR].uartNo, USART_FLAG_TC) == RESET); // 等待串口发送完成
|
||||||
|
servoLinkListMemPut(horiMotorType);
|
||||||
H_COMMU_RS485_RX; //485切换为接收
|
H_COMMU_RS485_RX; //485切换为接收
|
||||||
pCommuDeal->dmaTranFlag = DMA_TRANS_IDLE;
|
pCommuDeal->dmaTranFlag = DMA_TRANS_IDLE;
|
||||||
}
|
}
|
||||||
|
@ -378,6 +379,7 @@ void DMA1_Channel7_IRQHandler(void)
|
||||||
CommuInfo_t *pCommuDeal = g_commuInfoBuff[V_MOTOR].pCommuInfo;
|
CommuInfo_t *pCommuDeal = g_commuInfoBuff[V_MOTOR].pCommuInfo;
|
||||||
|
|
||||||
while(usart_flag_get(g_motorCommuBuff[V_MOTOR].uartNo, USART_FLAG_TC) == RESET); // 等待串口发送完成
|
while(usart_flag_get(g_motorCommuBuff[V_MOTOR].uartNo, USART_FLAG_TC) == RESET); // 等待串口发送完成
|
||||||
|
servoLinkListMemPut(vertMotorType);
|
||||||
V_COMMU_RS485_RX; //485切换为接收
|
V_COMMU_RS485_RX; //485切换为接收
|
||||||
pCommuDeal->dmaTranFlag = DMA_TRANS_IDLE;
|
pCommuDeal->dmaTranFlag = DMA_TRANS_IDLE;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue