Автор Тема: Управление гетеродином на основе ADF4350/ADF4351  (Прочитано 20146 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн LZ2WSG

  • Пользователь
  • **
  • Сообщений: 43
  • Репутация: +16/-0
  • QRA: KN34PC
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #30 : 21 Январь 2022, 22:45:42 »
В качестве интересного занятия с интересным микроконтроллером (с крайне ограниченными ресурсами), попробовал то же техническое задание:
ADF4351 с ATtiny13A, четыре выходные частоты, выбранные через два входа, тот же аппаратный интерфейс/схема, с реализацией через Arduino IDE,
запись ATtiny13A через Arduino UNO/Nano (MicroCore):

00: 144 MHz, REFIN is 10 MHz
01: 430 MHz, REFIN is 10 MHz
10: 432 MHz, REFIN is 10 MHz
11: 435 MHz, REFIN is 10 MHz

Программирование Attiny13A: в Arduino IDE через Arduino Nano/UNO и MicroCore. Сссылки в помощь:

1. Programming ATtiny13 with Arduino Uno
https://create.arduino.cc/projecthub/taunoerik/programming-attiny13-with-arduino-uno-07beba

2. MicroCore
https://github.com/MCUdude/MicroCore

Использовал вариант 2: Скопировал файлы с папки из github в \Documents\Arduino\hardware\ и MicroCore появлилoсь в Arduino IDE меню. Затем, по
инструкции из ссылки, Arduino Nano стал программатором. Internal clock 1.2 MHz, не необходимо уст. фюзов.

Но на всякий случай:
Цитировать
13.menu.clock.1M2=1.2 MHz internal osc.
13.menu.clock.1M2.bootloader.low_fuses=0b0{bootloader.eesave_bit}101010
13.menu.clock.1M2.build.f_cpu=1200000L
Мой модуль имеет питание +5V, а Arduino дает выходные сигналы 5V. Временно установил делители за записи. Соблюдайте напряжение питания, а
также требуемые уровни. Потом все может перейти на 3,3V.
---
Oптимизация кода для ATtiny13A ведет себя странно: добавляешь один цикл ... и программа не помещается :) (150%). Повторяющийся код, расточительный, и сделано: данные находятся во флэш-памяти. Некоторые строки оставались явно неоптимальными, но зато код занимал меньше места в памяти. Есть место и для других идей :).
Цитировать
Скетч использует 560 байт (54%) памяти устройства. Всего доступно 1024 байт.
Глобальные переменные используют 7 байт (10%) динамической памяти, оставляя 57 байт для локальных переменных. Максимум: 64 байт.
« Последнее редактирование: 21 Январь 2022, 22:51:20 от LZ2WSG »
Веселин, LZ2WSG

Оффлайн GM

  • Старожил
  • ****
  • Сообщений: 201
  • Репутация: +45/-9
  • QRA: KO85SK
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #31 : 22 Январь 2022, 17:53:27 »
Скетч использует 560 байт (54%) памяти устройства. Всего доступно 1024 байт. Глобальные переменные используют 7 байт (10%) динамической памяти, оставляя 57 байт для локальных переменных. Максимум: 64 байт

