optical/NxFuncs/closedriver/driversctrl.h
2025-09-04 09:45:08 +08:00

63 lines
1.3 KiB
C

#ifndef __DRIVERSCTRL_H__
#define __DRIVERSCTRL_H__
#include "config.h"
#ifndef DRIVERS_NUM
#define DRIVERS_NUM 0
#endif
// 最多支持4路电机
#if (DRIVERS_NUM > 4)
#undef DRIVERS_NUM
#define DRIVERS_NUM 4
#endif
#define DRIVER1_IDX 0
#define DRIVER2_IDX 1
#define DRIVER3_IDX 2
#define DRIVER4_IDX 3
//--------------------------------------------
// 错误代码定义
#define DR_ERR_POS 0x01 // 位置误差过大
// 状态定义
#define DR_ERR_ZERO 0x101 // 电机找零
#define DR_STA_DIS 0x102 // 电机失能
//--------------------------------------------
void InitDriversCtrl(void);
void DriversCtrlIntProc(void);
void CPURateIntProc(int section);
u32 GetDrvErrorCode(int driverIdx);
void CleanDrvErrorCode(int driverIdx);
void SetDrvErrorCode(int driverIdx, int code);
void DriverRunTask(void);
void SetOpenRunCircle(int driverIdx, int circle);
void SetOpenLockCircle(int driverIdx, int circle);
void SetOpenMaxOffset(int driverIdx, int maxofst);
s32 GetClosePositionFromEcd(int driverIdx);
void SetCloseCircle(int driverIdx, int circle);
void ResetDriverPos(int driverIdx, s32 pos);
void SetDriverTargetPos(int driverIdx, s32 tpos);
void SetDriverOffset(int driverIdx, s32 ofst);
void SetDriverCtrlMode(int driverIdx, int mode);
void SetEnableCtrl(int driverIdx, int enbit);
//--------------------------------------------
#endif