void initPIDChans(BYTE group){ if(dyPid[group].inputChannel==DYPID_NON_USED || dyPid[group].outputChannel==DYPID_NON_USED) return; switch(dyPid[group].inputMode){ case IS_COUNTER_INPUT_INT: case IS_COUNTER_INPUT_DIR: case IS_COUNTER_INPUT_HOME: dyPid[group].inputChannel = getCounterIntChannnel( channelToCounterGroup(dyPid[group].inputChannel)); StartCounterInput(dyPid[group].inputChannel); break; } println_I("Setting Modes for PID"); SetCoProcMode(dyPid[group].inputChannel,dyPid[group].inputMode); SetCoProcMode(dyPid[group].outputChannel,dyPid[group].outputMode); SyncModes(); if(dyPid[group].inputMode== IS_ANALOG_IN){ pidGroups[group].SetPoint=GetValFromAsync(dyPid[group].inputChannel); }else{ pidGroups[group].SetPoint=0; } }
void initPIDChans(uint8_t group){ if(dyPid[group].inputChannel==DYPID_NON_USED || dyPid[group].outputChannel==DYPID_NON_USED){ return; } switch(dyPid[group].inputMode){ case IS_COUNTER_INPUT_INT: case IS_COUNTER_INPUT_DIR: case IS_COUNTER_INPUT_HOME: dyPid[group].inputChannel = getCounterIntChannnel( channelToCounterGroup(dyPid[group].inputChannel)); StartCounterInput(dyPid[group].inputChannel); break; } // println_W("PID In chan: "); // p_int_W(dyPid[group].inputChannel); // println_W(" mode: "); // printMode(dyPid[group].inputMode, WARN_PRINT); // println_W("PID Out chan: "); // p_int_W(dyPid[group].outputChannel); // println_W(" mode: "); //printMode(dyPid[group].outputMode, WARN_PRINT); SetCoProcMode(dyPid[group].inputChannel,dyPid[group].inputMode); SetCoProcMode(dyPid[group].outputChannel,dyPid[group].outputMode); //SyncModes(); if(dyPid[group].inputMode== IS_ANALOG_IN){ pidGroups[group].SetPoint=GetValFromAsync(dyPid[group].inputChannel); }else{ pidGroups[group].SetPoint=0; } SetPIDCalibrateionState(group, CALIBRARTION_DONE); getPidGroupDataTable( group)->config.Async=true; //getPidGroupDataTable( group)->config.Enabled=true; }
BOOL setMode(BYTE pin,BYTE mode){ println_I("Setting Mode: ");printMode(mode,INFO_PRINT);print_I(" on: ");p_int_I(pin); BYTE currentMode = GetChannelMode(pin); ClearCounter(pin); StopSPI(pin); clearPPM(pin); print_I(" \tHardware Cleared"); switch (mode){ case IS_SERVO: if(((pin < 12) && (isRegulated_0() == 0)) || ((pin >= 12) && (isRegulated_1()== 0)) ){ print_I("|Mode is now servo"); break; }else{ if(getBrownOutDetect()){ print_I(" Servo Mode could not be set, voltage invalid"); return FALSE; }else{ print_I(" Servo Mode set|"); break; } } break; case IS_SPI_MOSI: case IS_SPI_MISO: case IS_SPI_SCK: if( pinHasFunction(pin, mode) != FALSE){ print_I("|Mode is now SPI"); InitSPI(); break; }else{ return FALSE; } break; case IS_COUNTER_INPUT_INT: case IS_COUNTER_INPUT_DIR: case IS_COUNTER_INPUT_HOME: if(pinHasFunction(pin, mode) != FALSE){ print_I("|Mode is now Counter Input"); StartCounterInput(pin); break; }else{ print_I(", Counter Input not availible"); return FALSE; } break; case IS_COUNTER_OUTPUT_INT: case IS_COUNTER_OUTPUT_DIR: case IS_COUNTER_OUTPUT_HOME: if(pinHasFunction(pin, mode) != FALSE){ print_I("|Mode is now Counter Output"); StartCounterOutput(pin); break; }else{ print_I(", Counter Output not availible"); return FALSE; } break; case IS_PPM_IN: println_I("Setting up PPM..."); startPPM(pin); break; } print_I(" \tMode set"); return TRUE; }