Короче, вот я к чему пришёл. TB работает в непрерывном режиме, CCR6 выхватывает фронты ACLK/4 и вызывает прерывание. Там вычитаем защёлкнутое значение TBR из предыдущего, оцениваем. Рассчитываем масштабную величину типа DCO_Scale (например, DCO в кГц) Ну и при уплывании от первоначального значения надо переинициировать UART и поменять масштаб таймеров. Вот сколько гемора из-за экономного снабженца, мать его... То разъёмы "а-ля РС-ТВ" родом из Китая притаранит, то кварцы хз откуда...
Но всё-таки тешит мысль, что надёжнее DCO вообще ничего нету. В крайнем случае будет работать немного не на той частоте, но таки будет. А не заткнётся из-за копеечного кварца.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|