Такого простого решения нет,что бы вписать нужную частоту,определенный вывод si5351 - для выхода, шаг подстройки, диапазон подстройки,примененн ый задающий кварц,амплитуду на выходе, и других тонкостей(управление ,индикация и т.д.) Есть исходник - вот в нем все эти данные и прописываются. И если кому то, даже не программисту , нужна определенная частота и связанное с этим управление, то можно или самому прошить(имея простейший программатор из Поднебесной) и контроллер Atmel , или кого то попросить из ближайших соседей, или через "Почту России" подождать прошитый контроллер.
Поскольку он закрыт, то было предложение чуть доработать его для реализации минимальной функциональности изделия - опорный генератор на одну заданную частоту, максимум с входом разрешения. Для этого нужно выделить в отдельную утилиту генерацию параметров и их сохранение в виде HEX записи для EEPROM, а в коде оставить только загрузку этих параметров в сишку. При этом пользователю нет нужды иметь открытый исходник для конфигурации генератора под свою частоту.
просто указать в HEXе ячейки которые отвечают в прямом или непрямом виде за тактовую частоту. это конечно хотелка.
Спасибо от Henriks.V
я собственно не настаиваю на "прямом" вводе частоты, максимум, за установку отвечают 3 байта. ну я так понимаю, в явном или неявном виде, это уже мелочи.
Здесь для пользователя две операции с устройством, сначала прошить программатором, а потом подключить к UART и задать параметры. Программа их приема живет в MCU, а используется однократно.
Ну вот эту часть и сделать виндовой или даже кросс-платформенной конфигурирующей программой, которая берет значения частоты кварца, желаемого выхода, ну может еще какие опции, а на выходе дает буквально строку HEX для EEPROM. Пользователю остается или прилепить эту строку к общему HEX файлу, или прошить отдельно. Операция программирования остается единственной, и судя по проскакивающим тут сообщениям, она большинство коллег, мало знакомых с контроллерами, совсем не пугает
Почему? Частота это 4 байта. Допустим опорник 27000000 в хекс выглядит как 19BFCC0.
Но в еер запишется как C0FC9B01. То есть запись происходит инверсно- первым в еер будет записан младший байт. Не вам байты в программе писать зеркально а особенность записи в AVR такая. Это нужно учитывать только тем кто будет править данные еер под себя. Всегда так и правили.
Допустим первая нужная частота будет по нулевому адресу. Следующая частота начинается в адреса 4. Потому что читали в 4-х байтовую переменную которая занимает в памяти еер "ячейки" 0-1-2-3.
В программе в том месте где вы указываете частоту нужно прочитать в четырёхбайтовую переменную из еер с нулевого адреса. В результате будет использоваться для расчётов число 27000000. Это частота кварца, с 4 адреса следующие 4 байта частота выхода и т.д. если надо число выходов, выходной ток или включить фазовый сдвиг. Программа дойдя до нужного места обратится к еер и считает что нужно далее делать или использовать. Там действительно всё очень просто.
Самый простой вариант для фиксированных частот можно сделать вообще без всяких расчётов в тиньке! В еер записать то что нужно отправлять в сишку. Я на тини13 так и делал. Вся программа это читать с еер да отправлять в сишку. Всего то байт 25-30 с инициализацией. Именно столько отправляется после всех расчётов
Написать конфигуратор который будет генерить файл еер а в сишке читалка из еер + засылка.
Если нужна перестройка то она обычно в не больших пределах для опорника и тоже считается просто. Данные отправляемые в сишку помимо инициализации разделены на блоки - параметры делителя и PLL. Для перестройки частоты даже в пределах диапазона достаточно менять значение PLL не трогая коэффициент делителя.
Лично я не понимаю где тут можно заблудится. И вы ua4lcn если будете заниматься программированием это поймёте и потом будете ещё очень удивляться как можно было сделать проще и быстрее. Это обычные проблемы начинающих. Все через это проходят. А потом когда начнёт хорошо получаться наступает страшный этап лени когда становится уже не интересно а тиньки с мегами уже начинают ставится везде где надо нечто большее чем просто тумблером включить и выключить.
Я программирование микроконтроллеров два года назад забросил. Это уже в прошлом. На другое переключился. Человек живёт ровно до того момента пока он что то изучает и развивается.
Дык раньше всегда так и делали. Все эти сервисные установки зря только жрут память. А с другой стороны меги и тиньки сейчас стоят копейки и памяти хватает. Это с АТ90S2313 за каждый такт и байт надо было бороться.
Спасибо от urfin3
Даже это не нужно. Есть софт для Si5351: Silicon Labs, Clock Software Development Tools. При все конфигурации (кварц, выходи, частоты и др.) есть возможность сгенерировать выходной файл register_map.h с значения регистров. Напр. с 99 рег., 85 из них "ноль". Пользователь может просто взять свои необходимые данные (или все) и перевести их в EEPROM.
В файле ниже: ч. 145,775 MHz, кварц 27,000 MHz
Спасибо от inter02
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)