Генератор с регулируемоей частотой на ардуино.

KovAl
Offline
Зарегистрирован: 25.01.2022

dimax пишет:

 Вносить в меню  операцию, которая выполняется _один_ раз нет никакого смысла.

Вы забыли про "овраги". Про тех, для кого всё то, что написано в https://github.com/etherkit/Si5351Arduino - не более чем "барбармия кергуду".

Как откалибровать тем, кто бинарник в стм-ку заливал?

Для них генератор превратится в игрушку с красивыми картинками на экране, не более того..

P.S. Немного мыслей вслух. Про меню.

Почему бы не сделать так называемое "Сервисное меню"? Первый пункт его уже есть - калибровка генератора.

Вызывать это меню не стандартным перебором меню, а например, удержанием кнопки энкодера при включении девайса.

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

KovAl, про затык  на 150МГц - к сожалению проблема есть, и это проблема в библиотеке, но  при шаге перестройки 10МГц  не виснет. Может есть какие-то обходные решения, не выяснял. По поводу калибровки  -уже сказал выше. Я сам ничего не калибровал. Может, если когда -то руки дойдут, -поставлю кварц tcxo высокой точности.  Понятно, что на плате si5351c за 200 рублей кварц ставят самый дешевый.  Вообще в плане дополнений -с моей стороны никаких планов нет, и скорее всего уже не будет. Но исходник есть, и ничего не мешает желающим допилить под свои хотелки.. 

KovAl
Offline
Зарегистрирован: 25.01.2022

dimax пишет:

KovAl, про затык  на 150МГц - к сожалению проблема есть, и это проблема в библиотеке, но  при шаге перестройки 10МГц  не виснет.

Увы, виснет.. В точности так же.

Попробуйте "пролистать" вперёд/назад. На "минусе" 150 зависнет.

dimax пишет:

По поводу калибровки  -уже сказал выше. Я сам ничего не калибровал. Может, если когда -то руки дойдут, -поставлю кварц tcxo высокой точности.

Это какой же, интересно? Рубидиевый генератор за $к? :-)

Любой TCXO - это ничто иное, как ТЕРМОСТАБИЛИЗИРОВАННЫЙ кварцевый генератор.

Т.е. обеспечивается высокая стабильность частоты генерации, в зависимости от температуры. 

К точности установки частоты это имеет не такое уж и близкое отношение..

И при таком "умножении", как в SI5351, по-любому потребуется калибровка даже с крутым ТСХО.

А вольтметр как откалибруете? Будете ставить "батарейку высокой точности"? ;-)

dimax пишет:

Вообще в плане дополнений -с моей стороны никаких планов нет, и скорее всего уже не будет.

Очень и очень печально.. :-(

Весьма интересная разработка, которую, при желании автора, можно было бы существенно приблизить к прецизионному прибору.

А сейчас, повторюсь, это "конструкция выходного дня", с весёлыми картинками (прямоугольники/пила/etc...).

На поиграться и разобрать на запчасти..

dimax пишет:

Но исходник есть, и ничего не мешает желающим допилить под свои хотелки.. 

А Вам когда-нибудь приходилось "допиливать" чужие нестандартные разработки?

 

Piton
Offline
Зарегистрирован: 18.01.2022

По поводу 150мГц проверил у себя - вроде как ничего не зависает. С мелким шагом не пробовал, но на десятках мГц всё нормально. Заодно сделал несколько фото частоты сишки.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

KovAl пишет:

Увы, виснет.. В точности так же. Попробуйте "пролистать" вперёд/назад. На "минусе" 150 зависнет.

Переход через 150MHz  там какое-то сложное место, в issue фигурировали подобные странности c этой цифрой. Попробуйте перекинуть вывод изменяемой частоты на SI5351_CLK2, может полегчать. Конечно по-хорошему надо бы разобраться с этим багом, но крайне не охота.

KovAl пишет:

Весьма интересная разработка, которую, при желании автора, можно было бы существенно приблизить к прецизионному прибору. А сейчас, повторюсь, это "конструкция выходного дня", с весёлыми картинками (прямоугольники/пила/etc...). На поиграться и разобрать на запчасти..

Именно. Я всегда и писал, что это игрушка "из говна и палок".

KovAl пишет:

А Вам когда-нибудь приходилось "допиливать" чужие нестандартные разработки?

Постоянно. Собссно эта вся тема  и есть постепенный допил вот этой конструкции. 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Кажись разобрался с багом перехода через 150МГц, -помогло разнести выходы si каждый на разный модуль PLL, видимо библа сама до этого не может додуматься. В общем всего пару строк надо в сетап добавить.

do{ //проверка si5351, если не найден то из цикла проверки не выйдет
if (si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0)==0){ //Serial1.println("I2C address Si5351 not detected"); 
} delay(300);  
  si5351.update_status(); 
   if ( !si5351.dev_status.REVID){ //Serial1.println("Error read Si5351 ID");
      }  }  while (!si5351.dev_status.REVID);

