Esempio n. 1
0
static void setIdleValvePwm(int value) {
	// todo: change parameter type, maybe change parameter validation?
	if (value < 1 || value > 999)
		return;
	scheduleMsg(&logger, "setting idle valve PWM %d", value);
	/**
	 * currently IDEL level is an integer per mil (0-1000 range), and PWM takes a fioat in the 0..1 range
	 * todo: unify?
	 */
	setSimplePwmDutyCycle(&idleValve, 0.001 * value);
}
Esempio n. 2
0
static msg_t AltCtrlThread(int param) {
	chRegSetThreadName("AlternatorController");
	int alternatorDutyCycle = 500;
	while (TRUE) {
		chThdSleepMilliseconds(10);

		if ( getVBatt() > 14.2 )
			alternatorDutyCycle = alternatorDutyCycle + 1 ;
			else
			alternatorDutyCycle = alternatorDutyCycle - 1;


		if (alternatorDutyCycle < 150 )
			alternatorDutyCycle = 150;
		if (alternatorDutyCycle > 950)
			alternatorDutyCycle = 950;
		setSimplePwmDutyCycle(&alternatorControl, 0.001 * alternatorDutyCycle);
	}
#if defined __GNUC__
	return -1;
#endif
}