Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: аппаратный старт АЦП от таймера - не заводится
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Huston007
Пытаюсь сделать старт АЦП от внешнего события - TIM3_CC1. Событие происходит, соответствующее прерывание вызывается, но АЦП не стартует. Можно конечно софтварно стартовать АЦП в прерывании, но хочется обойтись без этого - скорости большие, даже самые незначительные замедления ни к чему.

АЦП инициализирую так:

CODE
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising ;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_CC1;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion = 1;
ADC_Init(ADC2, &ADC_InitStructure);



Таймер так:
CODE
TIM_TimeBaseStructure.TIM_Period = 50000; //период будет изменяться
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV2;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);



А вообще вся эта возня для того, чтобы выполнять преобразования АЦП с частотой в N раз больше, чем внешний тактовый сигнал. Т.Е. другой таймер измеряет период внешнего сигнала и выставляет период этого TIM3 в N раз меньше.
Huston007
Разобрался - надо было output capture запустить
CODE
/* Output Compare Toggle Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OC1Init(TIM3, &TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.