si5351.set_ms_source(SI5351_CLK0, SI5351_PLLA);
si5351.set_ms_source(SI5351_CLK1, SI5351_PLLB);

          si5351.set_freq(2500000000, SI5351_CLK0);// будущая тактовая 25МГц  для мк с выхода0 (*100)

 

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

KovAl пишет:

Вы забыли про "овраги". Про тех, для кого всё то, что написано в https://github.com/etherkit/Si5351Arduino - не более чем "барбармия кергуду".

Как откалибровать тем, кто бинарник в стм-ку заливал?

Тем, кто "бинарник в стм-ку заливал", скорее всего калибровка не нужна. А кому надо, смогут и мозгами пошевелить, разобраться, что к чему и зачем. Тем более, что есть готовый "конструктор" в посте #130 для данной версии. Распаковал, запустил и делай, что хочешь, хоть тот же бинарник получай :-)

KovAl
Offline
Зарегистрирован: 25.01.2022

dimax пишет:

Кажись разобрался с багом перехода через 150МГц, -помогло разнести выходы si каждый на разный модуль PLL, видимо библа сама до этого не может додуматься. В общем всего пару строк надо в сетап добавить.

Помогло. Спасибо!

P.S.

dimax пишет:

Постоянно. Собссно эта вся тема  и есть постепенный допил вот этой конструкции. 

Ага! Плавно перешедший в совершенно другую конструкцию.

Ох уж эти сказочники! Ох уж эти сказочки! :-)

Piton
Offline
Зарегистрирован: 18.01.2022

Ещё бы с вольтметром разобраться. Вот интересно, опять же. Ещё раз проверил эти 150мГц, даже на минимальном шаге ничего не зависло, или оно не каждый раз зависает?

KovAl
Offline
Зарегистрирован: 25.01.2022

Piton, а вы не пытались победить путанку с цветом на дисплее?

Посмотрел ваши фотки - у меня та же беда - красный с синим перепутан.

Что только не пробовал подсунуть компилятору - никакого эффекта.. :-(

Тут уже писали, что такая беда с дисплеем 128*128, но у меня вроде как тот же, что и у автора - "1.8TFT SPI 128*160".

 

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

А со строкой инициализации tft.initR(INITR_BLACKTAB); пробовали поиграться?

KovAl
Offline
Зарегистрирован: 25.01.2022

MAG-N пишет:

А со строкой инициализации tft.initR(INITR_BLACKTAB); пробовали поиграться?

Ай, спасибо, MAG-N!!! А мужики-то и не знали! :-)

А я весь ум сломал, 333 библы перецеплял, перелопатил, 1000 ..ёв в глотку и якорь в ...у китайцам отправил. :-)

Всего-то и делов - надо было на цвет "ярлычка" на дисплее глянуть.

А он зелёный у моего экранчика... 

tft.initR(INITR_GREENTAB); - и все дела!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

вообще-то в библиотеке всего 4 режима из 14, я допиливал нужные мне еще два

