示例#1
0
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);
}
示例#2
0
文件: PID.c 项目: NeuronRobotics/dyio
void setOutputMine(int group, float v){

	if( dyPid[group].outputChannel==DYPID_NON_USED|| !pidGroups[group].config.Enabled)
		return;
	Print_Level l = getPrintLevel();
	//setPrintLevelNoPrint();
	int val = (int)(v);

	if(dyPid[group].outputMode == IS_SERVO){
		val += 128;
		if (val>255)
			val=255;
		if(val<0)
			val=0;
	}else if(dyPid[group].outputMode == IS_DO){
		if(val>0)
			val=1;
		else
			val=0;
	}else{
		val += 128;
		if (val>255)
			val=255;
		if(val<0)
			val=0;
	}
	int set = (int)val;
	//print_W("  set ");p_int_W(group);print_W(" to ");p_int_W(set);

	dyPid[group].outVal=set;

	SetChannelValueCoProc(dyPid[group].outputChannel,dyPid[group].outVal);
	setPrintLevel(l);
}
示例#3
0
void setOutputMine(int group, float v){

	if( dyPid[group].outputChannel==DYPID_NON_USED||
			((pidGroups[group].Enabled == FALSE) && (vel[group].enabled==FALSE)))
		return;
	Print_Level l = getPrintLevel();
	setPrintLevelNoPrint();
	int val = (int)(v);
	//BYTE center = getBcsIoDataTable()[dyPid[group].outputChannel].PIN.currentConfiguration;

	if(dyPid[group].outputMode == IS_SERVO){
		val += 128;
		if (val>254)
			val=254;
		if(val<0)
			val=0;
	}else if(dyPid[group].outputMode == IS_DO){
		if(val>0)
			val=1;
		else
			val=0;
	}else{
		val += 128;
		if (val>255)
			val=255;
		if(val<0)
			val=0;
	}
	int set = (int)val;
	if (dyPid[group].outVal==set){
		//if(!(RunEvery(&force[chan->channel])>0))
			return;
	}else{
		print_I(" Setting PID output, was ");p_int_I(dyPid[group].outVal);print_I(" is now: ");p_int_I(set);print_I(" on DyIO chan: ");p_int_I(dyPid[group].outputChannel);print_I(", ");
	}
	dyPid[group].outVal=set;

	println_I("PID setting output for group: ");p_int_I(group);
	SetChannelValueCoProc(dyPid[group].outputChannel,dyPid[group].outVal);
	setPrintLevel(l);
}