static void stepperInterrupt(bool on) { if(on) { mcp_.setupInterruptPin(PIN_FRAME_STOP,CHANGE); mcp_.setupInterruptPin(PIN_STEP_STOP1,CHANGE); mcp_.setupInterruptPin(PIN_STEP_STOP2,CHANGE); if(fan_.tachoActive()) { mcp_.setupInterruptPin(PIN_FAN_TACHO,LOW); mcp_.pullUp(PIN_FAN_TACHO,LOW); } }else{ mcp_.setupInterruptPin(PIN_FRAME_STOP,LOW); mcp_.setupInterruptPin(PIN_STEP_STOP1,LOW); mcp_.setupInterruptPin(PIN_STEP_STOP2,LOW); if(fan_.tachoActive()){ mcp_.setupInterruptPin(PIN_FAN_TACHO,CHANGE); mcp_.pullUp(PIN_FAN_TACHO,HIGH); } } }
static void ioSetup() { digitalWrite(PIN_IO_RST,LOW); delay(100); digitalWrite(PIN_IO_RST,HIGH); delay(100); mcp_.begin(IO_ADDR); mcp_.pinMode(PIN_EP_EN,OUTPUT); mcp_.pinMode(PIN_LED_EN,OUTPUT); mcp_.pinMode(PIN_SRV_EN,OUTPUT); mcp_.pinMode(PIN_FAN_EN,OUTPUT); mcp_.pinMode(PIN_FAN_TACHO,INPUT); mcp_.pinMode(PIN_HOST_INT,OUTPUT); mcp_.pinMode(PIN_STEP_SLP,OUTPUT); mcp_.pullUp(PIN_FRAME_STOP,HIGH); mcp_.pullUp(PIN_STEP_STOP1,HIGH); mcp_.pullUp(PIN_STEP_STOP2,HIGH); mcp_.pullUp(PIN_BTN11,HIGH); mcp_.pullUp(PIN_BTN12,HIGH); mcp_.pullUp(PIN_BTN13,HIGH); mcp_.pullUp(PIN_BTN21,HIGH); mcp_.pullUp(PIN_BTN22,HIGH); mcp_.pullUp(PIN_BTN23,HIGH); mcp_.setupInterruptPin(PIN_BTN11,CHANGE); mcp_.setupInterruptPin(PIN_BTN12,CHANGE); mcp_.setupInterruptPin(PIN_BTN13,CHANGE); mcp_.setupInterruptPin(PIN_BTN21,CHANGE); mcp_.setupInterruptPin(PIN_BTN22,CHANGE); mcp_.setupInterruptPin(PIN_BTN23,CHANGE); mcp_.setupInterrupts(false,false,LOW); if(st_.active()) stepperInterrupt(true); if(fan_.tachoActive()) fanInterrupt(true); }
static void fanInterrupt(bool on) { if(!on || !st_.active()) { mcp_.pullUp(PIN_FAN_TACHO,on?HIGH:LOW); mcp_.setupInterruptPin(PIN_FAN_TACHO,on?CHANGE:LOW); } }