синхронизация каналов ШИМ (таймеры разные)

Тема в разделе "Arduino & Shields", создана пользователем sim31r, 3 фев 2016.

Метки:
  1. sim31r

    sim31r Нуб

    Задача простая, думаю уже кем-то решена давно. Есть необходимость в формировании 3 ШИМ сигналов с одинаковой частотой и фазой, используется соответственно 2 таймера. Скважность меняется естественно.
    С двумя сигналами всё хорошо, а третий может отставать на любое время, так как переменные таймера не синхронизированы никак.
    Думаю надо завести прерывание от таймера и при каждом его срабатывании приравнивать значения таймеров
    Код (C++):
    TCNT2=TCNT1
    Единственный минус трата ресурсов микроконтроллера, особенно если ШИМ будет работать на высокой частоте.
    Плата Arduino Uno на atmega 328. Возможно надо другие таймеры задействовать, чтобы не портить таймер 1, который для системного времени применяется.
    Применение как на картинке, ШИМ в противофазе будет греть зря обмотки мотора:
    [​IMG]