Дежавю
: Частотомер на 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 должна быть max Fosc / 4 (~ 961 kHz), т.е. нужен предварительный делитель.
При вход 20 MHz -> prescaler = 32..256 все работает. Но теряем разрешение на более низких частотах. То есть, по крайней мере, мне нужно переключить prescaler в зависимости от входа. Где взять инфо нормально ли работает или не переключается (если не переключить, то показания случайны, хаотичны)? Потом по табличке, с расчетом и во многом способы может ...
Попробовал считать prescaler динамично: проверка с (pre-1), начиная с самого большого: 256->128->64->32 -> дааа, это искомый делитель и используем его; нет, стоп уменьшения делителя. От большого к маленькому" прескалера способ работает почти ОК. Наоборот: "от малого к большому" я еще не думал о етом как это сделать, но, вероятно, есть более простые способы?
Хочу уточнить для себя вариантов решения по timer0 во втором случае.
(частично пользуюсь переводчиком)
- Вложения
-
- DSC04771.JPG
- (85.57 KiB) Скачиваний: 216