Правильно ли я понял из этой ветки, почему у некоторых контактов есть знаки `~` рядом с их номерами? , что контакты ШИМ генерируют сигнал прямоугольной формы независимо от того, что делает код, загруженный в чип, после запуска вывода ШИМ? Другими словами, если мой код содержит всевозможные delay()
функции, которые делают паузу дольше, чем период сигнала ШИМ, сигнал ШИМ все равно будет генерироваться правильно, верно?
С другой стороны, если бы я решил реализовать свой собственный ШИМ на цифровом выводе вместо того, чтобы переключать состояние между ВЫСОКИМ и НИЗКИМ в моем коде через регулярные промежутки времени, наличие других вызовов delay()
в других частях кода напрямую повлияло бы на мою способность генерировать желаемый последовательный сигнал ШИМ. Это верно? Я надеюсь, что этот вопрос имеет смысл (немного сложно задать вопрос).
Вы правильно поняли. Выводы с символом тильды (~) — это выводы, которые связаны с аппаратным модулем ШИМ (т. е. таймером). Поскольку это аппаратный модуль, он не зависит от того, что делает ваш процессор. Таким образом, если вы застряли в задержке, ваш аппаратный PWM все равно будет продолжать генерировать правильный выходной сигнал. С другой стороны, программный ШИМ (тот, который вы сгенерируете с помощью ручного переключения контактов) будет прерван вашей задержкой.
Большую часть времени вы должны предпочесть аппаратную ШИМ программной ШИМ по многим причинам:
pkout
PORTB = 0b00000001;
, будет ли это также проходить через ЦП, как если бы я использовал цифровую запись (1, HIGH), или это было бы так же эффективно, как использование порта PWM? Я предполагаю, что это также неэффективно, верно?Мишёси
pkout