Сейчас на платах типа RP2040 уже стоят кварцевые генераторы. Но эти кварцы обычно низкого качества и при их нагреве частота их значительно изменяется.
По ссылке ниже приведен пример работы с внешним кварцевым генератором.
Поэтому есть несколько вопросов:
1 - Просьба скинуть ссылку на литературу по данной теме.
2 - Это действительно так хорошо, как описано в статье?
3 - Кто нибудь занимался этим вопросом?
У меня одна плата пришла с повреждённым кварцем, пересадил с какого-то донора (по размерам был в два раза больше, но всё без проблем) , так что плохой кварц видимо проще заменить
Плата у меня RP2040 Zero. Кварц там с 4 ногами размером 3Х5 мм. Если и получится заменить то не факт, что станет лучше.
По поводу термостабильности. Кварц находится рядом с чипом и поэтому при нагреве чипа частота меняется. Чип греется примерно до 50 Град. Изменение частоты при нагреве около 2 ppm.
Нагрузка это цифровые пины от ЖК дисплея. Напряжение питания ядра 1.3 в и частота 240 мГц. Ток потребления 60 мА. Ну и в комнате около +25 град.
Сейчас вопрос стоит не в том, чем я его нагрузил, а в том что я хочу код из этой статьи перенести на Arduino и мне нужен человек, который сможет указать мне на ошибки в моем программном коде, поскольку я понятия не имею как этот код работает.
Поэтому я и хочу почитать чего нибудь по этой теме.
Я сильно не вчитывался, но не припомню никакой переменной в 64 бит (может быть она там и есть, не буду спорить).
Так зачем вам эта переменная? Вы всё-таки хотите частотомер собрать?
Диапазона 32 бит достаточно для подсчета Гигагерцев (значения uint32_t от 0 до 4 294 967 295).
В кратце можно описать работу простого частотомера на мк так:
Берём эталонное время и с помощью него отсчитываем некоторый период (вот тут для повышения точности отсчета и использовался gps в статье), а пока период длится - считаем сколько импульсов пришло.
Если в качестве периода выбрать интервал в 1 секунду, то насчитанное количество входящих импульсов за этот период в 1 секунду и будет частота в герцах.
И на каждом новом периоде счет обнуляется. Так что переполнения там быть в принципе не может.
Надо лучше читать текст. Нужен счетчик импульсов. И как я понимаю по твоим словам он не может переполниться. Хорошо пусть будет счетчик импульсов на 32 бита без переполнения с тактовой частотой 10 мГц, который никогда не переполняется.
А ссылка на Дзен твоя ну просто умилила. Особенно понравилось описание резонансного частотомера. Наверное до Великой отечественной они уже были.
А дальше описывается частотомер по схемотехнике начала 80-х годов. Такую схему даже я собирал на 176 серии.
Ну, да ладно, я отвлекся. Выкладываю код для дальнейшей работы, а дальше потихоньку буду исправлять ошибки. Сначала попробую добавить Loop() и Setup() и убрать ошибки библиотеки и вывода в Serial.
Да, а если всё-таки прочитать статью до конца, то и на мк там тоже описываются (статья как раз для понимания как работают частотомеры в принципе).
В прочем, умных учить - только портить. Удачи.
Пытался найти хоть слово про МК но не нашел. Может я с вами по разному буковки умеем читать? Хотя может быть это имелось в виду: “даже если частотомер выполнен на контроллере – основная структура выполнена программно.” Но это не в конце статьи, а в середине. Не надо людей в заблуждение вводить.
Зато в конце есть обнадеживающая информация:
"Работу индикаторной части мы рассмотрим отдельно в следующем материале. "
А поскольку это самая сложная часть частотомера, то автор не раскрыл принцип работу электронного-счетного частотомера полностью.
Поскольку данная статья для начинающих, то очень плохо, что автор не расписал достоинства и недостатки данного типа частотомеров.
И по поводу картинок. Данные картинки называются временные диаграммы. И они предназначены для более простого поиска неисправностей в цифровой технике. Когда микросхем мало (до 30 штук) они вроде бы не нужны. Но возьмем к примеру Систему ЧПУ 2Р22. Там целый альбом схем. На каждой странице микросхем по 50 и еще на другие листы уходят. И вот на занятиях нам приходилось рассказывать преподавателю, при выходе из строя какой микросхемы где нужно чего искать. А еще проектировщики, чтобы Американские шпионы не украли схему ЧПУ наделали в ней специально ошибок.
Теперь выкладываю первые результаты работы. Поскольку я понятия не имею как оно работает спрашивать по программе меня бесполезно.
Входную частоту 1 Гц с высокостабильного генератора подаем на вывод 2.
Частоту с кварцевого генератора подаем на вывод 15.
Каждую секунду на экране выводятся новые параметры.
Если на выводе 2 частоты нет, то на экран ничего не выводится.
При выводе на экран значение Т1 - длительность импульса 1 Гц в микросекундах кварца на плате.
Т2 - время в миллисекундах для внешнего кварцевого генератора. (как работает не знаю)
F - частота внешнего кварцевого генератора. Частота должна быть как минимум в 3 раза меньше частоты работы процессора. Оптимально для частоты 133 мГц частота внешнего кварца не более 40 мГц. Если хотите получить более стабильные результаты частоту кварца не использовать выше 32 мГц.
Точность изменения частоты составляет +/- 1 Гц и не зависит от частоты внешнего кварца. Она была одинаковой при кварце на 2 и на 32 мГц.
Программа банально считает число импульсов на сигнальном входе за 1сек.
Поскольку секунды отмеряются сигналом точного генератора, то все операции с миллис и микрос в коде абсолютно лишние.
Делал я часики на часовом кварце, с калибровкой по GPS 1сек и термокомпенсацией по формуле Сейко - погрешность меньше 30 сек в год. Причем один экз плыл туда-потом оттуда и получалось 1сек в год ))