В качестве интересного занятия с интересным микроконтроллером (с крайне ограниченными ресурсами), попробовал то же техническое задание:
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 байт.