Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 02.07.2013, 12:39  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию Частотомер на stm32

Подскажите, пожалуйста, как настроить таймер 3 для измерения частоты входного сигнала в stm32f103.
беру пример из стандартной библиотеки. переделываю для входного сигнала на РС7, но перрывания не срабатывает
Код:
void TIM3_IRQHandler(void)
{
uint16_t IC3ReadValue1 = 0, IC3ReadValue2 = 0;
uint16_t CaptureNumber = 0;
uint32_t Capture = 0;
uint32_t TIM3Freq = 0;	
	
  if(TIM_GetITStatus(TIM3, TIM_IT_CC1) == SET) 
  {
    /* Clear TIM3 Capture compare interrupt pending bit */
    TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
    if(CaptureNumber == 0)
    {
      /* Get the Input Capture value */
      IC3ReadValue1 = TIM_GetCapture2(TIM3);
      CaptureNumber = 1;
    }
    else if(CaptureNumber == 1)
    {
      /* Get the Input Capture value */
      IC3ReadValue2 = TIM_GetCapture2(TIM3); 
      
      /* Capture computation */
      if (IC3ReadValue2 › IC3ReadValue1)
      {
        Capture = (IC3ReadValue2 - IC3ReadValue1); 
      }
      else
      {
        Capture = ((0xFFFF - IC3ReadValue1) + IC3ReadValue2); 
      }
      /* Frequency computation */ 
      TIM3Freq = (uint32_t) SystemCoreClock / Capture;
      CaptureNumber = 0;
    }
  }
}
/**
  * @brief  Configures the different system clocks.
  * @param  None
  * @retval None
  */
void RCC_Configuration(void)
{
  /* TIM3 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

  /* GPIOA and GPIOB clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
}

/**
  * @brief  Configure the GPIOD Pins.
  * @param  None
  * @retval None
  */
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* TIM3 channel 2 pin (PA.07) configuration */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_PinRemapConfig(TIM3_FullRemap, ENABLE );
}

/**
  * @brief  Configure the nested vectored interrupt controller.
  * @param  None
  * @retval None
  */
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;

  /* Enable the TIM3 global Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori  ty = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}


uint32_t 	temp=0;
float 		temp1;
TIM_ICInitTypeDef  TIM_ICInitStructure;
int	main	(void)
{	
	
	RCC_Configuration();

  /* NVIC configuration */
  NVIC_Configuration();

  /* Configure the GPIO ports */
  GPIO_Configuration();

  /* TIM3 configuration: Input Capture mode ---------------------
     The external signal is connected to TIM3 CH2 pin (PA.07)  
     The Rising edge is used as active edge,
     The TIM3 CCR2 is used to compute the frequency value 
  ------------------------------------------------------------ */

  TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter = 0x0;

  TIM_ICInit(TIM3, &TIM_ICInitStructure);
  
  /* TIM enable counter */
  TIM_Cmd(TIM3, ENABLE);

  /* Enable the CC2 Interrupt Request */
  TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE);

  while (1);
}
Реклама:
Batisto4ka вне форума  
Непрочитано 02.07.2013, 12:52  
Impartial
Прописка
 
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
Impartial на пути к лучшему
По умолчанию Re: Частотомер на stm32

Частотомер делается минимум на двух таймерах
3й 1с интервал
1й slave счетчик, 4й дополнительный
Настраиваются приблизительно так.
Запускаете 3й таймер, и через 1с считываете состояние 1го.
Значения предделителей поставьте свои.

//TIM3 INIT------------------------------
TIM3-›ARR = 32767;
TIM3-›PSC = 674;
TIM3-›CR2 |= TIM_CR2_MMS_0;
TIM3-›DIER |= TIM_DIER_UIE;
TIM3-›CR1 |= TIM_CR1_CEN | TIM_CR1_DIR | TIM_CR1_OPM;
//---------------------------------------
//TIMER 1 INIT---------------------------
//TIM1-›PSC =0x1f;
TIM1-›PSC = 0;
TIM1-›SMCR |= TIM_SMCR_ETF_1;
TIM1-›SMCR |= TIM_SMCR_ECE | TIM_SMCR_TS_1;
TIM1-›SMCR |= TIM_SMCR_SMS_0 | TIM_SMCR_SMS_2;
TIM1-›CR2 |= TIM_CR2_MMS_1;
TIM1-›CR1 |= TIM_CR1_CEN;// | TIM_CR1_UDIS;

