/* * si5351mcu - Si5351 library for Arduino, MCU tuned for size and click-less * This is the packed example. * Copyright (C) 2017 Pavel Milanes */ /*************************************************************************** * Этот пример предназначен для мониторинга (сканирования) с приемником RTL-SDR   * но вы можете изменить частоту и другие переменные для тестирования с вашим оборудованием.   * Установите программное обеспечение SDR для мониторинга диапазона от 60 до 62 МГц.   *   * Это установит 60,0 МГц в тактовой частоте 0, положенной и чередующейся частоте.   * на 60,5 и 61,0 МГц на CLK1 и CLK2, чтобы показать, что они являются взаимоисключающими.   *   * Затем выполните серию измерений от 60 до 62 МГц на CLK2 с остановкой каждые 200 кГц.   * и затем последовательность импульсов в одну секунду будет следовать с различными уровнями мощности   *   * Примите во внимание вашу ошибку XTAL, см. Si.correction (###) ниже ***************************************************************************/ #include "si5351mcu.h" // lib instantiation as "Si" Si5351mcu Si; // Остановка через каждые 200 КГц на 3 секунды для измерения #define EVERY 200000 // stop every 200khz #define DANCE 3 // 3 seconds // некоторые переменные long freqStart = 60000000; // 60.0 MHz long freqStop = 62000000; // 62.0 MHz long step = 10000; // 10.0 kHz long freq = freqStart; void setup() { // init the Si5351 lib Si.init(); // Fля другого кварца (по умолчанию 27.00000 МГц)     // просто передаем его в процедуру инициализации, вот так // Si.init(26570000); // становить и применить ваш рассчитанный поправочный коэффициент для кристалла Si.correction(-1250); // предварительно загружаем частоты Si.setFreq(0, freqStart); Si.setFreq(1, freqStart); // сброс PLLs Si.reset(); // помещаем тон в стартовую частоту на CLK0 Si.setFreq(0, freqStart); Si.enable(0); // сделать качание на двух выходах Si.setFreq(1, freqStart + 500000); // CLK1 вывод Si.enable(1); delay(3000); // Si.disable(1); // если нет необходимости отключать, включение CLK2 отключить это Si.setFreq(2, freqStart + 1000000); // CLK2 вывод Si.enable(2); delay(3000); //Si.disable(2); // если нет необходимости отключать, включение CLK1 отключить это Si.setFreq(1, freqStart + 500000); // CLK1 вывод Si.enable(1); delay(3000); //Si.disable(1); // если нет необходимости отключать, включение CLK2 отключить это Si.setFreq(2, freqStart + 1000000); // CLK2 вывод Si.enable(2); delay(3000); Si.disable(2); // это последний скачек, отключить его Si.disable(0); // выключаем CLK0 // становить CLK2 на стартовую частоту Si.setFreq(2, freqStart); // сейчас отключено } void loop() { // проверка остановки для измерения if ((freq % EVERY) == 0) { // пришло время перевернуть его for (byte i = 0; i < 4; i++) { // тключаем выход clk2 Si.disable(2); delay(500); // power mod, библиотека определяет некоторые макросы для этого:             // SIOUT_2mA, SIOUT_4mA, SIOUT_6mA и SIOUT_8mA             //             // Но они случайно совпадают от 0 до 3             // поэтому я буду использовать счетчик циклов для этого (i)             //             // кроме того, установка мощности на выходе включит его             // поэтому я явно опущу здесь разрешение Si.setPower(2, i); //Si.enable(2); delay(1000); } // сбросить мощность ниже Si.setPower(2, SIOUT_2mA); // становить его для нового цикла freq += step; } else { // проверяем если мы на пределе if (freq <= freqStop) { // нет, установить и увеличить Si.setFreq(2,freq); // но может быть вместо CLK0 или CLK1 // установить его для нового цикла freq += step; // небольшая задержка, чтобы немного замедлить процесс. delay(50); } else { // мы достигли предела, сброс к началу freq = freqStart; } } }