Witam wszystkich, Czy komuś udało się ustalić częstotliwość próbkowania w tym mikrokontrolerze za pomocą timera TIM0? Ja próbuję, i nie bardzo mi wychodzi. Korzystam z biblioteki za pomocą której skonfigurowałem ADC i TIM0 jak poniżej - niestety przerwanie które wskazuje na to że próbkowanie się zakończyło nie jest generowane. Sam przetwornik oraz timer (konkretnie przerwanie od OC2) działa.
void adc_init () { ADC_InitTypeDef ADC_InitStructure; TIM_InitTypeDef tim_params; EIC_IRQInitTypeDef eic_params; GPIO_InitTypeDef io_params;
MRCC_PeripheralClockConfig ( MRCC_Peripheral_ADC | MRCC_Peripheral_TIM0, ENABLE );
//To jest wyraz aktu desperacji :| io_params.GPIO_Mode = GPIO_Mode_AF_PP; io_params.GPIO_Pin = GPIO_Pin_0; GPIO_Init (GPIO1, &io_params);
ADC_InitStructure.ADC_ConversionMode = ADC_ConversionMode_OneShot; ADC_InitStructure.ADC_ExtTrigger = ADC_ExtTrigger_RisingEdge; ADC_InitStructure.ADC_AutoClockOff = ADC_AutoClockOff_Disable;
//Szybkość próbkowania: 9523.8Hz / 2 ADC_InitStructure.ADC_SamplingPrescaler = 7; ADC_InitStructure.ADC_ConversionPrescaler = 7; ADC_InitStructure.ADC_ChannelNumber = 2;
ADC_InitStructure.ADC_FirstChannel = ADC_CHANNEL0; ADC_Init(&ADC_InitStructure);
ADC_ITConfig(ADC_IT_ECH, ENABLE); ADC_Cmd(ENABLE); ADC_StartCalibration(ADC_CalibAverage_Enable);
eic_params.EIC_IRQChannel = ADC_IRQChannel; eic_params.EIC_IRQChannelPriority = 2; eic_params.EIC_IRQChannelCmd = ENABLE; EIC_IRQInit (&eic_params);
tim_params.TIM_Mode = TIM_Mode_OCActive; tim_params.TIM_Polarity2 = TIM_Polarity2_High; tim_params.TIM_ClockSource = TIM_ClockSource_Internal; tim_params.TIM_CounterMode = TIM_CounterMode_Up; tim_params.TIM_Period = 7; tim_params.TIM_Prescaler = (PCLK / ((tim_params.TIM_Period + 1)
- Fs)) - 1; tim_params.TIM_Channel = TIM_Channel_2; tim_params.TIM_Pulse2 = 4;
TIM_Init (TIM0, &tim_params); TIM_Cmd (TIM0, ENABLE); }
// funkcja obsługi przerwania: void ADC_IRQHandler(void) { ADC_ClearITPendingBit(ADC_IT_ECH); adc_interrupt_routine (); TIM_ForcedOCConfig ( TIM0, TIM_Channel_2, TIM_ForcedAction_InActive ); }