KovAl
Offline
Зарегистрирован: 25.01.2022

Блин.. Достала меня уже эта "зелёная бирка"!

Вчера на радостях не заметил, что с правильными цветами картинка сдвинулась вниз и вправо.

Совсем чуть, но всё одно - неприятно..

MAG-N, не подскажете, где покрутить?

P.S. Нашёл в библе Adafruit_ST7735.cpp

void Adafruit_ST7735::initR(uint8_t options) {
  commonInit(Rcmd1);
  if (options == INITR_GREENTAB) {
    displayInit(Rcmd2green);
    _colstart = 2;
    _rowstart = 1;
  } else if ((options == INITR_144GREENTAB) || (options == INITR_HALLOWING)) {

сделал вот так:

    _colstart = 0;
    _rowstart = 0;

Всё вернулось на место.

Может проще можно было сделать?

P.P.S. Кстати.. Piton, а у вас, похоже, картинка влево сдвинута.

Всё-таки, видимо не зря я кЕтайцам "морское пожелание" направлял. :-)

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

А если так tft.initR(); без всяких бирок?

Piton
Offline
Зарегистрирован: 18.01.2022

KovAl, я сначала даже не обратил внимание на эти цвета. Поменял цвет - и всё как у вас, те же смещения. У меня есть ещё один такой дисплей от другого продавца, но проверить пока не могу, т.к. этот впаянный на плате. Проверю в другой версии платы. А где эта библиотека находится? Тоже хочу исправить. В исходном варианте смещения влево не было, это так на фото отразилось.

KovAl
Offline
Зарегистрирован: 25.01.2022

Piton пишет:

В исходном варианте смещения влево не было, это так на фото отразилось.

Уверены? А где край рамки слева? И цифирка "2" на фото, где 225МГц вроде как "за угол слегка зашла".

Piton пишет:

А где эта библиотека находится? 

Если нет в папке со скетчем и в скетче объявлена как #include <Adafruit_ST7735.h>(именно в угловых скобках, а не в кавычках), то скорее всего в

Цитата:
C:\Users\Имя_Пользователя_компа_\Documents\Arduino\libraries\Adafruit-ST7735-Library-master\

Ну или в папке libraries, где установлена Arduino IDE.

 

MAG-N пишет:

А если так tft.initR(); без всяких бирок?

Гм.. Судя по условию в библе

 } else {
    // colstart, rowstart left at default '0' values
    displayInit(Rcmd2red);
 

дисплею будет выдана "красная метка" :-)

И во что это выльется, одному дисплею известно.. Да и лень уже пробовать. ;-)

Piton
Offline
Зарегистрирован: 18.01.2022

Что то никак не получается с этой библиотекой. В авторской сборке в папке libraries её нет. Скачал архив, подключил, пишет что подключено, но в папках её нет. Сделал изменения в архиве, переподключил, но ничего после прошивки не меняется. Разархивировал, положил в папку libraries-тоже без изменений. Пока в тупике. 

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

Piton пишет:

Что то никак не получается с этой библиотекой. В авторской сборке в папке libraries её нет. 

Плохо искали. В авторской сборке Portable\sketchbook\libraries

Piton
Offline
Зарегистрирован: 18.01.2022

Да, туда не посмотрел, спасибо. Там была библиотека Adafruit_ST7735_and_ST7789_Library, а я ещё добавил ту, что  мне написал KovAl  Adafruit-ST7735-Library-master и там делал изменения, что никак не влияло на результат. Короче, для меня это немножко "тёмный лес", могу заблудиться. Ещё раз спасибо, сейчас уже картинка на месте.

Piton
Offline
Зарегистрирован: 18.01.2022

В общем, всё что надо было посмещал, рамку, текст, размер, теперь всё замечательно. По поводу вольтметра: та проблема, о которой я уже упоминал присутствует только в режиме измерения синуса. В режиме вольтметра тот же синус измеряется без каких либо провалов, всё почти линейно.

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

Piton пишет:

