Пример #1
0
/**
 * Automatically called by @ref gprot_register_changed()
 *
 * Implements the logic associated with the application specific flag register.
 */
void gprot_update_flags(void)
{
	if ((gprot_flag_reg & GPROT_FLAG_PWM_COMM) != 0) {
		pwm_comm();
		return;
	}

        if ((gprot_flag_reg & GPROT_FLAG_COMM_TIM) != 0) {
		if ((gprot_flag_reg_old & GPROT_FLAG_COMM_TIM) == 0) {
			control_process_ignite();
		}
	} else {
		if ((gprot_flag_reg_old & GPROT_FLAG_COMM_TIM) != 0) {
			control_process_kill();
		}
	}

	if ((gprot_flag_reg & GPROT_FLAG_ADC_COMM) != 0) {
		demo = true;
	} else {
		if ((gprot_flag_reg_old & GPROT_FLAG_ADC_COMM) != 0) {
			demo = false;
		}
	}

	if ((gprot_flag_reg & GPROT_FLAG_ALL_LO) != 0) {
		pwm_all_lo();
	} else {
		if ((gprot_flag_reg_old & GPROT_FLAG_ALL_LO) != 0) {
			pwm_off();
		}
	}

	if ((gprot_flag_reg & GPROT_FLAG_ALL_HI) != 0) {
		pwm_all_hi();
	} else {
		if ((gprot_flag_reg_old & GPROT_FLAG_ALL_HI) != 0) {
			pwm_off();
		}
	}

	/* add other flags here (up to 16) */

	gprot_flag_reg_old = gprot_flag_reg;
}
Пример #2
0
/**
 * Switch on the low side only
 */
void pwm_all_lo(void)
{
	pwm_set_all_low();
	pwm_comm();
}
Пример #3
0
/**
 * Switch on high side only
 */
void pwm_all_hi(void)
{
	pwm_set_all_high();
	pwm_comm();
}
Пример #4
0
/**
 * Switch off all outputs
 */
void pwm_off(void)
{
	pwm_set_all_off();
	pwm_comm();
}