Exemple #1
0
void adc1_2_irq_handler(void){
    uint16_t new_value;

    ADC_ClearITPendingBit(ADC1, ADC_IT_JEOC);

    new_value = ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1);

    if(adc_delay_count == 0)
        adc_filtered = new_value;
    else
        adc_filtered = ((adc_filtered * 3) + new_value) >> 2;

    if(adc_delay_count > 5){
        if(adc_rising){
            if(adc_filtered > adc_level + 100){
                if(adc_count < 3){
                    adc_count++;
                }else{
                    LED_ORANGE_TOGGLE();
                    ADC_ExternalTrigInjectedConvCmd(ADC1, DISABLE);
                    pwm_trig_led=0;
                    if(adc_comm) comm_tim_set_next_comm();
                }
            }
        }else{
            if(adc_filtered < adc_level){
                if(adc_count < 3){
                    adc_count++;
                }else{
                    LED_ORANGE_TOGGLE();
                    ADC_ExternalTrigInjectedConvCmd(ADC1, DISABLE);
                    pwm_trig_led=0;
                    if(adc_comm) comm_tim_set_next_comm();
                }
            }
        }
    }else{
        adc_delay_count++;
    }

}
Exemple #2
0
void tim2_irq_handler(void){
	u16 last_capture_lsb = TIM_GetCapture1(TIM2);
	u16 last_capture_msb = TIM_GetCapture1(TIM3);
	u16 tim_freq_lsb;
	u16 tim_freq_msb;

	if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET){
		TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
		tim_freq_lsb = tim_freq & 0xFFFF;
		tim_freq_msb = tim_freq >> 16;
		TIM_SetCompare1(TIM2, last_capture_lsb + tim_freq_lsb);
		TIM_SetCompare1(TIM3, last_capture_msb + tim_freq_msb);
		if(tim_freq_msb == 0){
			TIM_ITConfig(TIM3, TIM_IT_CC1, DISABLE);
			TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);
		}else{
			TIM_ITConfig(TIM2, TIM_IT_CC1, DISABLE);
			TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE);
		}
		LED_ORANGE_TOGGLE();
	}
Exemple #3
0
void gprot_trigger_output(void *data)
{
	data = data;
	LED_ORANGE_TOGGLE();
	usart_enable_send();
}