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);
}
Ejemplo n.º 2
0
void InitServo(uint8_t PIN){
	//println_I("Starting servo");
	ClearPinState(PIN);
	SetPinTris(PIN,OUTPUT);
	//DATA.PIN[PIN].State=IS_SERVO;
	SetServoPos(PIN,EEReadValue(PIN),0);
	if( servoEngineStarted != true){
		servoEngineStarted =true;
		startServoLoops();
	}

}
void ClearPinState(BYTE pin){

	BYTE current = GetChannelMode(pin);

	ClearPWM(pin);
	ClearADC(pin);
	ClearDCMotor(pin);

	if ( (current >= IS_SPI_MOSI)&&(current <= IS_SPI_SCK)){
		EEWriteMode(0,IS_DI);
		EEWriteMode(1,IS_DI);
		EEWriteMode(2,IS_DI);
		EEWriteMode(3,IS_DI);
	}
	if ((current == IS_UART_TX)||(current == IS_UART_RX)){
		StopUartPassThrough(pin);
		EEWriteMode(16,IS_DI);
		EEWriteMode(17,IS_DI);
	}
	SetPinTris(pin,INPUT);
}
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();
}