Да, туда не посмотрел, спасибо. Там была библиотека Adafruit_ST7735_and_ST7789_Library, а я ещё добавил ту, что  мне написал KovAl  Adafruit-ST7735-Library-master и там делал изменения, что никак не влияло на результат. Короче, для меня это немножко "тёмный лес", могу заблудиться. Ещё раз спасибо, сейчас уже картинка на месте.

А зачем было что-то добавлять? В папке библиотеки Adafruit_ST7735_and_ST7789_Library уже есть Adafruit_ST7735.h, Adafruit_ST7735.cpp - там и надо было делать все изменения. Эта самая Adafruit_ST7735_and_ST7789_Library - два в одном - для дисплеев с контроллерами ST7735 и ST7789. Ну а "тёмный лес" - это понемногу и со временем пройдет :-)

Piton
Offline
Зарегистрирован: 18.01.2022

Так я ж её не нашёл, спрашивал где она должна быть, мне KovAl ответил где и как называется библиотека, там её не было, вот я её и установил. Но она установилась в то место, о котором я не знал. Поэтому я её разархивировал и кинул в корневую папку libraries и там делал изменения, которые никак ни на что не влияли. А потом , благодаря вашей подсказке, нашёл эту папку, где были уже обе эти библиотеки. Не дошло сразу, что программа Portable и в такой же папке надо искать библиотеку.

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

Главное, что руки не опустили. Получилось, и это хорошо.

b707
Offline
Зарегистрирован: 26.05.2017

Piton пишет:

Так я ж её не нашёл, спрашивал где она должна быть, мне KovAl ответил

на будущее - есть простой и очень эффективный способ найти пути для всех библиотек скетча.

  Просто запускаете компиляцию , когда она закончится - Ардуино ИДЕ перечислит вам все использованные библиотеки прямо в том же выводе, где поразывается размер скетча и память:

 

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

Это если подробный вывод включен. А по-умолчанию "Скетч использует..."

KovAl
Offline
Зарегистрирован: 25.01.2022

MAG-N пишет:

Формирователь - да, от 0 до мегагерц 80-100 не сразу, но работает, а делителей полно, хоть на 2 хоть на 256, частота от 1 ГГц и выше, у них еще и "чуйство" загрублять приходится, чтобы на пролетающую мимо муху не реагировали :-) Только после делителя надо и частотомер соответствующим образом подстроить.

А где, вернее - как поправить в скетче, не подскажете? V3.6

Собрал формирователь/делитель по схеме, которую вы предложили. Только на другом делителе - U664.

Практически тот же самый (делитель на 64), даже цоколёвка совпадает.

Пока методом тыка сделал так  - в void freq_meter

//    if (infreqpsc) {freq*=8;}// если включен делитель на 8 то результат умножить на 8
    if (infreqpsc) {freq*=256;}// если включен внешний делитель на 64, то результат умножить на 256(64*4)

Но наверное, в этом случае делитель на 8 вообще не нужен. Только вот как его правильно убрать, не соображу.

С двоичной арифметикой и с таймерами я очень на "Вы".. :-(

 

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

В первой строке 8 заменить на 64, вторая строка не нужна. Коэффициент деления знаете только Вы, а прибор делает то, что в программу заложено. В оригинале предполагается, что на входе делитель на 8, поэтому результат измерения умножается на 8. В Вашем случае это 64.

if (infreqpsc) {freq*=64;} // если включен делитель на 64 то результат умножить на 64

KovAl
Offline
Зарегистрирован: 25.01.2022

MAG-N пишет:

В оригинале предполагается, что на входе делитель на 8.

Гм.. Так это, наверное, софтверный делитель?

MAG-N пишет:

if (infreqpsc) {freq*=64;} // если включен делитель на 64 то результат умножить на 64

Увы.. Результат в этом случае будет в 4 раза меньше. Почему так, сам не понял.

Предполагаю, что это связано с теми самыми, не любимыми мною таймерами и двоичной арифметикой.

Наверное, всё же надо просто убрать делитель на 8, и после этого результат умножить на 64.

Вот только как это сделать "культурно", пока не могу сообразить..

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

Я не учел, что делитель на 8 встроенный. Тогда вместо 64 надо 512 подставить: 8*64=512

Можно применить другие делители

МС12080 10/20/40/80

МС12093 2/4/8

KovAl
Offline
Зарегистрирован: 25.01.2022

MAG-N пишет:

Я не учел, что делитель на 8 встроенный. Тогда вместо 64 надо 512 подставить: 8*64=512

Неа.. Тогда результат будет в 2 раза больше. :-)

