Anonymous
05/16/2023 (Tue) 01:48
No.21876
del
Добавлю, пока не забыл.
Суть бага в том, что на такой низкой частоте ШИМа пользователь может успеть отжать кнопку тогда, пока таймер находится в диапазоне BOTTOM <-> COMPARE, т.е если допустим был выбран НЕ инвертирующий режим (сброс пина в ноль при COMPARE, установка в единицу на BOTTOM) - то вот если отключить тактирование таймеру, пока он не досчитал до COMPARE - пин так и останется "поднятым" в единицу.
Как из под монополии таймера выцаганить пин - без понятия. Надо тестировать конечно на макетке, но, я и так тороплюсь с операцией, нет на это времени, и с костылем через стяжку поедет.
Так-же насчет варианта оставить тактирование на постоянку, и, по событию перезагружать значение мощности - хреново выйдет. В самом начале BOTTOM <-> COMPARE будет, казалось бы, отсутствие диапазона, а значит и отсутствие выброса - но выброс, маленький, но выброс - будет. Специфика таймера такая, что даже если OCRxN регистр в нулях - таймер все равно установит в лог.1 пин на BOTTOM событии, и только после этого (по стробу, т.е через один "тик") - сбросит обратно в ноль пин. На 500гц эти выбросы отчетливо видно, и, они будут мешать. Поднимать частоту - хуевое решение, поэтому я изначально выбрал метод отключения тактирования.