Видимо, ардуино не заточен для управления ADF4350 :-(. У меня код занимает 246 байт памяти (24%), остаётся 778 байт, т.е. должно хватить на [768/24]=32 частоты.
Делать надо сразу хорошо, а плохо - само получится.

Оффлайн LZ2WSG

  • Пользователь
  • **
  • Сообщений: 43
  • Репутация: +16/-0
  • QRA: KN34PC
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #32 : 22 Январь 2022, 18:28:32 »
ОФФТОП: Нет необходимости сравнивать языки программирования и компиляторы. Каждый любит то, что ему нравится. Главное, получать удовольствие от хобби.
Веселин, LZ2WSG

Оффлайн r6dlc Владимир

  • Постоялец
  • ***
  • Сообщений: 90
  • Репутация: +14/-1
  • Подпись находится в стадии разработки
  • QRA: LN05na
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #33 : 22 Январь 2022, 19:02:06 »
Интересно, но не совсем понятно, при чем тут ардуино? Реализовать программирование не выпаивая атини13 ? У меня в самодельном ап конверторе для qo-100 ,ардуино нано управляет ADF4351,еще и телеграфные посылки  реализованы ,скетч позаимствовал у Немецких радиолюбителей. Но тут же смысл в компактности на атини13 , разные маячки итд удобнее.
« Последнее редактирование: 22 Январь 2022, 19:23:07 от r6dlc Владимир »

Оффлайн LZ2WSG

  • Пользователь
  • **
  • Сообщений: 43
  • Репутация: +16/-0
  • QRA: KN34PC
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #34 : 22 Январь 2022, 21:15:49 »
... при чем тут ардуино? Реализовать программирование не выпаивая атини13 ? ...
Да, Arduino -> как программатор для ATtiny13A. Среда для программирования: Arduino IDE (и добавка для ATtiny13A). Все открыто, никаких лицензий нет для среди писания программ. После записи и корректировки нужных частот отключите Arduino от клемм, не необходимо больше при експлоатации.
Веселин, LZ2WSG

Оффлайн GM

  • Старожил
  • ****
  • Сообщений: 201
  • Репутация: +45/-9
  • QRA: KO85SK
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #35 : 22 Январь 2022, 21:21:27 »
GM Помогите пожалуйста разобраться  чайнику, с редактированием регистров в вашей прошивке

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

Начну с хекс-файла моей прошивки. Он состоит из двух частей, программы и констант для записи в синтезатор.
Вначале идёт программа, затем константы. Программа начинается с адреса 0000, а константы - с адреса 0200. Чтобы понять где находятся адреса, скажу пару слов о структуре строки хекс-файла. Файл текстовый, все байты представлены двумя символами в виде арабских цифр 0-9 и латинских букв A-F. Вначале идёт лидер (двоеточие : ), затем количество байт в строке (10 для полной строки), затем тип строки (00), после этого указывается адрес загрузки данной строки (четыре символа, например 0200), потом указываются данные (обычно 16 байт, 32 символа) и наконец контрольная сумма (скажем, СВ).
Для полного ознакомления можно посмотреть интеловский стандарт (приложение 1). Обращаю ваше внимание, что все строки прошивки независимы друг от друга, так что в принципе их все можно перемешать (за исключением самой первой строки и самой последней), и любой программатор прошьёт память без всяких возражений.

Итак, программа начинается с 0000, а константы - с 0200 (приложение 2). Константы можно оформить, как отдельную программу с ВАШИМИ константами (приложение 3), и откомпилировать её. После компиляции вы получите прошивку для констант (приложение 4). Обратите внимание, что адрес в программе указан в словах (0х0100 - два байта), а адрес в прошивке - в байтах (0200 - тоже два байта).

И, наконец последняя операция. Любым текстовым редактором (скажем, Notepad) открываете прошивку с программой (приложение 2), удаляете строки 0200-0210-0220-0230-0240-0250 и подставляете вместо них строки вашей компиляции (приложение 4). Теперь файл содержит мою программу и ВАШИ константы. Всё, можно прошивать.

Извините, что долго и нудно объяснял вроде бы прописные истины. В общем, суть такая: в текстовом файле прошивки удаляете мои константы и вставляете свои. Остальные строки редактировать не надо. Коллеги, возможно, о чём-то забыл упомянуть, не стесняйтесь спрашивать. Поставим все точки над ё :-).
« Последнее редактирование: 22 Январь 2022, 21:59:51 от GM »
Делать надо сразу хорошо, а плохо - само получится.

Оффлайн GM

  • Старожил
  • ****
  • Сообщений: 201
  • Репутация: +45/-9
  • QRA: KO85SK
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #36 : 22 Январь 2022, 21:58:07 »
ОФФТОП: Нет необходимости сравнивать языки программирования и компиляторы. Каждый любит то, что ему нравится. Главное, получать удовольствие от хобби

Никто не сравнивает, поскольку хозяин - барин. Вам нравится? Да? Ну и пользуйтесь на здоровье.