Я тоже так сначала посчитал, но не прокатило..

MAG-N пишет:

Можно применить другие делители

Уже не можно, т.к. плата формирователя/делителя уже исполнена в рабочем варианте (не на макетке).

И наверное, всё же проще софт поправить?

Или мы не ищем лёгких путей? :-)

MAG-N
MAG-N аватар
Offline
Зарегистрирован: 05.06.2017

А кто мешает 256 подставить? И все будет правильно, но вот почему эта ошибка в два раза - непонятно. Или встроенный делитель делит на 4, или U664 почему-то делит на 32

KovAl
Offline
Зарегистрирован: 25.01.2022

Метод тыка - наше всё! :-)

Победил с его помощью.

    TIMER2_BASE->CR2=1<<5; //MMS:010 управление подчинённым в режиме "Update" 
//    TIMER2_BASE->SMCR= (1<<14)|(5<<0)|(infreqpsc<<13)|(infreqpsc<<12);// режим 2 внешнего тактирования + делитель/8 + разрешение работы от таймера1 
    TIMER2_BASE->SMCR= (1<<14)|(5<<0)|(infreqpsc<<12);// режим 2 внешнего тактирования + разрешение работы от таймера1 
    TIMER2_BASE->ARR=65535; //считать до максимума

Ну и тут 

//    if (infreqpsc) {freq*=8;}// если включен делитель на 8 то результат умножить на 8
    if (infreqpsc) {freq*=64;}// если включен внешний делитель на 64, то результат умножить на 64

Теперь вылезла другая странность..

Меряю 30 МГц..

Если подавать сигнал с FFCO, то с обоих входов (формирователь/делитель) результат достоверный.

А вот если те же 30 МГц подать с выхода CLK1 SI5351, то достоверный результат будет только с формирователя.

С делителя получается ровно половина (15МГц)..

Кто-то съедает половину импульсов..

Прям как у Алисы - всё страньше и страньше, всё чудесатее и чудесатее.. :-) 

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

MAG-N пишет:

Это если подробный вывод включен. А по-умолчанию "Скетч использует..."

всё стандартно и искать где библиотеки надо посмотрев настройки )))

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

всё стандартно и искать где библиотеки надо посмотрев настройки )))

а вот тут ты пальцем в небо.

Библиотеки могут лежать не только по этому пути, но так же и в каталоге пользователя, и в App_Data и в самой папке скетча.

Более того, на ПК может быть несколько каталогов Ардуино и либы будут браться из любого. Ты думаешь, как у людей получается по нескольку копий одной библиотеки?

 

Мой способ. описанный выше - хорош тем. что показывает пути именно к тем библиотекам, которые были использованы при данной компиляции скетча.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

KovAl пишет:

    TIMER2_BASE->SMCR= (1<<14)|(5<<0)|(infreqpsc<<12);// режим 2 внешнего тактирования + разрешение работы от таймера1 

    TIMER2_BASE->ARR=65535; //считать до максимума

Ну и тут 

//    if (infreqpsc) {freq*=8;}// если включен делитель на 8 то результат умножить на 8
    if (infreqpsc) {freq*=64;}// если включен внешний делитель на 64, то результат умножить на 64

Теперь вылезла другая странность..

Меряю 30 МГц..

