⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d_output.h

📁 乐高机器人的源码,开发平台是IAR_for_AVR.
💻 H
字号:
//
// Date init       14.12.2004
//
// Revision date   $Date:: 16-05-06 12:13                                    $
//
// Filename        $Workfile:: d_output.h                                    $
//
// Version         $Revision:: 48                                            $
//
// Archive         $Archive:: /LMS2006/Sys01/Main/Firmware/Source/d_output.h $
//
// Platform        C
//

#ifndef   D_OUTPUT
#define   D_OUTPUT

#define   NEW_MOTOR

#ifdef    NEW_MOTOR

//Constant reffering to new motor
#define REG_CONST_DIV           32            // Constant which the PID constants value will be divided with
#define DEFAULT_P_GAIN_FACTOR		96//3                            
#define DEFAULT_I_GAIN_FACTOR		32//1                       
#define DEFAULT_D_GAIN_FACTOR		32//1
#define MIN_MOVEMENT_POWER      10
#define MAX_CAPTURE_COUNT       100

#else

//Constant reffering to Old motor
#define REG_CONST_DIV           1            // Constant which the PID constants value will be divided with
#define DEFAULT_P_GAIN_FACTOR		3                            
#define DEFAULT_I_GAIN_FACTOR		1                       
#define DEFAULT_D_GAIN_FACTOR		1
#define MIN_MOVEMENT_POWER      30
#define MAX_CAPTURE_COUNT       80            

#endif

//Constant reffering to RegMode parameter
#define REGSTATE_IDLE           0x00
#define REGSTATE_REGULATED      0x01
#define REGSTATE_SYNCHRONE      0x02

//Constant reffering to RunState parameter
#define MOTOR_RUN_STATE_IDLE      0x00
#define MOTOR_RUN_STATE_RAMPUP    0x10
#define MOTOR_RUN_STATE_RUNNING   0x20
#define MOTOR_RUN_STATE_RAMPDOWN  0x40
#define MOTOR_RUN_STATE_HOLD      0x60


enum
{
  MOTOR_A,
  MOTOR_B,
  MOTOR_C
};

void      dOutputInit(void);
void      dOutputExit(void);

void      dOutputCtrl(void);
void      dOutputGetMotorParameters(UBYTE *CurrentMotorSpeed, SLONG *TachoCount, SLONG *BlockTachoCount, UBYTE *RunState, UBYTE *MotorOverloaded, SLONG *RotationCount);
void      dOutputSetMode(UBYTE Motor, UBYTE Mode);
void      dOutputSetSpeed (UBYTE MotorNr, UBYTE NewMotorRunState, SBYTE Speed, SBYTE TurnParameter);
void      dOutputEnableRegulation(UBYTE Motor, UBYTE RegulationMode);
void	    dOutputDisableRegulation(UBYTE Motor);
void      dOutputSetTachoLimit(UBYTE Motor, ULONG TachoCntToTravel);
void      dOutputResetTachoLimit(UBYTE Motor);
void      dOutputResetBlockTachoLimit(UBYTE Motor);
void      dOutputResetRotationCaptureCount(UBYTE MotorNr);
void      dOutputSetPIDParameters(UBYTE Motor, UBYTE NewRegPParameter, UBYTE NewRegIParameter, UBYTE NewRegDParameter); 

void 	    dOutputRegulateMotor(UBYTE MotorNr);
void      dOutputCalculateRampUpParameter(UBYTE MotorNr, ULONG NewTachoLimit);
void      dOutputRampDownFunction(UBYTE MotorNr);
void      dOutputRampUpFunction(UBYTE MotorNr);
void      dOutputTachoLimitControl(UBYTE MotorNr);
void      dOutputCalculateMotorPosition(UBYTE MotorNr);
void      dOutputSyncMotorPosition(UBYTE MotorOne, UBYTE MotorTwo);
void      dOutputMotorReachedTachoLimit(UBYTE MotorNr);
void      dOutputMotorIdleControl(UBYTE MotorNr);
void      dOutputSyncTachoLimitControl(UBYTE MotorNr);
void      dOutputMotorSyncStatus(UBYTE MotorNr, UBYTE *SyncMotorOne, UBYTE *SyncMotorTwo);
void      dOutputResetSyncMotors(UBYTE MotorNr);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -