eddy_em: (Default)
[personal profile] eddy_em
Пару часов промучился после обеда с таймером. Вроде как привычные куски кода. Инициализация:

    TIM14->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0;
    TIM14->PSC = 999; // 48kHz
    TIM14->CCER = TIM_CCER_CC1E;
    TIM14->DIER = TIM_DIER_UIE;
    NVIC_EnableIRQ(TIM14_IRQn);
    NVIC_SetPriority(TIM14_IRQn, 0);

Аналогично для TIM3. Потом установка скорости:

    TIM_TypeDef *TIMx = nmotor ? TIM3 : TIM14;
    TIMx->ARR = stphigharr[nmotor];
    TIMx->CCR1 = TIMx->ARR >> 1;
    TIMx->CR1 |= TIM_CR1_CEN;

Начинаю со скорости в 10 раз меньше номинальной, дальше разгон, в конце — торможение. Все тупо, внутри обработчика прерывания...
Запускаю — и вместо положенных 80Гц (48кГц/600 — начальная скорость) вижу около 3Гц (с осциллографом буду завтра разбираться, смотрел на светодиод). На 042 аналогичный код работал правильно. Буду искать...

October 2025

S M T W T F S
   1234
567 89 1011
121314 15161718
19202122232425
2627 28293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 12:20 pm
Powered by Dreamwidth Studios