void configPinMode(BYTE pin,BYTE mode,BYTE tris,BYTE io){ ClearPinState(pin); SetPinTris(pin,tris); SetDIO(pin,io); getBcsIoDataTable()[pin].PIN.currentChannelMode = mode; EEWriteMode(pin,mode); }
uint8_t pinOn(uint8_t pin){ if(pinServoOk(pin) ==true){ SetDIO(pin,ON); return 1; } return 0; }
void InitPinModes(void){ BYTE i; BYTE mode=0; for (i=0;i<24;i++){ //ClearPinState(i); SetPinTris(i,INPUT); SetDIO(i,0); SetPWM(i,EEReadValue(i)); SetServoPos(i,EEReadValue(i),0); //getBcsIoDataTable()[i].PIN.previousChannelMode=NO_CHANGE; mode=EEReadMode(i); if((mode < 2)||(mode >=IO_MODE_MAX)){ EEWriteMode(i,IS_DI); mode = EEReadMode(i); } getBcsIoDataTable()[i].PIN.currentChannelMode = mode; setMode(i,EEReadMode(i)); } startup = FALSE; //printModes(); }
BOOL SetChanVal(BYTE pin,INT32 bval, float time){ BYTE mode = GetChannelMode(pin); //println_I("Setting channel pos\n\tchan: ");p_int_I(pin);print_I(" \n\tto val: ");p_int_I(bval);print_I("\n\tin time: ");p_fl_I(time); switch (mode){ case IS_DI: case IS_DO: SetDIO(pin,bval); break; case IS_SERVO: SetServoPos(pin,bval,time); break; case IS_PWM: SetPWM(pin,bval); break; case IS_DC_MOTOR_VEL: case IS_DC_MOTOR_DIR: SetDCMotor(pin,bval); break; default: return FALSE; } return TRUE; }
void pinOff(uint8_t pin){ SetDIO(pin,0); }
uint8_t pinOn(uint8_t pin){ SetDIO(pin,1); return 1; }
void pinOff(uint8_t pin){ if(pinServoOk(pin) ==true){ SetDIO(pin,OFF); } }