UINT16 GetChanVal(BYTE pin){
	UINT16 val;
	BYTE mode = GetChannelMode(pin);
	switch (mode){
	case HIGH_IMPEDANCE:
		val=1;
		break;
	case IS_DI:
	case IS_DO:
	case IS_COUNTER_INPUT_HOME:
	case IS_COUNTER_OUTPUT_HOME:
		val = GetDIO(pin);
		break;
	case IS_SERVO:
		val = GetServoPos(pin);
		break;
	case IS_PWM:
		val = GetPWM(pin);
		break;
	case IS_DC_MOTOR_VEL:
	case IS_DC_MOTOR_DIR:
		val = GetDCMotor(pin);
		break;
	case IS_ANALOG_IN:
		val=GetADC(pin);
		break;
	default:
		val=1;
		break;
	}
	return val;
}
Beispiel #2
0
void initPinState(uint8_t i){
	uint8_t mode =GetChannelMode(i);
	if ((mode == IS_ANALOG_IN) ){
		setDataTableCurrentValue(i,GetADC(i));
	}else if(((mode == IS_DI) )  || ((mode == IS_COUNTER_INPUT_HOME)||(mode == IS_COUNTER_OUTPUT_HOME))){
		setDataTableCurrentValue(i,GetDIO(i)?1:0);
	}else{
		//setDataTableCurrentValue(i,0);
	}
}
Beispiel #3
0
boolean checkDigital(){
	int i;
	for(i=0;i<GetNumberOfIOChannels();i++){
		uint8_t mode = GetChannelMode(i);
		boolean run = (((mode == IS_DI) )  || ((mode == IS_COUNTER_INPUT_HOME)||(mode == IS_COUNTER_OUTPUT_HOME) || (mode == IS_SERVO)));
		if (run){
			if(mode == IS_SERVO){
				//setDataTableCurrentValue(i,GetServoPos(i));
			}else{
				if(GetValFromAsync(i) != GetDIO(i)){
					setDataTableCurrentValue(i,GetDIO(i));
					//printAsync();
				}
			}
		}
		if(mode == IS_UART_RX){
			setDataTableCurrentValue(i,Get_UART_Byte_CountPassThrough());
		}
	}
	return true; 
}