Но вот из ваших слов следует, что у вас в программе осталось 57 байт под данные. И вроде бы ваша программа должна выбирать из памяти одну из четырех частот, используя два ключа. Но под четыре частоты потребуется 24*4 = 96 байт. Поясните, из какой памяти они выбираются?
Делать надо сразу хорошо, а плохо - само получится.

Оффлайн LZ2WSG

  • Пользователь
  • **
  • Сообщений: 43
  • Репутация: +16/-0
  • QRA: KN34PC
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #37 : 22 Январь 2022, 22:25:55 »
Числа частот: const uint32_t. Они не меняются в процессе выполнения программы => компилятор и его оптимизатор переместил их в FLASH.
---
Для тест сейчас попробовал: ATtiny13A, 12 разных частот, которые меняются каждую 1 секунду (без входов ключи). Например, как beacon.
Оптимизатор иногда творит чудеса.
Цитировать
Скицата използва 1000 байта (97%) от пространството за програми. Максимумът е 1024 байта.
Глобалните променливи ползват 4 байта (6%) от динамичната памет, оставяйки 60 байта за локални променливи. Максимумът е 64 байта.
Веселин, LZ2WSG

Оффлайн SERBUZ

  • Старожил
  • ****
  • Сообщений: 384
  • Репутация: +93/-19
  • Подпись находиться в стадии разработки
  • QRA: LO62DQ
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #38 : 23 Январь 2022, 07:36:58 »
А чем мотивируется выбор этого мелкого и слабого микроконтроллера и прошивка в виде хекса под микроконтроллер?   Повторение конструкции значительно усложняет, сообщения это подтверждают.
Если разрабатываешь конструкцию для промышленного выпуска изделия миллионными тиражами- там разница цене микроконтроллера в 30 руб  существенна, и  принцип минимальной достаточности оправдан.
Но зачем экономить  30 руб на микроконтроллере, публиковать хекс, а не исходник, который нужно править, и  потом иметь из за этого такие сложности  для повторения? 
« Последнее редактирование: 23 Январь 2022, 07:54:30 от SERBUZ »

Оффлайн R2GKH Виталий

  • Ветеран
  • *****
  • Сообщений: 4326
  • Репутация: +581/-355
  • the Truth is out There...
    • Мысли вслух :)
  • QRA: KO92GP
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #39 : 23 Январь 2022, 20:08:32 »
Но зачем экономить  30 руб на микроконтроллере, публиковать хекс, а не исходник, который нужно править, и  потом иметь из за этого такие сложности  для повторения? 

А вдруг кто покусится на "интеллектуальную собственность"? :)
Или выяснится, что публикователь далеко не автор, и даже не соавтор прошивки?

Или кто то сделает что то более оптимальное, и тогда ущемится самолюбие автора?
Мы стояли на плоскости,
                  С переменным углом отражения...

Оффлайн Mildi

  • Ветеран
  • *****
  • Сообщений: 1859
  • Репутация: +150/-366
  • Три дня расстрела и каждый день до смерти.
  • QRA: KP67lx
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #40 : 23 Январь 2022, 21:44:30 »
Ну кто справится с исходником, может и сам себе написать код... Причем сразу под тот контроллер который нужен...
Вытолкать константы по spi нет никакой трудности, это начальный уровень программирования, так называемое моргание светодиодом.
Ну а 8 выводную тиньку запаять в плату можно хоть гвоздем, так что тут тоже есть смысл.
« Последнее редактирование: 23 Январь 2022, 21:54:00 от Mildi »
73! Василий (ex\RA1OGS/1)

Оффлайн SERBUZ

  • Старожил
  • ****
  • Сообщений: 384
  • Репутация: +93/-19
  • Подпись находиться в стадии разработки
  • QRA: LO62DQ
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #41 : 24 Январь 2022, 07:10:49 »
Ну а 8 выводную тиньку запаять в плату можно хоть гвоздем, так что тут тоже есть смысл.
Не уловил логики.  Если кто может впаять  ADF4350 то тем более сможет впаять Атмегу168, если берет готовую плату на али с ADF4350, то ардуино про мини какая религия не позволяет? Копейки стоит и паять то уж проще некуда.   И плату травить не нужно, экономия времени опять же.


