コード例 #1
0
ファイル: PID.c プロジェクト: NeuronRobotics/dyio
int resetPositionMine(int group, int current){
	if(dyPid[group].inputChannel==DYPID_NON_USED)
			return current;
	if(dyPid[group].inputMode == IS_COUNTER_INPUT_INT){
		SetCounterInput(dyPid[group].inputChannel,current);
	}else if(dyPid[group].inputMode == IS_ANALOG_IN){
		current=GetValFromAsync(dyPid[group].inputChannel);
	}else if(dyPid[group].inputMode == IS_DI){
		current=GetDigitalValFromAsync(dyPid[group].inputChannel);
	}
	return current;
}
コード例 #2
0
ファイル: PID.c プロジェクト: madhephaestus/bowler-bootloader
float getPositionMine(int group){
	if(dyPid[group].inputChannel==DYPID_NON_USED||
			((pidGroups[group].Enabled == FALSE) && (vel[group].enabled==FALSE)))
		return 0;

	LONG pos = 0;
	//print_I("\nGetting PID value from group: ");p_int_I(chan->channel);print_I(" of mode: ");printMode(chan->inputMode);print_I(" From channel: ");p_int_I(chan->inputChannel);print_I("\n");
	switch(dyPid[group].inputMode){
	case IS_COUNTER_INPUT_INT:
	case IS_COUNTER_INPUT_DIR:
	case IS_COUNTER_INPUT_HOME:
		pos=GetCounterByChannel( dyPid[group].inputChannel );
		break;
	case IS_ANALOG_IN:
		pos=GetValFromAsync(dyPid[group].inputChannel);
		break;
	case IS_DI:
		pos = GetDigitalValFromAsync(dyPid[group].inputChannel);
		break;
	}
	return ((float)pos);
}
コード例 #3
0
ファイル: PID.c プロジェクト: NeuronRobotics/dyio
float getPositionMine(int group){
	if(dyPid[group].inputChannel==DYPID_NON_USED || !pidGroups[group].config.Enabled)
		return 0;

	int32_t pos = 0;

	switch(dyPid[group].inputMode){
	case IS_COUNTER_INPUT_INT:
	case IS_COUNTER_INPUT_DIR:
	case IS_COUNTER_INPUT_HOME:
		pos=GetCounterByChannel( dyPid[group].inputChannel );
		break;
	case IS_ANALOG_IN:
		pos=GetValFromAsync(dyPid[group].inputChannel);
		break;
	case IS_DI:
		pos = GetDigitalValFromAsync(dyPid[group].inputChannel);
		break;
            default:
                return 0;
	}
	//println_W("Get PID ");p_int_W(group);print_W(" is ");p_int_W(pos);
	return ((float)pos);
}