Jump to content
    

Alex-lab

Свой
  • Posts

    471
  • Joined

  • Last visited

Reputation

0 Обычный

1 Follower

About Alex-lab

  • Rank
    Местный
    Местный
  • Birthday 07/20/1984

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

3,077 profile views
  1. Использовать беззнаковую переменную.
  2. Пытался использовать такие и подобные (красные) трансформаторы для питания драйверов мостового преобразователя, 550VDC. Пробивает при работе на частоте где-то через неделю. На постоянном токе мегаоометр показывал нормальный результат. Для высоковольтных применений не подходит. Ставить нельзя. Перешел на DCDC преобразователи.
  3. Почему "но"? Тест на профпригодность прошел успешно.
  4. Как вы это поймете без видео, а значит и не попадете туда никогда. За 20 лет не превратился. Не надо учить людей жизни, как им удобно, пусть так и общаются. Главное поддерживать комфортную для общения среду и не душнить. Архивация это все-таки вторичная опция. Да и найти что-то нужное в анналах форума задача не из простых, даже если помнишь, что уже видел это.
  5. Кому нужно, пусть те и выбирают форму. Зачем тут "обязательно"?
  6. Я не могу понять ваш код, почему там все закомментировано? Где начало обработчика прерывания? У вас не правильно, вы ограничили сам PWM, а нужно лишь прирост, то есть вместо if ... PWM_1=300 должно быть что-то вроде: if (PWM1-PWM1_old > 300) { PWM1 = PWM1_old + 300; }
  7. Вам нужно знать, за какое минимальное число шагов допустимо такое переключение. Например за 10, тогда максимальный шаг изменения не должен превышать 100. Перед записью в CCR1 сравниваете PWM1 с его же значением на предыдущем шаге. Если разница больше 100, то 100.
  8. Не на значения ШИМ, а на прирост. Если ограничить значения, вы просто сузите область регулирования.
  9. Если использовать разностную реализацию, то ограничения на градиент легко накладываются просто лимитами на эту дельту. Иначе нужно сравнивать новое значение ШИМ со старым, и ограничивать если выходит за рамки. По сути это одно и то же.
  10. В общем как обычно, сам виноват. Дело было в том, что происходило срабатывание еще одного прерывания уже при выключении и там все менялось. Если перед выключением таймера запретить прерывания, то все работает.
  11. @Sverchok, Все три канала настроенны одинаково, например для CH1: CCER: CC1E=CC1NE = 1 (вкл оба выхода), CC1P=CC1NP = 0 (активный высокий). код h5=0b0101 для всех каналов. CR2: все нули кроме MMS2 для запуска АЦП - работает. OIS1 = OIS1N = 0 - в режиме ожидания, когда MOE =0, то выход =0. - Это работает если CR1_CEN = 1 и не работает если 0. CCMR: Toggle, Preload, Output. - код h38=0b00111000 для всех каналов. Работает верно. Таблицу 122 знаю, там все стоит по нижнему варианту. Работаю через регистры.
  12. Добрый день. Контроллер STM32F303CBT6. В устройстве необходимо иногда включать таймер, генерировать комплиментарный сигнал, а потом выключить преобразователь и уйти в режим ожидания. Выключение преобразователя произвожу путем установки BDTR MOE = 0, при этом биты определяющие полярности и уровни создают нулевые значения на пинах. Далее я выключаю счетчик через CR1 CEN=0 и тут происходит странное. Во всех трех основных каналах, например в первом, CH1 = inv(CN1N) вместо обоих нулей. То, где будет 0 или 1 зависит от значения регистра CCR1, то есть получается что при выключенном CEN=0 идет трансляция OCxREF на выходы игнорируя бит MOE=0. Если CEN оставить 1, то все работает нормально, но вызываются прерывания от таймера и их нужно купировать дополнительно, что выглядит не очень правильным. Проштудировал весь рефман и апноуты, нигде ничего не сказано про влияние CEN на выходы. Может глаз уже замылился. Всегда думал, что CEN просто блокирует счет не влияя на состояние выходов, я не прав? Спасибо.
×
×
  • Create New...