Вытолкать константы по spi нет никакой трудности, это начальный уровень программирования, так называемое моргание светодиодом.
   опять не понял что хотели сказать..   А какой уровень поправить в хексе константы- о чем тут в ветке третью страницу идет обсуждение?
« Последнее редактирование: 24 Январь 2022, 07:13:16 от SERBUZ »

Оффлайн Mildi

  • Ветеран
  • *****
  • Сообщений: 1859
  • Репутация: +150/-366
  • Три дня расстрела и каждый день до смерти.
  • QRA: KP67lx
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #42 : 24 Январь 2022, 13:29:02 »
опять не понял что хотели сказать.. 
То что тот кто может изменить исходник и откомпилировать, может и сам написать этот загрузчик
Насчет хекса не знаю. не занимался этим, мне проще написать.
Такой метод использовался с загрузчиком для DFS-1201 почему то никто не жаловался что трудно поменять.
Но в данном случае наверное логичнее было бы открывать хекс с конвертацией в бин, там менять и сохранять как хекс.


Вроде все логично расписано как редактировать http://forum.vhfdx.ru/eteo-teato/adf4350/msg361451/#msg361451
« Последнее редактирование: 24 Январь 2022, 13:59:46 от Mildi »
73! Василий (ex\RA1OGS/1)

Оффлайн LZ2WSG

  • Пользователь
  • **
  • Сообщений: 43
  • Репутация: +16/-0
  • QRA: KN34PC
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #43 : 24 Январь 2022, 14:19:01 »
"Глубокий" OFFTOP: Я написал код другого решения не из-за способа зменения данных (в коде программы или в hex), а о публикацию прогр. кода, пусть даже так просто, как для этой темы. Язык, комилятор значения не имеет.

Некоторые коллеги повторяют 1:1 (с .hex, с полной копией схемы и др.), другие - иногда хотят изменить входы, добавить что-то простое - напр. задержка delay например, третье: к существующим добавляются новые функции., и в-четвертых: только идея, например, последовательность (способ загрузки данных чипа, регистров и т.д), то написать свой собственный код, то есть "заново открыть колесо".

А если программного кода нет, а хочется что-то изменить (другой чип, другую функцию) просто нет выбора, кроме как искать другой такой же конструкции или долговременный: писать свой код. Я не знаю, сколько коммерческих продуктов есть и любой, кто пишет код: продает? :) Но в несколько публичных ресурсов попадаю (и в основном .ru): программа mcu только с hex. Наверное какая-то защита каких-то прав что ли :). A это хобби для многих из нас - в большинстве случаев это: научиться чему-то.  И тренировочная площадка для многих занятий, приятных одновременно.

Пожалуйста, опубликуйте свои программные коды :). Ето может быть для простых функций, а всегда будет  полезно для других ;). (частично использовал переводчик БГ -> РУ)
« Последнее редактирование: 24 Январь 2022, 14:36:23 от LZ2WSG »
Веселин, LZ2WSG

Оффлайн RC3UE

  • Ветеран
  • *****
  • Сообщений: 1507
  • Репутация: +281/-72
  • 13 el F9FT/21 el F9FT
  • QRA: LO07NG
Re: Управление гетеродином на основе ADF4350/ADF4351
« Ответ #44 : 24 Январь 2022, 14:40:29 »
A это хобби для многих из нас - в большинстве случаев это: научиться чему-то.  И тренировочная площадка для многих занятий, приятных одновременно.
Веселин, поддерживаю двумя руками ваш "Глубокий OFFTOP"! :)

P.S. Не сочтите за лесть, но мне очень иппонирует ваше стремление помочь коллегам по хобби.
В свое время вы первый, кто не прошел мимо моих проблем и оказал посильную помощь (в теме синтезатора на qrz.od.ua).
За что я вам премного благодарен!

P.P.S. Извиняюсь за свой "не очень глубокий", но всё же оффтоп. ;) Не смог пройти мимо..
73! Александр RC3UE (ex RA3UJ, UA3UES)