реклама на сайте
подробности

 
 
> Сброс таймера захвата STM32F100, Автоматический сброс
ELEKTROS
сообщение Jul 11 2011, 10:36
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Скажите к примеру конфирурирую TIM2 на захват:
Код
  TIM_ICInitStruct.TIM_Channel=TIM_Channel_1;
  TIM_ICInitStruct.TIM_ICPolarity=TIM_ICPolarity_Falling;
  TIM_ICInitStruct.TIM_ICSelection=TIM_ICSelection_DirectTI;
  TIM_ICInitStruct.TIM_ICPrescaler=TIM_ICPSC_DIV1;
  TIM_ICInitStruct.TIM_ICFilter=0;
  TIM_ICInit(TIM2, &TIM_ICInitStruct);

Будет ли таймер сбрасываться сам при захвате? или нужно обнулять счётчик вручную? или где еще чего прописать чтобы он сам сбрасывался?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ELEKTROS
сообщение Sep 15 2011, 13:12
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



уже совсем незнаю что делать.
Вот прерывание по захвату диапазон частоты 0-1500Гц, неправильно меряет. TIM2 настроен с частотой 24МГц, захват по переднему фронту с нулевым фильтром, по идее TIM2 не будет переполняться при частоте больше 366Гц, при входном сигнале 150Гц, 30Гц заходит в условие if(perepolnenia_T2==0) когда perepolnenia_T2=0, что впринципе указавает на то что либо таймер не успевает переполниться, что ерунда какаято получается. Подскажите какая особенность может в работе с захватом? Ну погрешность, но не такая же.
Код
void TIM2_IRQHandler(void)
{
  if(TIM_GetITStatus(TIM2,TIM_IT_CC1)!=RESET)
  {
  TIM2->SR = (uint16_t)~TIM_IT_CC1;
  TIM2->CNT=0;
  u32 temp_freq=freq;
  count_deg_A=0;
  count_deg_C=180;  
  if(perepolnenia_T2==0)
  {
    freq=(TIM2->CCR1)/10;
    freq=FREQ_CPU/freq; }
  }
  else
  {
    temp_freq=(TIM2->CCR1)+0xFFFF*perepolnenia_T2;
    temp_freq=temp_freq/10;
    freq=(uint16_t)(FREQ_CPU/temp_freq);
  }
  perepolnenia_T2=0;
  n_speed=6*freq/Z_ROTOR;
  }
  
  if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)
  {
  TIM2->SR = (uint16_t)~TIM_IT_Update;
  perepolnenia_T2++;
  if(perepolnenia_T2>3001)
    {
    freq=0;
    n_speed=0;
    }
  
  }
}

Или может есть у кого исходник для определения частоты сигнала в диапазоне 0-1500 Гц.

Сообщение отредактировал ELEKTROS - Sep 15 2011, 13:38
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01356 секунд с 7
ELECTRONIX ©2004-2016