Changeset 18 for trunk/firmware_v2/Core


Ignore:
Timestamp:
Aug 19, 2025, 9:08:57 AM (9 days ago)
Author:
f.jahn
Message:

Fixing Project

Location:
trunk/firmware_v2/Core/Src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/firmware_v2/Core/Src/stm32c0xx_it.c

    r17 r18  
    2323/* Private includes ----------------------------------------------------------*/
    2424/* USER CODE BEGIN Includes */
     25
     26#include <stdio.h>
     27
    2528/* USER CODE END Includes */
    2629
     
    172175/* USER CODE BEGIN 1 */
    173176
     177
     178
     179uint32_t capturedValue;
     180uint32_t previousCaptureValue;
     181uint32_t frequency;
     182uint32_t overflowCnt;
     183uint32_t T[STATE_NUM];
     184
     185static uint32_t avg;
     186static uint32_t psc;
     187static uint32_t freq;
     188static uint32_t rpm;
     189
     190
     191void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef* htim)
     192{
     193        if (htim->Instance == TIM16)
     194        {
     195                static unsigned stateCnt;
     196
     197                capturedValue = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
     198                T[stateCnt++] = capturedValue + 65536U * overflowCnt;
     199                overflowCnt = 0U;
     200               
     201                if (stateCnt >= STATE_NUM - 1)
     202                {
     203                        static uint32_t i;
     204
     205                        ibuf[i++] = T[0] + T[1] + T[2] + T[3];
     206
     207                        if (i >= AVG_NUM)
     208                        {
     209                                uint32_t sum = 0U;
     210                                for (unsigned j = 0U; j < AVG_NUM; j++) sum += ibuf[j];
     211                                avg = sum / AVG_NUM;
     212                                psc = htim->Instance->PSC + 1;
     213                                freq = HAL_RCC_GetPCLK1Freq() / (psc * avg);
     214                                rpm = freq * 60U;
     215                                printf("%u\n", rpm);
     216                        }
     217
     218                        stateCnt = 0U;
     219                }
     220        }
     221}
     222
     223//-----------------------------------------------------------------------------
     224
     225void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim)
     226{
     227        if (htim->Instance == TIM16)
     228        {
     229                overflowCnt++;
     230        }
     231}
     232
    174233/* USER CODE END 1 */
  • trunk/firmware_v2/Core/Src/tim.c

    r17 r18  
    2323/* USER CODE BEGIN 0 */
    2424
     25#define STATE_NUM       (2U)
     26#define AVG_NUM         (64U)
     27
     28uint32_t ic_buf[AVG_NUM][STATE_NUM];
     29uint32_t ic_overflows[AVG_NUM][STATE_NUM];
     30
    2531/* USER CODE END 0 */
    2632
     
    5864    Error_Handler();
    5965  }
    60   sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_BOTHEDGE;
     66  sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING;
    6167  sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
    6268  sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
     
    6874  /* USER CODE BEGIN TIM16_Init 2 */
    6975
    70   HAL_TIM_IC_Start(&htim16, TIM_CHANNEL_1);
     76  HAL_TIM_IC_Start_DMA(&htim16, TIM_CHANNEL_1, ic_buf, STATE_NUM * AVG_NUM);
    7177
    7278  /* USER CODE END TIM16_Init 2 */
     
    105111  }
    106112  sConfigOC.OCMode = TIM_OCMODE_PWM1;
    107   sConfigOC.Pulse = 155;
     113  sConfigOC.Pulse = 64;
    108114  sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
    109115  sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
     
    131137  /* USER CODE END TIM17_Init 2 */
    132138  HAL_TIM_MspPostInit(&htim17);
     139
    133140}
    134141
Note: See TracChangeset for help on using the changeset viewer.