Exemple #1
0
    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);
    }
Exemple #2
0
 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);
         }
     }
 }
Exemple #3
0
 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);
     }
 }