проблема в том что нужен сигнал 50 hz, ширина импульса от 1ms до 2 ms. прейскалер я использовал 8 дальше была идея ограничить top значением 156, и использовать уже сравниваемое значения для регулировки ширины импульса. но даташит утверждает что TOP всегда должен равняться сравниваемому значению. в этом вся и подлянка https://github.com/arduino-libraries/Servo/blob/master/src/megaavr/Servo.cpp в ардуинке кстати они используют для этих целей 16 бит таймеры)
Комментарии: 16
Bga
Можно в системный генератор тиков lsi перевести вроде Только это не эффективно
Tiny
наверное придется курить даташит для 16бит. но вообще тупняк, почему нельзя для TOP и сравниваемого значения использовать разные регистры
Bga
16Мгц это 2**24 - прескалер таймера - 16
Tiny
проблема в том что нужен сигнал 50 hz, ширина импульса от 1ms до 2 ms. прейскалер я использовал 8 дальше была идея ограничить top значением 156, и использовать уже сравниваемое значения для регулировки ширины импульса. но даташит утверждает что TOP всегда должен равняться сравниваемому значению. в этом вся и подлянка https://github.com/arduino-libraries/Servo/blob/master/src/megaavr/Servo.cpp в ардуинке кстати они используют для этих целей 16 бит таймеры)
Bga
А я что написал?
Tiny
ну я вот эту фразу не понял
Bga
Screenshot (15 Apr 2023 15:59:55) Короче делится оно до 2 ** (24 - 10 - 16) Гц Можно и ниже. Если частоту проца понизить
Tiny
делится оно до 16мгц / n / 256, где n значение прескайлера. но я не понимаю причем тут он? проблема в использании значения TOP для 8 битный таймеров
Bga
Таймер 16 битный. До 16мгц/1024/65536 если ты не понимаешь в степенях двойки
Anonim
Какие же все-таки атмеги древнее зло...
Serge
А что тебе в них не так? Вот 8051 те странноваты)
Anonim
Да в целом все так, просто по современным меркам ощущаются уж очень устаревшими
Tiny
на стмке кстати задача довольно быстро решилась) не без помощи добрых людей. но гибкости на порядок больше
Vladimir
И ты сразу сдался? ))
Anonim
Да не поч, просто я хз когда их в последний раз использовал
Bga
В каком то мк можно было допрескалить таймер до 1024 секунд Можно офигеть взять 128 кГц и шимить аппаратно раз в час