Если подавать сигнал с FFCO, то с обоих входов (формирователь/делитель) результат достоверный.А вот если те же 30 МГц подать с выхода CLK1 SI5351, то достоверный результат будет только с формирователя.С делителя получается ровно половина (15МГц)..Кто-то съедает половину импульсов..

Зачем вы вообще меняете действие флага infreqpsc? Это режим аппаратного деления cредствами самого МК. Он включается кнопкой энкодера.  А  программирование регистра TIMER2_BASE->SMCR= (1<<14)|(5<<0)|(infreqpsc<<12);  Будет делить на 2 при включённом флаге. Зачем? Скетч кстати вообще не рассчитан  на подключение внешнего делителя. На низких частотах там используется другой алгоритм, он с внешним делителем не совместим, точность измерения будет хуже в число раз делителя. Логичнее было бы по этому флагу аппаратно подключать/отключать ваш делитель. Тогда бы бы общая идеология не нарушилась.

KovAl
Offline
Зарегистрирован: 25.01.2022

dimax пишет:

Зачем вы вообще меняете действие флага infreqpsc?

Потому-что не хватило толку найти что-то другое, за что можно зацепиться.. :-(

dimax пишет:
Это режим аппаратного деления cредствами самого МК. Он включается кнопкой энкодера.

Это я понял.

dimax пишет:
  А  программирование регистра TIMER2_BASE->SMCR= (1<<14)|(5<<0)|(infreqpsc<<12);  Будет делить на 2 при включённом флаге. Зачем?

Об этом уже писал, что с таймерами и двоичной арифметикой строго на "Вы".. :-(

dimax пишет:
Скетч кстати вообще не рассчитан  на подключение внешнего делителя. На низких частотах там используется другой алгоритм, он с внешним делителем не совместим, точность измерения будет хуже в число раз делителя.

Так мне и не надо делителя на частотах ниже 30 МГц! Там будет работать (и работает, кстати) просто формирователь входного сигнала.

Мне необходимо всего лишь обойти деление на 8 на частотах выше 30 МГц. А вот выше как раз и работать с делителем.

Или не стОит этого (отключать делитель на 8) делать?

Подскажите, пожалуйста, как это правильно реализовать.

dimax пишет:
Логичнее было бы по этому флагу аппаратно подключать/отключать ваш делитель. Тогда бы бы общая идеология не нарушилась.

Именно так и поступил

void freq_meter(){
// коммутатор "формирователь/делитель"
  if (infreqpsc) { digitalWrite(PB2,LOW); }
  else { digitalWrite(PB2,HIGH); }

/////////////////////счётчик импульсов
si5351.set_freq(2500000000, SI5351_CLK0);//  тактовая частота по умолчанию с выхода 1
pinMode(PA15,INPUT_PULLDOWN); // вход частотометра

PB2 подключён вместо переключателя "F1/F2" , вот здесь(#134). Схема один-в-один.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

KovAl пишет:

Или не стОит этого (отключать делитель на 8) делать?

Его нужно выключить совсем а не  переключать на /2.  Уберите биты настройки делителя (12 и13) из функции частотометра совсем. т.е. TIMER2_BASE->SMCR= (1<<14)|(5<<0); Это будет вход без деления.

Что б сделать совсем правильно -нужно более кардинально переделывать функцию частотометра, что б исключить  ситуацию, что сигнал идёт низкочастотный, а делитель включен.

KovAl
Offline
Зарегистрирован: 25.01.2022

dimax пишет:

 Уберите биты настройки делителя (12 и13) из функции частотометра совсем. т.е. TIMER2_BASE->SMCR= (1<<14)|(5<<0); Это будет вход без деления.

Снова чудеса с измерением, теперь в обратную сторону.

Если подавать 30 МГц с CLK1, измерения достоверные, что с "НЧ" входа, что через делитель.

А вот если те же 30 МГц будут поданы с FFCO, то достоверные измерения только с "НЧ" входа, через делитель происходит умножение на 2..

Предполагаю, что это уже что-то аппаратное. 

Буду ставить преобразователь уровней на TXS0108E. Все 5-вольтовые сигналы пропущу через него на STM.

 

dimax пишет:

Что б сделать совсем правильно -нужно более кардинально переделывать функцию частотометра, что б исключить  ситуацию, что сигнал идёт низкочастотный, а делитель включен.

А вот здесь не врубаюсь..

В чём может быть разница измерения  15 МГц, пришедших в "НЧ" вход и теми же 15 МГц, прилетевшими с делителя (1000/64=15,625)?

Или вы имеете ввиду ситуацию, когда 1 МГц, например, измерять через делитель?

Так это уже проблемы "измеряющего". Нефига частоту ниже 30 МГц измерять на "ВЧ" входе.

Согласно даташита, U664 не гарантирует работу ниже 30 МГц.

KovAl
Offline
Зарегистрирован: 25.01.2022

Ещё один момент давно хочу уяснить - почему частотомер всегда 10 МГц со своего генератора (на SI5351) показывает как 9 999 878?

Ну и не только 10 МГц. Практически все сгенерённые сишкой частоты выдает с одной и той же погрешностью, кратной 12.

1 МГц отображается как 999 988, 10МГц - соотв. как 9 999 878 и т.п..

Это неустранимая погрешность, связанная с тем, что тактирование CPU идёт от измеряемого генератора?

И при измерении "внешних" устройств этой ошибки не будет.

Или всё же сиё живёт где-то в дебрях софта?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

а вот тут ты пальцем в небо.

Библиотеки могут лежать не только по этому пути, но так же и в каталоге пользователя, и в App_Data и в самой папке скетча.

Мой способ. описанный выше - хорош тем. что показывает пути именно к тем библиотекам, которые были использованы при данной компиляции скетча.

компилятор берёт библиотеки оттуда, откуда ты его ЗАСТАВЛЯЕШЬ брать, а если их там нет, то ищет строго в определённой последовательности...
Почитай документацию наконец-то )))

b707
Offline
Зарегистрирован: 26.05.2017

KovAl - а вы точность настройки частоты в даташите смотрели? - думаю, что +/- 12 гц - это очень даже хорошо для 10 Мгц, в реальности там наверняка все значительно хуже . или вы исключительно про эстетику - любите красивые цифры на дисплее. независимо от того. что они реально значат? :)

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

