Является ли использование более короткого периода таймера менее точным, чем использование более длинного?

Я использую dsPIC 33FJ128GP804 и пытаюсь максимально точно записывать данные с частотой 200 Гц. В моем устройстве также есть GPS, и я заметил, что мой таймер дрейфует по сравнению с GPS примерно на 333 мс/час. Я думаю, что должно быть возможно сделать лучше, чем это. Мой источник тактового сигнала — кварцевый резонатор 40 МГц с допуском 30 частей на миллион, стабильностью 50 частей на миллион и старением 5 частей на миллион в год.

У меня есть генератор PIC, работающий на частоте 72 МГц. Я не могу это изменить, требуется запустить UARTS на скорости 3 Мбит.

Во время моего тестирования, чтобы выяснить, почему существует такой большой дрейф, я провел эксперимент. Я запускаю два таймера, один на 200 Гц, а другой на 5 Гц. В обработчиках прерываний таймер 200 Гц увеличивает значение long int на 1, а таймер 5 Гц увеличивает значение long int на 40. Два значения long int должны остаться прежними. Однако через 45 минут значения отличаются на 6. (30 мс).

Почему я вижу разницу между двумя значениями? И есть ли что-нибудь, что я могу сделать, чтобы увеличить точность моего таймера, кроме замены кристалла? Повышает ли точность более длительный период? Если да, могу ли я использовать более медленный таймер, чтобы периодически сбрасывать мой более быстрый таймер. Будет ли изменение источника моего таймера на внешний генератор с часов инструкций?

Я использую время GPS для корректировки времени в постобработке, но GPS не всегда доступен, поэтому я не хочу полагаться на него.

Ответы (1)

Таймеры делят часы вниз на целочисленные значения. Долгосрочное среднее, выходящее из таймера, будет таким же, как и из осциллятора.

Похоже, ваш период таймера отключен на 1. Внимательно прочитайте техническое описание. Вы, вероятно, не поместили правильное значение в регистр периода. Обычно эти таймеры работают так, что период равен значению регистра периода плюс 1.

Другим возможным источником ошибки является то, как приводится в действие кристалл. Точность указывается для конкретной емкости нагрузки, которая часто может быть немного непредсказуемой, поскольку паразитная емкость может составлять значительную часть от общей величины. Однако это не объясняет, почему два таймера, работающие с одними и теми же часами, не совпадают по прошедшему времени. Это может быть вызвано только ошибкой прошивки.

Я думаю, вы правы, проблема в +1. Проверка сейчас.