/** * @file MOTOR_STEP_ATY.h * * @param Project DEVICE_GENERAL_ATY_LIB * * @author ATY * * @copyright * - Copyright 2017 - 2023 MZ-ATY * - This code follows: * - MZ-ATY Various Contents Joint Statement - * * https://mengze.top/MZ-ATY_VCJS * - CC 4.0 BY-NC-SA - * * https://creativecommons.org/licenses/by-nc-sa/4.0/ * - Your use will be deemed to have accepted the terms of this statement. * * @brief Familiar functions of SteppingMotor control * * @version * - 1_01_221231 > ATY * -# Preliminary version, first Release * - 1_02_230408 > ATY * -# Add State Machine and so * - 1_03_230426 > ATY * -# Change name "SteppingMotor_ATY" to "MOTOR_STEP_ATY" ******************************************************************************** */ #ifndef __MOTOR_STEP_ATY_H #define __MOTOR_STEP_ATY_H #include "INCLUDE_ATY.h" #include "HW_GPIO_ATY.h" #include "HW_PWM_ATY.h" /******************************* For user *************************************/ // #define __DEBUG_MOTOR_STEP_ATY #define Motor_Channel 8 /******************************************************************************/ extern uint8_t motorEn; extern uint8_t motorDir; extern uint32_t motorSoftSpeed; extern uint32_t motorSpeed; extern uint32_t motorSoftTime; extern uint32_t motorTime; extern uint32_t motorStartCounter; extern uint32_t motorStopCounter; // for stall detection or driver error(TMC2209) extern uint8_t motorSetState; // 0: stop, 1: start hold, 2: start soft, 3: run speed, 4: change dir, 5: stop state, soft set 0 after use #define MOTOR_EN_SET_ENABLE \ do{GPIO_SET_L(MOTOR_EN_PORT, MOTOR_EN_PIN); motorEn = 1;}while(0) #define MOTOR_EN_SET_DISABLE \ do{GPIO_SET_H(MOTOR_EN_PORT, MOTOR_EN_PIN); motorEn = 0;}while(0) #define MOTOR_DIR_OUT 0 #define MOTOR_DIR_IN 1 #define MOTOR_DIR_SET_IN \ do{ \ if(MOTOR_DIR_IN) \ GPIO_SET_H(MOTOR_DIR_PORT, MOTOR_DIR_PIN); \ else \ GPIO_SET_L(MOTOR_DIR_PORT, MOTOR_DIR_PIN); \ motorDir = MOTOR_DIR_IN; \ }while(0) #define MOTOR_DIR_SET_OUT \ do{ \ if(MOTOR_DIR_OUT) \ GPIO_SET_H(MOTOR_DIR_PORT, MOTOR_DIR_PIN); \ else \ GPIO_SET_L(MOTOR_DIR_PORT, MOTOR_DIR_PIN); \ motorDir = MOTOR_DIR_OUT; \ }while(0) #define MOTOR_STEP_SET_H \ (GPIO_SET_H(MOTOR_STEP_PORT, MOTOR_STEP_PIN)) #define MOTOR_STEP_SET_L \ (GPIO_SET_L(MOTOR_STEP_PORT, MOTOR_STEP_PIN)) #define MOTOR_DIAG_GET_H (GPIO_GET_H(MOTOR_DIAG_PORT, MOTOR_DIAG_PIN)) #define MOTOR_DIAG_GET_L (GPIO_GET_L(MOTOR_DIAG_PORT, MOTOR_DIAG_PIN)) #define MOTOR_PARAM_SET(dir, softSpeed, speed, softTime, time, setState) \ do \ { \ motorDir = (uint8_t)dir; \ motorSoftSpeed = (uint32_t)softSpeed; \ motorSpeed = (uint32_t)speed; \ motorSoftTime = (uint32_t)softTime; \ motorTime = (uint32_t)time; \ motorSetState = (uint8_t)setState; \ } while(0) void MotorStart(uint8_t dir, uint32_t speed); void MotorStartSpeed(uint32_t speed); void MotorStop(void); void MotorStateMachine_Step(void); #endif /* __MOTOR_STEP_ATY_H */ /******************************** End Of File *********************************/