/** * 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; }
/** * Switch on the low side only */ void pwm_all_lo(void) { pwm_set_all_low(); pwm_comm(); }
/** * Switch on high side only */ void pwm_all_hi(void) { pwm_set_all_high(); pwm_comm(); }
/** * Switch off all outputs */ void pwm_off(void) { pwm_set_all_off(); pwm_comm(); }