Beispiel #1
0
static void TIM2_Config(void)
{
  /* Enable TIM2 CLK */
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
  
  /* Capture only every 8 events!!! */
  /* Enable capture of TIM2 */
  TIM2_ICInit(TIM2_Channel_1, TIM2_ICPolarity_Falling, TIM2_ICSelection_DirectTI, TIM2_ICPSC_Div8, 0);
  
  /* Enable timer1 */
  TIM2_Cmd(ENABLE);
  
  /* Config Channel 1 pin*/
  GPIO_Init(GPIOB, GPIO_Pin_0, GPIO_Mode_In_PU_No_IT);

  /* Clear CC1 Flag*/
  TIM2_ClearFlag(TIM2_FLAG_CC1);
  
  /* wait a Capture on CC1 */
  while((TIM2->SR1 & TIM2_FLAG_CC1) != TIM2_FLAG_CC1);
  
  /* Get CCR1 value*/
  ICValue1 = TIM2_GetCapture1();
  /* Clear CC1 Flag*/
  TIM2_ClearFlag(TIM2_FLAG_CC1);
  
  /* wait a capture on cc1 */
  while((TIM2->SR1 & TIM2_FLAG_CC1) != TIM2_FLAG_CC1);
  /* Get CCR1 value*/
  ICValue2 = TIM2_GetCapture1();
  TIM2_ClearFlag(TIM2_FLAG_CC1); 
}
Beispiel #2
0
}
#endif

/**
  * @brief  Timer2 Capture/Compare Interrupt routine.
  * @param  None
  * @retval None
  */
INTERRUPT_HANDLER(TIM2_CAP_IRQHandler, 20)
{
  /* - cap_rise - timer value on rising edge 
     - cap_fall - timer value on falling edge
     - timer is reset on falling edge     */
  if(TIM2_GetITStatus(TIM2_IT_CC1) == SET)
  {
    cap_rise = TIM2_GetCapture1();
    FLAG_rise_edge = TRUE;
  }
  else FLAG_rise_edge = FALSE;
  if(TIM2_GetITStatus(TIM2_IT_CC2) == SET)
  {
    cap_fall = TIM2_GetCapture2();
    FLAG_fall_edge = TRUE;
  }
  else FLAG_fall_edge = FALSE;
  if(FLAG_rise_edge && FLAG_fall_edge)
  {
    FLAG_CC_Error = TRUE;
  }
  // capture logging
  /*if(!FLAG_markfirst)
Beispiel #3
0
  * @par Parameters:
  * None
  * @retval
  * None
*/
#ifdef _COSMIC_
@far @interrupt void TIM2_CAP_COM_IRQHandler(void)
#else /* _RAISONANCE_ */
void TIM2_CAP_COM_IRQHandler(void) interrupt 14
#endif /* _COSMIC_ */
{
  /* TIM2_CH1 toggling */
	if (TIM2_GetITStatus(TIM2_IT_CC1) != RESET)
  {
    TIM2_ClearITPendingBit(TIM2_IT_CC1 );
	capture = TIM2_GetCapture1();
	TIM2_SetCompare1(capture + CCR1_Val);
  }
  
  /* TIM2_CH2 toggling */
  if (TIM2_GetITStatus(TIM2_IT_CC2) != RESET)
  {
     TIM2_ClearITPendingBit(TIM2_IT_CC2);
	capture = TIM2_GetCapture2();
    TIM2_SetCompare2(capture + CCR2_Val);
  }	

  /* TIM2_CH3 toggling */
  if (TIM2_GetITStatus(TIM2_IT_CC3) != RESET)
  {
    TIM2_ClearITPendingBit(TIM2_IT_CC3);