Почитай документацию наконец-то )))

лучше ты читай внимательнее. Твое замечание не про то, о чем я писал.

далее дискутировать не буду. У нас с тобой, как мне кажется, есть четкое мнение друг о друге ( о моем ты, наверно. догадываешься).

Не вижу смысла продолжать.

KovAl
Offline
Зарегистрирован: 25.01.2022

b707 пишет:
KovAl - а вы точность настройки частоты в даташите смотрели?

В даташите чего? SI5351? Так там аглицким по белому написано, что

Цитата:
the Si5351 can generate any frequency up to 200 MHz on each of its outputs  with  0 ppm  error.

Или Вы про что-то другое??

b707 пишет:

 +/- 12 гц - это очень даже хорошо для 10 Мгц, в реальности там наверняка все значительно хуже .

Вообще-то, не 12, а 122Гц для 10 МГц.

Да, для 10 МГц можно - как говорил т. Бендер - плюнуть слюной на эти 122Гц. :-)

А как Вам 144 998 272 для 145.0 МГц? 1728 Гц, однако.

И 2,8КГц "вранья" для 225 МГц тоже не радуют..

С учётом нынешних реалий, это уже совсем не кот наплакал..

b707 пишет:

или вы исключительно про эстетику - любите красивые цифры на дисплее. независимо от того. что они реально значат? :)

Ровно наоборот. Именно эта "напудренная красота" и напрягает. Ну и в первую очередь, несоответствие действительности.

Имею желание сделать прибор, которому можно доверять, а не смотреть на нём весёлые картинки..

Вообще-то, я писАл о том, что явная кратность ошибки числу 12, "ненавязчиво намекает" на то, что эта "очепятка", возможно, устранима несколькими нажатиями клавиш. 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