//TIMER 4 INIT---------------------------
TIM4-›SMCR |= TIM_SMCR_SMS_1 | TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0;
TIM4-›CR1 |= TIM_CR1_CEN;

NVIC-›ISER[0] |= NVIC_ISER_SETENA_29 ;
}
-------------------------------------------------------
void TIM3_IRQHandler(void)
{
uint32_t tmp;
TIM3-›SR &= ~TIM_SR_UIF;
tmp = (uint32_t)TIM1-›CNT | (uint32_t)TIM4-›CNT ‹‹ 16;
TIM4-›CNT=0;
TIM1-›CNT=0;
TIM3-›CR1 |= TIM_CR1_CEN;
}

Последний раз редактировалось Impartial; 02.07.2013 в 13:17.
Impartial вне форума  
Непрочитано 02.07.2013, 14:42  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию Re: Частотомер на stm32

Спасибо за помощь, но можно пример, как настроить именно ногу РС6 (таймер 3) как счетчик импульсов?
Batisto4ka вне форума  
Непрочитано 02.07.2013, 15:10  
Impartial
Прописка
 
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
Impartial на пути к лучшему
По умолчанию Re: Частотомер на stm32

Чип какой?
Хотя, как счетчик никак. Это не счетный вход.
Счетные входа ETR.
Impartial вне форума  
Непрочитано 02.07.2013, 15:14  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию Re: Частотомер на stm32

чип stm32f103, как же быть тогда, если нужно сделать частотомер на pc7?
вот сдесь етсь пример настройки для режима захвата для этой ноги (канал 1 таймера 3 после полного ремапа). http://chipspace.ru/stm32-general-pu...input-capture/ но у меня не возникает прерывания и сдесь
Batisto4ka вне форума  
Непрочитано 02.07.2013, 15:19  
Impartial
Прописка
 
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
Impartial на пути к лучшему
По умолчанию Re: Частотомер на stm32

Сообщение от Batisto4ka Посмотреть сообщение
вот сдесь етсь пример настройки для режима захвата для этой ноги
РЕЖИМА ЗАХВАТА!!! Это не счет!!!
Impartial вне форума  
Непрочитано 02.07.2013, 15:24  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию Re: Частотомер на stm32

но правильно ли я понимаю, что можно с помощью режима захвата измерить период, а соответтвенно и посчитать частоту импульсов?
Batisto4ka вне форума  
Непрочитано 02.07.2013, 15:27  
Impartial
Прописка
 
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
Impartial на пути к лучшему
По умолчанию Re: Частотомер на stm32

Период можно. Тогда правильно формулируйте задачу.
Измерять период имеет смысл на низких частотах. Какая входная частота?
Impartial вне форума  
Непрочитано 02.07.2013, 15:30  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию Re: Частотомер на stm32

до десятков килогерц
Batisto4ka вне форума  
Непрочитано 02.07.2013, 15:42  
Impartial
Прописка
 
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
Impartial на пути к лучшему
По умолчанию Re: Частотомер на stm32

А точность? На 72мгц тактовой точность, при измерении частоты, измеряя период 100 кгц будет около 130 гц.
Impartial вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изучаем STM32 Cortex M3 EugVor ARM 6166 19.02.2024 18:22
Подключение DS18b20 к STM32 aftaev ARM 85 22.11.2016 10:58
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Проблема с ST-LINK +KEIL + STM32 LionRJ Микроконтроллеры, АЦП, память и т.д 5 06.03.2012 17:21
stm32 DISCOVERY-контроллер ШД ATMExpert Микроконтроллеры, АЦП, память и т.д 27 14.09.2011 17:08


Часовой пояс GMT +4, время: 03:42.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot