Что означает «Обновление OCR1x в» в таблице WGM ATMEGA328?
Я только что закончил читать пару онлайн-руководств о том, как использовать регистры таймера с широтно-импульсной модуляцией, поэтому я все еще плохо знаком с этой концепцией. Когда я посмотрел в спецификации ATMEGA328, я увидел эту таблицу:
Столбец, который мне не совсем ясен, — это «Обновление OCR1x в». Я обвел ряд 14 в качестве примера. Если вы работаете в режиме 14 (т.е. устанавливаете WGM 13, 12 и 11 на высокий уровень), то вы будете в режиме Fast PWM. Устанавливая значение для ICR1, вы фактически устанавливаете значение TOP, которое будет контролировать период пульсовых волн. И флаг переполнения на таймере будет установлен, когда таймер достигнет значения TOP.
Таким образом, «обновление OCR1x в» означает, что только когда форма импульса достигает значения BOTTOM (или конца периода), именно тогда значение OCR1x будет передано на выводы OCx, если Биты COMx установлены?
@John, 👍4
Обсуждение1 ответ
Как и "Обновление OCR1x в" означает, что только когда форма импульса достигает значения BOTTOM (или конца периода), именно тогда значение OCR1x будет передано на выводы OCx...
Да, это то, что это значит. Чтобы предотвратить сбои в выходе ШИМ, вы часто НЕ хотите, чтобы форма сигнала ШИМ изменялась немедленно в тот момент, когда вы обновляете значение OCR1A, например, для изменения выхода ШИМ на выходном контакте A. Таким образом, значение ШИМ, которое вы устанавливаете, удваивается. буферизуется и обновляет внутренний буфер, используемый выходными контактами, только после того, как он завершит свой текущий период ШИМ и снова достигнет значения BOTTOM, которое в этом случае будет значением счетчика, равным 0. Теперь, позволив предыдущему периоду ШИМ завершиться до того, как аппаратное обеспечение прочитает последнее значение из регистра OCR1A/B (внешний буфер) во внутренний буфер (какой внутренний буфер фактически определяет состояние контакта), вы получите хороший, чистый, сбой. -бесплатный ШИМ-переход от одного значения к другому независимо от того, когда вы обновили выходной регистр OCR1A
или OCR1B
.
- ATmega328P - проблема с использованием таймера 2 для генерации тона
- максимальная частота ШИМ на основе прерываний при 500 Гц
- Может ли Arduino uno регулировать входную квадратную волну, фазу и частоту только с помощью таймера-счетчика?
- Генерация стабильной частоты
- Можно ли сгенерировать точный тактовый импульс 15 кГц с помощью ардуино?
- Генерация сигнала частотой 38 кГц без таймеров
- Светодиод Arduino PWM с замиранием в сборке
- Отрегулируйте расчет времени после изменения частоты Timer0
ШИМ можно изменить во время работы. Вы можете записать новое значение в регистр OCR1x, не останавливая pwm. Это может вызвать сбои, поэтому он имеет двойную буферизацию. «Обновление» — это когда новое значение (записанное вами) устанавливается в регистр OCR1x. Я не знаю, как это влияет на выход ШИМ, но, видимо, они это продумали и решили, какой момент лучше., @Jot
найдите диаграмму в таблице данных, которая показывает графическое представление пилообразной формы волны, @jsotola