Проблема синхронизации OCR1A и прерывания ADC

Наконец, до меня дошло, причём здесь ADC - он Вам нужен для того самого потенциометра. Так?

Тогда это делается по-другому. Смотрите.

  1. отдельно настраиваете ADC в режим free running, чтобы он самостоятельно постоянно измерял;
  2. также при помощи бита ADLAR делаете, чтобы можно было читать только один байт результата (при таком делителе второй Вам всё равно не нужен);
  3. в прерывании ADC тупо копируете этот байт (результат) измерения в волатильную переменную. Таким образом в этой переменной у Вас всегда будет свежее, самое последнее измерение;
  4. всё, про ADC забудьте, больше с ним ничего не делаем.

Далее,

  1. настраиваете PWM как показали коллеги выше;
  2. устанавливаете таймера прерывание по переполнению и в каждом прерывании перенастраиваете PWM (как объяснял @Komandir ).

Вот Вы и получили то, что хотели, причём, заодно, перенастройка у Вас происходит в самом начале периода, т.е. Вы ею не сбиваете текущий период и не ломаете сигнал.

Если аккуратно всё сделать, то будет работать, никуда не денется.

P.S. И, да, кстати, можете оставить в покое делитель. Пуская себе 104 мкс измеряет, он при этом никак не будет мешать таймеру и вообще никому.

2 лайка