2018-05-02 03:34 AM
I know this is an old problem but I really cannot figure out.
My intention is to use timer 15 as a trigger source with setting equal to 1kHz. Then by enabling ADC interrupt using EOC flag I think I could have an ADC interrupt of 1kHz used to convert 5 channels (they are not sampling at the same rate, so I want to use this ADC interrupt to set another time period.....)
I have the below source code: I could not enter the interrupt routine even one time.
void initADC(void)
{
ADC1->CFGR1 =
_VAL2FLD(ADC_CFGR1_DISCEN, 1) | // discontinuous mode _VAL2FLD(ADC_CFGR1_AUTOFF, 0) | _VAL2FLD(ADC_CFGR1_WAIT, 0) | _VAL2FLD(ADC_CFGR1_CONT, 0) | _VAL2FLD(ADC_CFGR1_OVRMOD, 0) | _VAL2FLD(ADC_CFGR1_EXTEN, 1) | _VAL2FLD(ADC_CFGR1_EXTSEL, 4) | _VAL2FLD(ADC_CFGR1_ALIGN, 0) | // data right aligned _VAL2FLD(ADC_CFGR1_RES, 0) | // 12 bit resolution _VAL2FLD(ADC_CFGR1_SCANDIR, 0) | // upward scan _VAL2FLD(ADC_CFGR1_DMACFG, 1) | // DMA circular mode _VAL2FLD(ADC_CFGR1_DMAEN, 0); // DMA disabled ADC1->CFGR2 |= ADC_CFGR2_CKMODE_0; // sampling time set to 28.5 ADC clock cycles: ADC1->SMPR = _VAL2FLD(ADC_SMPR_SMP, 3); //I have 5 channels but just test one channel first ADC1->CHSELR = ADC_CHSELR_CHSEL1; //| //PA1 //ADC_CHSELR_CHSEL8 | //PB0 //ADC_CHSELR_CHSEL9; //PB1 ADC1->IER |= ADC_IER_EOCIE; cfp_SetBit(&ADC1->ISR, ADC_ISR_ADRDY); // clear ready flag cfp_SetBit(&ADC1->CR, ADC_CR_ADEN); while (!cfp_IsBitSet(ADC1->ISR, ADC_ISR_ADRDY)) { ; } cpu_EnableInterrupt(ADC1_COMP_IRQn); //init timer 15 TIM15->PSC = 47; //48MHz / 48 TIM15->ARR = 999; //set to 1kHz TIM15->CCR2 |= TIM_CR2_MMS_1; TIM15->EGR |= TIM_EGR_UG; TIM15->CR1 |= TIM_CR1_CEN; cfp_SetBit(&ADC1->ISR, ADC_ISR_EOS); // clear end of sequence flag cfp_SetBit(&ADC1->CR, ADC_CR_ADSTART);}
void ADC1_COMP_IRQHandler(void)
{ if( (ADC1->ISR & ADC_ISR_EOC) ) { ADC1->ISR &= ~(ADC_ISR_EOC); digio_ToggleOutputValue(GPIOB, 14); } }Thank you in advance for any help...........
2018-05-02 08:19 PM
I solve it, thanks all.
2018-05-07 05:14 AM
Hello
paul.ngai
,It will be more interesting to let us know how you resolved this issue. It may be helpful for forum users.
Best Regards,
Imen
2018-09-17 02:46 PM
@Imen DAHMEN, There is also a video in youtube with the key word ADC TIMER