Дежавю

: Честотомер с PIC, в случая: PIC16F628A, XTAL = 4 MHz, CCS, PIC-C Compiler.
В стаята виждам поне 5 честотомера

. Въпросите са по-скоро за алгоритъма. Занимание в хобито за самото занимание.
1. При използване на timer0 за времеви отчети, напр. 1 сек, timer1 - вход (pin 12, RB6, T1CKI)
кодът заработи след няколко опита. Без prescaler на входа, при тестване на монолитен кварцован генератор 20 000 000 Hz, с нормална мин грешка (която може да се отстрани както хардуерно (кондензаторите на кварцовия резонатор), така и програмно (допълнителни цикли микроконтролера), последнят знак почти "не скача" +/-1 единица. Добра разрядност 1 Hz: във времето виждам изменението на честотата с температурата дори на двата кварцови генератора. Максималната входа честота засега не ме интересува и вероято съответства на параметрите в pdf.
2. При използване на timer0 - вход (pin 3, RA4, T0CKI), timer1 - за времеви отчети, напр. 1 сек
масималната вхподна честота на timer0 трябва да е по-малка от Fosc / 4 (~ 961 kHz), т.е. необходимо е да се включи prescaler.
При вход 20 MHz -> prescaler = 32..256 кодът работи, но губя разрядост на по-ниски честоти. Т.е. най-малкото трябва да превключвам prescaler в зависимост от честотата на входа. Откъде да взема информация нормално ли работи или не превключва (ако не превклюва, то показанията са случайни, хаотични)? След това с коефициенти по таблица, с пресмятане или по друг начин може ...
Пробвах да определям prescaler динамично: проверка с (pre-1), като започвам с най-големия: 256->128->64->32 -> дааа, това е търсения делител и го използваме; не ->. стоп на намалянето делителя. "От голям към малък "prescaler начинът работи почти ОК. Наобратно: "от малък към голям" още не съм го направил, но, вероятно, има по лесен начин?
Искам за себе си да уточня вариантите за решение с timer0 във втория случай.