Ejemplo n.º 1
0
/**
  * @brief  This function handles PPP interrupt request.
  * @param  None
  * @retval None
  */
void HRTIM1_TIMD_IRQHandler(void)
{
      uint32_t CurrentDuty;

  /* For interrupt duration monitoring purpose */
  BSP_LED_On(LED4);
  
  __HAL_HRTIM_TIMER_CLEAR_IT(&hhrtim, HRTIM_TIMERINDEX_TIMER_D, HRTIM_TIM_IT_REP);

  /* Get current duty cycle value */
  CurrentDuty = __HAL_HRTIM_GetCompare(&hhrtim, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_1);

  /* Increase the compare value up to 50% duty cycle and re-start from 5% */
  if (CurrentDuty < BUCK_PWM_PERIOD/2)
  {
    CurrentDuty++;
    __HAL_HRTIM_SetCompare(&hhrtim, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_1, CurrentDuty);// Duty cycle update
    __HAL_HRTIM_SetCompare(&hhrtim, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_3, CurrentDuty/2); // ADC trigger position update
  }
  else  // Re-start ramp from 5% duty cycle
  {
    __HAL_HRTIM_SetCompare(&hhrtim, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_1, BUCK_PWM_PERIOD/20);
    __HAL_HRTIM_SetCompare(&hhrtim, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_3, BUCK_PWM_PERIOD/40);
  }

//  HAL_HRTIM_IRQHandler(&hhrtim, HRTIM_TIMERINDEX_TIMER_D);
  BSP_LED_Off(LED4);
}
Ejemplo n.º 2
0
/**
* @brief  This function handles SysTick Handler.
* @param  None
* @retval None
*/
void SysTick_Handler(void)
{  
  static uint8_t counter_1ms = 0;
  static uint8_t counter_50us = 0;
  static uint8_t counter32 = 0;
  static uint8_t falling_slope = 0;

  /* Increment tick counter every ms */
  counter_1ms++;
  if(counter_1ms >= 100)
  {
    HAL_IncTick();
    counter_1ms = 0;
  }
  
  /* Triangle Generation on PB14 */
  if (TriangleGeneration == 1)
  {
    counter_50us++;
    if(counter_50us >= 5)
    {
      counter_50us = 0;       
      __HAL_HRTIM_SetCompare(&HrtimHandle, HRTIM_TIMERINDEX_TIMER_D, HRTIM_COMPAREUNIT_1, TriangCmp);
      
      if(falling_slope == 0)
      {                
        counter32++;
        if(counter32 >= 31)
        {   
          counter32 = 0;
          TriangCmp = TriangCmp + 32;    
          if (TriangCmp >= 0x290)
          {
            falling_slope = 1;
          }
        }   
      }
      else
      {           
        TriangCmp--;
        if (TriangCmp <= 0x100)
        {
          falling_slope = 0;
        }
      }
    }
  }
}