KovAl пишет:

Вообще-то, не 12, а 122Гц для 10 МГц.

А как Вам 144 998 272 для 145.0 МГц? 1728 Гц, однако.

И 2,8КГц "вранья" для 225 МГц тоже не радуют..

...

Вообще-то, я писАл о том, что явная кратность ошибки числу 12, "ненавязчиво намекает" на то, что эта "очепятка", возможно, устранима несколькими нажатиями клавиш. 

Ни 122, ни 2800 не кратны 12.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

Не вижу смысла продолжать.

отож! ты случаем не под знаком весов родился, у них обычно такой апломб изрядный

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

KovAl пишет:

Ещё один момент давно хочу уяснить - почему частотомер всегда 10 МГц со своего генератора (на SI5351) показывает как 9 999 878?

Да, знаю что есть такая проблема, но причин не знаю, иначе бы её не было. По идее сигнал от того-же тактового, от которого тактируется сам МК алгоритм должен измерять с точностью +/- 1Гц. Почему это не происходит -фик знает,  может потому, что МК доумножает её на 4, и отсюда рассинхрон. Проблема слишком незначительная, а времени на её решение требуется очень много. Может когда-нибудь дойдут руки, выясню.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

KovAl пишет:

Ещё один момент давно хочу уяснить - почему частотомер всегда 10 МГц со своего генератора (на SI5351) показывает как 9 999 878?

Если я правильно понял вопрос, то:

Я собирал на макетной плате генератор на Si5351, для контроля частоты использовал цифровой осциллограф. Тоже заметил, что несмотря на то, что в синтезатор загружалась правильная частота - частота на выходе была немного не точная. Посмотрел частоту кварца si5351 - она была тоже "не в ажуре". Короче просто сделал "калибровку" и все стало тип-топ.)

KovAl
Offline
Зарегистрирован: 25.01.2022

dimax пишет:

Проблема слишком незначительная, а времени на её решение требуется очень много. 

Ну не такая уж и незначительная, если рассматривать измерение частот от 100МГц и выше.

Ошибка в 2,752 КГц на 225МГц уже существенна, если рассматривать её как абсолютное значение, а не в %.

Кстати.. Ошибка проявляется и при измерении частоты и от внешнего генератора тоже.

Т.е. "внутреннее тактирование" тут не при делах..

А что если пойти путём лечения не причины, а следствия? Т.е. тупо прибавлять к измеренной частоте некое значение.

Просматривается же явная зависимость абсолютного значения ошибки от какого-то некоего числа.

Ну вот смотрите:

1 МГц - ошибка 12Гц

10 МГц - ошибка 122Гц

20 МГц - ошибка 244 Гц

100 МГц - ошибка 1216 Гц

200 МГц - ошибка 2432 Гц

BOOM пишет:

Если я правильно понял вопрос.. 

..skip..

...просто сделал "калибровку" и все стало тип-топ.

Нет, Вы не об этом. Озвученная проблема не зависит от конкретной частоты тактового генератора сишки.

От этого зависит только абсолютное значение генерируемой сишкой частоты.

 

b707
Offline
Зарегистрирован: 26.05.2017

KovAl пишет:

dimax пишет:

Проблема слишком незначительная, а времени на её решение требуется очень много. 

Ну не такая уж и незначительная, если рассматривать  её как абсолютное значение, а не в %.

вообще-то в профессиональной технике принято оценивать именно относительную погрешность , выраженную в долях базовой величины, а не пугаться абсолютных цифр.

И потом,  вам кажется уже указывали, что это любительский проект, созданный автором для собственного удовольствия, а вы постоянно высказываете к нему претензии, как к профессиональному инструменту.

В таких проектах действует правило - инициатива наказуема. Автор сделал то, что ему было интересно. Если хотите улучшить или что-то не устраивает - исходный код открыт, берите и исправляйте. Или попытайтесь заинтересовать автора своими идеями по развитию проекта.