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 InitSPI(void){ println_I("Initializing the SPI perpheral"); mPORTGOpenDrainOpen(BIT_6);// Clock is output mPORTGOpenDrainOpen(BIT_8);// Data Out is an output SPI_SCK_IO=1; SPI_SDO_IO=1; OpenSPI2(SPI_MODE8_ON|ENABLE_SDO_PIN|SLAVE_ENABLE_OFF|SPI_CKE_ON|MASTER_ENABLE_ON|SEC_PRESCAL_8_1|PRI_PRESCAL_64_1, SPI_ENABLE); println_I("Setting up SPI perpheral"); SetCoProcMode(0,IS_SPI_SCK); SetCoProcMode(1,IS_SPI_MISO); SetCoProcMode(2,IS_SPI_MOSI); }
void StopSPI(BYTE pin){ if (isSPI(GetChannelMode(pin))){ CloseSPI2(); _RG6=1; _RG8=1; SDI_TRIS=INPUT; SDO_TRIS=INPUT; SCK_TRIS=INPUT; println_I("Clearing up SPI perpheral"); SetCoProcMode(0,IS_DI); SetCoProcMode(1,IS_DI); SetCoProcMode(2,IS_DI); } }
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; }
void SendPacketToSPIFromArray(BYTE numBytes,BYTE * data){ BYTE ss = data[0]; if(ss<3){ println_I("invalid SS pin"); return; } if(!SetCoProcMode(ss,IS_DO)) SetChannelValueCoProc(ss,1); SetChannelValueCoProc(ss,0); BYTE i; for (i=0;i<numBytes;i++){ data[i+1]=GetByteSPI(data[i+1]); } SetChannelValueCoProc(ss,1); }