В одной из будущих статей мне понадобится источник ШИМ сигнала с настраиваемой частотой и скважностью. Решила по-быстрому описать настройку ШИМ для ATmega328. Так как этот МК является основой множества отладочных плат, ардуинщикам такая статья тоже может пригодиться :) Посмотрим в документации к МК регистры, в которых настраивается режим работы таймера и частота его работы: Битами WGMx устанавливается режим работы таймера: Битами COMx - работа выходов OC1A/OC1B (да, тут два канала ШИМ) Битами CS1X - предделитель частоты таймера Кратко рассмотрим работу "быстрой" ШИМ (Fast PWM) и ШИМ с точной фазой и частотой (Phase and Frequency Correct PWM) у Timer1. В режиме Fast PWM с каждым тактом счета увеличивается регистр TCNT1. Когда число в нем становится равным числу в регистре сравнения OCR1/ICR1, выход OC1x становится равным нулю (если ШИМ неинвертирован) или единице (если ШИМ инвертирован). Когда счетчик досчитает до верха (TOP), то выход снова станет равным единице (если ШИМ неинвертирова
ШИМ с настраиваемой частотой и скважностью на Arduino и ATmega328
14 февраля 202214 фев 2022
1554
2 мин