Перейти к содержанию
    

Babadag

Новичок
  • Постов

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Пытаюсь запустить АЦП (канал 0) от таймера 2. Не работает... Код // Инициализация АЦП RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_CAL; while ((ADC1->CR2 & ADC_CR2_CAL) != 0); ADC1->CR1 |= ADC_CR1_EOCIE; NVIC_EnableIRQ(ADC1_2_IRQn); ADC1->CR2 |= ADC_CR2_EXTTRIG | ADC_CR2_EXTSEL_0 | ADC_CR2_EXTSEL_1; ... // Инициализация таймера RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; TIM2->PSC = 32000 - 1; TIM2->ARR = 199; TIM2->CCMR1 |= TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; TIM2->CCR2 = TIM2->ARR; TIM2->CR1 |= TIM_CR1_CEN; Запуск АЦП в ручном режиме (через повторный ADC_CR2_ADON) работает. Если у таймера разрешить прерывание CC2IF — срабатывает когда надо. В чём ошибка? Похоже, проблема в настройке события CC2 от таймера. АЦП прекрасно запускается от таймера 3 при такой инициализации: RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; TIM3->PSC = 32000 - 1; TIM3->ARR = 199; TIM3->CR2 |= TIM_CR2_MMS_1; TIM3->CR1 |= TIM_CR1_CEN; Тогда как следует настраивать таймер 2? Ну блиииин... Всё настроил, а включить забыл. Проблема решилась добавлением строчки TIM2->CCER |= TIM_CCER_CC2E; Надо пойти пообедать =)
  2. Разобрался. Оказалось, невнимательно читал даташит. На каждом полумосту две схемы защиты от превышения тока, по одной на ключ. И если верхняя схема ограничивает скважность ШИМа, то нижняя просто отключает оба ключа и оставляет фазу в подвешенном состоянии. Именно это я и наблюдал. Что любопытно, даташит пишет: if the input to a half bridge is held to a constant value when an over current event occurs in CBC, then the associated half bridge will be in a HI-Z state upon the over current event ending. Получается, что нельзя одну фазу просто держать на нуле, а ШИМ давать на другую. Обязательно нужно использовать двухполярное управление. Как-то не очень логично...
  3. Пытаюсь запустить BLDC (китайский A2212) на драйвере Texas DRV8312. Происходят какие-то странные вещи. Двигателя у меня два, драйвер тоже перепаивал — результаты одинаковые. Видимо, проблема не в железе, просто я чего-то не понимаю. 1) Включаю на фазу 1 ШИМ 50%, на фазы 2 и 3 — землю. Частота ШИМ 5 кГц. Через некоторое время правильно срабатывает защита драйвера по току и время включения ШИМа ограничивается примерно до 1%. Вроде бы всё хорошо. Если в этот момент резко рукой крутануть ротор, на всех фазах появляется ШИМ 50%. Как так? У меня только одно объяснение: закрылись нижние ключи. Осциллографом проверял входные сигналы — всё в норме. FAULT ни разу не дёрнулся в ноль. Если же ротор крутить плавно, всё ничего не меняется. Что происходит? 2) Опять же, на фазе 1 ШИМ, на фазах 2 и 3 земля. Отключаю фазу 3 от платы. На выходах 1 и 2 драйвера появляется ШИМ 50%, на выходе 3 — напряжение 2.5 В (видимо из-за подтяжки или резисторов в измерительной части). Подключаю фазу к плате обратно — ничего не меняется. Похоже, опять закрылись нижние ключи и больше не открываются. Почему?
×
×
  • Создать...