Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //---------------------------------------------------------------------------
- #include "sio_util.h"
- //--------------------- Stepper Module specific stuff ---------------------------
- typedef struct _STEPMOD {
- long pos; //current position
- byte ad; //a/d value
- unsigned short int st; //current step time
- byte inbyte; //input bits
- long home; //home position
- //The following data is stored locally for reference
- long cmdpos; //last commanded position
- byte cmdspeed; //last commanded speed
- byte cmdacc; //last commanded acceleration
- short int cmdst; //last commanded step time
- double st_period;
- byte move_mode; //last commanded move mode
- byte min_speed; //minimum running speed
- byte stopctrl; //stop control byte
- byte outbyte; //output bits
- byte homectrl; //homing control byte
- byte ctrlmode; //operating control mode byte
- byte run_pwm; //pwm for running current limit
- byte hold_pwm; //pwm for holding current limit
- byte therm_limit; //thermal limit
- byte emergency_acc;
- byte stat_io; //IO byte, returned in status packet
- } STEPMOD;
- //Step Module Command set:
- #define RESET_POS 0x00 //Reset encoder counter to 0 (0 bytes)
- #define SET_ADDR 0x01 //Set address and group address (2 bytes)
- #define DEF_STAT 0x02 //Define status items to return (1 byte)
- #define READ_STAT 0x03 //Read value of current status items
- #define LOAD_TRAJ 0x04 //Load trajectory data
- #define START_MOVE 0x05 //Start pre-loaded trajectory (0 bytes)
- #define SET_PARAM 0x06 //Set operating parameters (6 bytes)
- #define STOP_MOTOR 0x07 //Stop motor (1 byte)
- #define SET_OUTPUTS 0x08 //Set output bits (1 byte)
- #define SET_HOMING 0x09 //Define homing mode (1 byte)
- #define SET_BAUD 0x0A //Set the baud rate (1 byte)
- #define RESERVED 0x0B //
- #define SAVE_AS_HOME 0x0C //Store the input bytes and timer val (0 bytes)
- #define NOT_USED 0x0D
- #define NOP 0x0E //No operation - returns prev. defined status (0 bytes)
- #define HARD_RESET 0x0F //RESET - no status is returned
- //Step Module STATUSITEMS bit definitions:
- #define SEND_POS 0x01 //4 bytes data
- #define SEND_AD 0x02 //1 byte
- #define SEND_ST 0x04 //2 bytes
- #define SEND_INBYTE 0x08 //1 byte
- #define SEND_HOME 0x10 //4 bytes
- #define SEND_ID 0x20 //2 bytes
- #define SEND_OUT 0x40 //1 byte
- //Step Module LOAD_TRAJ control byte bit definitions:
- #define LOAD_POS 0x01 //+4 bytes
- #define LOAD_SPEED 0x02 //+1 bytes
- #define LOAD_ACC 0x04 //+1 bytes
- #define LOAD_ST 0x08 //+3 bytes
- #define STEP_REV 0x10 //reverse dir
- #define START_NOW 0x80 //1 = start now, 0 = wait for START_MOVE command
- //Step Module SET_PARAM operating mode byte bit definitions:
- #define SPEED_8X 0x00 //use 8x timing
- #define SPEED_4X 0x01 //use 4x timing
- #define SPEED_2X 0x02 //use 2x timing
- #define SPEED_1X 0x03 //use 1x timing
- #define IGNORE_LIMITS 0x04 //Do not stop automatically on limit switches
- #define MOFF_LIMIT 0x08 //Turn Off Motor on Limit
- #define MOFF_STOP 0x10 //Turn Off motor on Stop
- //Step Module STOP_MOTOR control byte bit definitions:
- #define STP_ENABLE_AMP 0x01 //1 = raise amp enable output, 0 = lower amp enable
- #define STOP_ABRUPT 0x04 //set to stop motor immediately
- #define STOP_SMOOTH 0x08 //set to decellerate motor smoothly
- //Step Module SET_HOMING control byte bit definitions:
- #define ON_LIMIT1 0x01 //home on change in limit 1
- #define ON_LIMIT2 0x02 //home on change in limit 2
- #define HOME_MOTOR_OFF 0x04 //turn motor off when homed
- #define ON_HOMESW 0x08 //home on change in index
- #define HOME_STOP_ABRUPT 0x10 //stop abruptly when homed
- #define HOME_STOP_SMOOTH 0x20 //stop smoothly when homed
- //Step Module Status byte bit definitions:
- #define MOTOR_MOVING 0x01 //Set when motor is moving
- #define CKSUM_ERROR 0x02 //checksum error in received command
- #define STP_AMP_ENABLED 0x04 //set if amplifier is enabled
- #define POWER_ON 0x08 //set when motor power is on
- #define AT_SPEED 0x10 //set if the commanded velocity is reached.
- #define VEL_MODE 0x20 //set when in velocity profile mode
- #define TRAP_MODE 0x40 //set when in trap. profile mode
- #define HOME_IN_PROG 0x80 //set while searching for home, cleared when home found
- //Step Module Input byte bit definitions:
- #define ESTOP 0x01 //emergency stop input
- #define AUX_IN1 0x02 //auxilliary input #1
- #define AUX_IN2 0x04 //auxilliary input #2
- #define FWD_LIMIT 0x08 //forward limit switch
- #define REV_LIMIT 0x10 //reverse limit switch
- #define HOME_SWITCH 0x20 //homing limit switch
- //Step module function prototypes:
- STEPMOD * StepNewMod();
- DLLENTRY(BOOL) StepGetStat(byte addr);
- DLLENTRY(long) StepGetPos(byte addr);
- DLLENTRY(byte) StepGetAD(byte addr);
- DLLENTRY(unsigned short int) StepGetStepTime(byte addr);
- DLLENTRY(byte) StepGetInbyte(byte addr);
- DLLENTRY(long) StepGetHome(byte addr);
- DLLENTRY(byte) StepGetIObyte(byte addr);
- DLLENTRY(byte) StepGetMvMode(byte addr);
- DLLENTRY(long) StepGetCmdPos(byte addr);
- DLLENTRY(byte) StepGetCmdSpeed(byte addr);
- DLLENTRY(byte) StepGetCmdAcc(byte addr);
- DLLENTRY(unsigned short int) StepGetCmdST(byte addr);
- DLLENTRY(double) StepGetStepPeriod(byte addr);
- DLLENTRY(byte) StepGetCtrlMode(byte addr);
- DLLENTRY(byte) StepGetMinSpeed(byte addr);
- DLLENTRY(byte) StepGetRunCurrent(byte addr);
- DLLENTRY(byte) StepGetHoldCurrent(byte addr);
- DLLENTRY(byte) StepGetThermLimit(byte addr);
- DLLENTRY(byte) StepGetEmAcc(byte addr);
- DLLENTRY(byte) StepGetOutputs(byte addr);
- DLLENTRY(byte) StepGetHomeCtrl(byte addr);
- DLLENTRY(byte) StepGetStopCtrl(byte addr);
- DLLENTRY(BOOL) StepSetParam(byte addr, byte mode,
- byte minspeed, byte runcur, byte holdcur, byte thermlim, byte em_acc = 255);
- DLLENTRY(BOOL) StepLoadTraj(byte addr, byte mode, long pos, byte speed, byte acc, unsigned short int steptime);
- DLLENTRY(BOOL) StepLoadUnprofiledTraj(byte addr, byte mode, long pos, double step_period);
- DLLENTRY(BOOL) StepResetPos(byte addr);
- DLLENTRY(BOOL) StepStopMotor(byte addr, byte mode);
- DLLENTRY(BOOL) StepSetOutputs(byte addr, byte outbyte);
- DLLENTRY(BOOL) StepSetHoming(byte addr, byte mode);
- DLLENTRY(int) StepsPerSec2StepTime(double StepsPerSecond, int SpeedFactor);
- DLLENTRY(double) StepTime2StepsPerSec(int InitialTimerCount, int SpeedFactor);
- DLLENTRY(double) StepsPerSec2mSecPerStep(double StepsPerSecond);
- DLLENTRY(double) mSecPerStep2StepsPerSec(double mSecPerStep);
- DLLENTRY(double) MinStepPeriod(int SpeedFactor);
- DLLENTRY(double) MaxStepPeriod(int SpeedFactor);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement