С обычным PWM всё вроде как ясно - известен период, а следовательно ALL-time и HIGH-time. Дальше всё просто: HIGH / (ALL / 100) = % заполнения.
Но если PWM-сигнал вот такой (вначале 128 клоков HIGH, потом данные в HIGH , в конце 128 клоков LOW):
То как отсечь эти 128 клоков в начале и конце?
Частота может быть разной, от даташита слегонца отличается, т.е. потенциально может от экземпляра к экземпляру изменяться. Плюс ещё немного плавает на осциллографе.
Авто-калибровка… но для этого нужно получить данные от 0 до 4095, что затрудительно.
Не понял в чем трудность. Период (частота) легко измеряется по переднему фронту значит и длительность clock известна (T/(4095+256)) .
Если поле data имеет переменную длительность, то конечные LOW = 128 есть всегда, и по ним вычисляется clock
Как обычно. Хорошая мысля приходит опосля.)
На самом деле. Зачастую, отключение от работы помогает.
То есть, переключился на что то другое, но идея из головы не выходит.)