脱机输出
脱机输出的函数如下:
void MotorsEnable(char motors){
if(motors & (1 << 0)) MOTOR1_ENABLE;
else MOTOR1_DISABLE;
…… _delay_us(5);}
在下面两个地方有调用此函数:GC_EXECUTE_LINE
if (gc.program_flow == PROGRAM_FLOW_COMPLETED_STOP)
{ mc_reset(); MotorsEnable(0);}
和st_wake_up函数中,此函数中直接调用 MotorsEnable(0x07);
需要脱机的时候,主要是遇到M2指令时,M30是复位并回到开头,详见G指令的详细介绍。
http://note.youdao.com/noteshare?id=b9b8f85094fa22f3eeb6f2a15bc6cc23
if (gc.program_flow == PROGRAM_FLOW_COMPLETED) { mc_reset(); }
if (gc.program_flow == PROGRAM_FLOW_COMPLETED_STOP) { mc_reset(); MotorsEnable(0);}
关于限位
输入一共32位,分为4组
#define LIMIT_PIN InputRead(3); //第4组输入,一共4组32位输入
#define X_LIMIT_BIT 6
#define Y_LIMIT_BIT 7
#define Z_LIMIT_BIT 4
现在输入主要在homing_cycle,在调用时,判断
if (limit_state & (1<<Z_LIMIT_BIT)) { out_bits ^= (1<<Z_STEP_BIT); }
输出OutputControl((STEPPING_PORT & ~STEP_MASK) | (out_bits & STEP_MASK));
从这里可以看出,限位开关仅仅在回零点的时候才会使用。
网友评论