Перейти к содержанию
bbh_blocked_dnftl

Вариант синтезатора частоты на Si5351 (UR5FFR)


Relayer

Рекомендуемые сообщения

Спасибо за ответ!

Я забыл указать, что запускаю скетч от вашей предыдущей конструкции: без si570 которая...

Скачал скетч для новой версии, закомментировал/раскомментировал в указанном вами файле всё, что, соответственно, ненужно и нужно. Запустил компиляцию: получаю ошибку о нехватке библиотеки i2c. Перенёс соответствующие файлы в library, снова запускаю и...получаю просто море ошибок...

Я совсем перестал понимать что вы скачиваете и что у вас за проблемы. Первая версия синтеза без поддержки Si570 - там код старый и правится не будет. Но код рабочий и нормально компилируется. Нужна либа PDQ_GFX. Код этот я не рекомендую использовать т.к. все переехало в новый проект с поддержкой Si570 и прочих плюшек.

Код для новой версии требует кроме PDQ_GFX еще и мою либу для работы с Si5351/Si570, в которой и есть модуль i2c. это все написано на главной странице репозитария на гитхабе. Копировать ничего не надо - ставьте либы, правьте config_hw и все соберется

 

 

А где "новый" код? Я что-то упустил?

Новый код там где ему и положено быть - в репозитарии гитхаба.

Ссылка на комментарий
Поделиться на другие сайты

@Relayer, простите, что ввёл вас в заблуждение...

Удалил всё от старого проекта, скачал новый, добавил в libraries: PDQ_GFX, PDQ_ILI9341 и ваши Si5351-570 + i2c, файл config_hw.h взял из темы про старый синтезатор и скопировал с заменой в папку со скетчем (на всякий случай проверил содержимое и закомментировал валкодер, т.к. его пока  всё равно нет). Запускаю компиляцию и получаю ту же ошибку:

 

In file included from C:\Users\hamrad\Documents\Arduino\Syntez_Si5351_Si570-master\Syntez\Syntez.ino:2:0:

 
C:\Users\hamrad\Documents\Arduino\libraries\PDQ_ILI9341/PDQ_ILI9341.h:51:2: error: #error Oops! You need to #include "PDQ_ILI9341_config.h" (modified with your pin configuration and options) from your sketch before #include "PDQ_ILI9341.h".
 
 #error Oops!  You need to #include "PDQ_ILI9341_config.h" (modified with your pin configuration and options) from your sketch before #include "PDQ_ILI9341.h".
 
  ^~~~~
 
exit status 1
Ошибка компиляции для платы Arduino Nano.
Т.е. получается, что в скетче, между строками 

 

#include

#include

Необходимо добавить #include "PDQ_ILI9341_config.h" с распиновкой ардуины для работы с дисплеем, что описано у вас в файле disp_ILI9341.h..

Ссылка на комментарий
Поделиться на другие сайты

 

файл config_hw.h взял из темы про старый синтезатор и скопировал с заменой в папку со скетчем

зачем старый брать? он несовместим хоть и называется одинаково.

Ссылка на комментарий
Поделиться на другие сайты

Закомментировал в основном файле (syntez.ino) строки #include и #include  в самом начале, и добавил #include  в строку 29 (перед #include ) в файле disp_ILI9341.h. Ошибка с описанием выводов ардуины пропала. 

Снова провожу проверочную компиляцию и...получаю море других ошибок....

 

C:\Users\hamrad\Documents\Arduino\Syntez_Si5351_Si570-master\Syntez\Syntez.ino: In function 'void UpdateFreq()':
 
C:\Users\hamrad\Documents\Arduino\Syntez_Si5351_Si570-master\Syntez\Syntez.ino:264:23: warning: invalid conversion from 'const _Modes*' to '_Modes*' [-fpermissive]
 
   struct _Modes *mm = &Modes[trx.state.mode];
 
                       ^~~~~~~~~~~~~~~~~~~~~~
 
In file included from C:\Users\hamrad\Documents\Arduino\Syntez_Si5351_Si570-master\Syntez\Syntez.ino:404:0:
 
sketch\menu.h: In function 'void ShowClockMenu()':
 
sketch\menu.h:87:5: warning: jump to label 'l_print' [-fpermissive]
 
     l_print:
 
     ^~~~~~~
 
sketch\menu.h:37:8: note:   from here
 
   goto l_print;
 
        ^~~~~~~
 
sketch\menu.h:63:9: note:   crosses initialization of 'int delta'
 
     int delta = encval / (ENCODER_FREQ_LO_STEP/6);
 
         ^~~~~
 
sketch\menu.h:39:13: note:   crosses initialization of 'uint8_t keycode'
 
     uint8_t keycode=keypad.Read();
 
             ^~~~~~~
 
Скетч использует 26940 байт (87%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1048 байт (51%) динамической памяти, оставляя 1000 байт для локальных переменных. Максимум: 2048 байт.
Хм... Последние строки говорят о том, что скетч, в принципе работоспособен? Или я снова что-то не понимаю?...
Ссылка на комментарий
Поделиться на другие сайты

Не надо брать конфиги от другой версии - там разные дефайны

Ссылка на комментарий
Поделиться на другие сайты

@Relayer, нет-нет: сейчас все файлы из нового проекта - правки проводил в них. Сейчас в config_hw.h раскомментированы:

#define DISPLAY_ILI9341

#define KEYPAD_12         0x26

#define VFO_SI5351

#define RTC_DS1307

#define ENCODER_OPTICAL

Все остальные лишние дефайны - закомментированы.

Плюсом, как писал в предыдущем сообщении, закомментировал в syntez.ino первые две строки (#include и #include ) и добавил в файл disp_ILI9341.h 29-й строкой #include  - при этом скетч не ругается на отсутствие описания переменных для выводов на дисплей (You need to #include "PDQ_ILI9341_config.h" (modified with your pin configuration and options) from your sketch before #include "PDQ_ILI9341.h").

После этого при запуске компиляции появляются указанные "ворнинги" и компилятор в конце выводит "нормальное" сообщение. 

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

Ссылка на комментарий
Поделиться на другие сайты

закомментировал в syntez.ino первые две строки (#include и #include )

Упс. Там вообще-то нет таких строк. Там есть такое:

#ifdef DISPLAY_ILI9341
  #include "disp_ILI9341.h"
#endif

а вот внутри disp_ILI9341.h уже подключается PDQ_ILI9341.h

Давайте все сначала и по порядку - откуда скачивали сетчи

 

Ссылка на комментарий
Поделиться на другие сайты

Нормально всё компилится. И под ST7735 и под ILI9341.

В логе компиляции ни единого "мяу", всё чистенько.

Проверял версию с https://github.com/andrey-belokon/Syntez_Si5351_Si570

Arduino IDE 1.8.8

В "железе" ещё не проверял, по причине отсутствия такового на данный момент.

 

P.S. Тоже есть вопрос - P13 ext для чего предназначен?

Ссылка на комментарий
Поделиться на другие сайты

@Relayer, всё "зачистил", в том числе переустановил Arduino.

В начале скачиваю ваш проект отсюда: https://github.com/andrey-belokon/Syntez_Si5351_Si570 , оттуда же по ссылкам скачиваю ваши библиотеки для Si-шек (https://github.com/andrey-; belokon/UR5FFR_Si5351) и библиотеки для работы с дисплеями (https://github.com/andrey-belokon/PDQ_GFX_Libs; из архива выбираю только две папки: PDQ_GFX и PDQ_ILI9341). Проект кладу в папку C:\Users\hamrad\Documents\Arduino, библиотеки - в папку C:\Users\hamrad\Documents\Arduino\libraries. Перед запуском скетча в файле config_hw.h делаю необходимые правки (описывал чуть выше), сохраняю файл и запускаю скетч (Syntez.ino). Версия Arduino - 1.8.12. В Arduino наблюдаю, что тот подхватил все нужные библиотеки, нажимаю кнопку "Проверить". Компиляция завершается, теперь ошибок по дисплею нет, но выпадают следующие warning-и и сообщения:

 

sketch\Encoder.cpp:20:41: warning: cannot declare member function 'static void Encoder::SetValue(long int)' to have static linkage [-fpermissive]

 
 static void Encoder::SetValue(long Value)
 
                                         ^
 
sketch\Encoder.cpp:27:31: warning: cannot declare member function 'static long int Encoder::GetDelta()' to have static linkage [-fpermissive]
 
 static long Encoder::GetDelta()
 
                               ^
 
sketch\Encoder.cpp:64:28: warning: cannot declare member function 'static void Encoder::Setup()' to have static linkage [-fpermissive]
 
 static void Encoder::Setup() {
 
                            ^
 
sketch\TRX.cpp:10:1: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
 
 };
 
 ^
 
sketch\TRX.cpp:10:1: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
 
sketch\TRX.cpp:10:1: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
 
sketch\TRX.cpp:10:1: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
 
C:\Users\hamrad\Documents\Arduino\Syntez\Syntez.ino: In function 'void UpdateFreq()':
 
C:\Users\hamrad\Documents\Arduino\Syntez\Syntez.ino:254:23: warning: invalid conversion from 'const _Modes*' to '_Modes*' [-fpermissive]
 
   struct _Modes *mm = &Modes[trx.state.mode];
 
                       ^~~~~~~~~~~~~~~~~~~~~~
 
In file included from C:\Users\hamrad\Documents\Arduino\Syntez\Syntez.ino:394:0:
 
sketch\menu.h: In function 'void ShowClockMenu()':
 
sketch\menu.h:87:5: warning: jump to label 'l_print' [-fpermissive]
 
     l_print:
 
     ^~~~~~~
 
sketch\menu.h:37:8: note:   from here
 
   goto l_print;
 
        ^~~~~~~
 
sketch\menu.h:63:9: note:   crosses initialization of 'int delta'
 
     int delta = encval / (ENCODER_FREQ_LO_STEP/6);
 
         ^~~~~
 
sketch\menu.h:39:13: note:   crosses initialization of 'uint8_t keycode'
 
     uint8_t keycode=keypad.Read();
 
             ^~~~~~~
 
C:\Users\hamrad\Documents\Arduino\libraries\UR5FFR_Si5351-master\Si570.cpp: In member function 'void Si570::setRFREQ(uint32_t)':
 
C:\Users\hamrad\Documents\Arduino\libraries\UR5FFR_Si5351-master\Si570.cpp:178:37: warning: left shift count >= width of type [-Wshift-count-overflow]
 
   rfreq = rfreq + ((rfreq & 1<<(28-1))<<1);
 
                                     ^
 
Скетч использует 26940 байт (87%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1048 байт (51%) динамической памяти, оставляя 1000 байт для локальных переменных. Максимум: 2048 байт.
Загружаю скетч в контроллер (скорость порта 9600), на всякий случай дёргаю по питанию и - тишина: дисплей просто светится белым. Конструкция пока такова: дисплей, ардуинка, источники питания +3,3В и +5В и  четырёхканальный преобразователь уровней (т.е. всего по-минимуму - просто проверить для начала). Может быть, при запуске контроллер "шерстит" шину I2C, не находит каких-либо модулей (часы, контроллеры PCF) и "зависает"?
Ссылка на комментарий
Поделиться на другие сайты

@KovAlex, ну, блин, не знаю... Может, у меня ардуинка "очень" китайская?.. В настройках IDE выбираю "Плата Arduino Nano", "Процессор ATmega328P (Old Bootloader)" - тогда в плату можно что-то заливать. Вот, к примеру, скетч из комплекта библиотек дисплеев: PDQ_graphicstest - безо всяких, как вы говорите, "мяу" компилируется, заливается в плату и сразу же начинает воспроизводиться...

Ссылка на комментарий
Поделиться на другие сайты

Может, у меня ардуинка "очень" китайская?.. В настройках IDE выбираю "Плата Arduino Nano", "Процессор ATmega328P (Old Bootloader)" - тогда в плату можно что-то заливать.

 

Да ни причём тут сама ардуинка, и заливаете Вы всё так, как нужно.

У Вас проблема на этапе компиляции.

Походу, компилятор подцепляет СВОИ одноимённые библиотеки, которые у него УЖЕ УСТАНОВЛЕНЫ и соотв. выдаёт "кривой код".

Попробуйте сделать так:

1. удалите ВСЁ, что Вы скопировали в рабочие папки компилятора, либо установите Arduino IDE заново "с нуля", с удалением всех его "старых" папок.

2. проект распакуйте в отдельную папку, не имеющую никакой "связи" с Arduino IDE.

3. библиотеку для сишки УСТАНОВИТЕ через меню - Скетч -> Подключить бибиотеку -> Добавить .ZIP библиотеку

4. из PDQ_GFX_Libs-master.zip СКОПИРУЙТЕ в папку ..Sintez (там, где файл Syntez.ino) две h-ки - PDQ_FastPin.h и PDQ_ST7735

5. пробуйте компилить.

 

P.S. Ещё раз повторюсь - у меня этот проект компилится без всяких warning и notes.

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

Но это, скорее всего, будут ошибки типа "... не найдено". С ними, думаю, справитесь сами.

Ссылка на комментарий
Поделиться на другие сайты

P13 ext для чего предназначен?

Свободные пины. Что запрограмируете - то и будет

 

Может, у меня ардуинка "очень" китайская?

Какая версия IDE? Скачайте самую свежую

Ссылка на комментарий
Поделиться на другие сайты

@KovAlex, хорошо, сейчас попробую.

@Relayer,  самая крайняя - 1.8.12

Выяснилось интересное: как я и предполагал - если к шине I2C не подключено ни одного устройства - информация на дисплей не выводится. Достаточно подключить хоть один из модулей на 8574 или часы (тини-ртк) и дисплей после reset-а ардуинки оживает. На нажатия кнопок клавиатуры - реагирует.

Ссылка на комментарий
Поделиться на другие сайты

 

Выяснилось интересное: как я и предполагал - если к шине I2C не подключено ни одного устройства - информация на дисплей не выводится. Достаточно подключить хоть один из модулей на 8574 или часы (тини-ртк) и дисплей после reset-а ардуинки оживае

Нуууу, батенька! Телевизор, не подключённый к антенне, или другому источнику сигнала, тоже "блэк скрин показывает".  :))

Ссылка на комментарий
Поделиться на другие сайты

@KovAlex, дык, дисплей не на I2C шине сидит... Ладно, программер я аховый: буду учиться на своих ошибках и познавать...

В общем, снёс всё, скачал всё заново, раскидал по папкам, подправил конфиг, запускаю компиляцию:

 

C:\Users\hamrad\Desktop\miniyes\Syntez_UR5FFR\Syntez\Syntez.ino: In function 'void UpdateFreq()':

 
C:\Users\hamrad\Desktop\miniyes\Syntez_UR5FFR\Syntez\Syntez.ino:254:23: warning: invalid conversion from 'const _Modes*' to '_Modes*' [-fpermissive]
 
   struct _Modes *mm = &Modes[trx.state.mode];
 
                       ^~~~~~~~~~~~~~~~~~~~~~
 
In file included from C:\Users\hamrad\Desktop\miniyes\Syntez_UR5FFR\Syntez\Syntez.ino:394:0:
 
sketch\menu.h: In function 'void ShowClockMenu()':
 
sketch\menu.h:87:5: warning: jump to label 'l_print' [-fpermissive]
 
     l_print:
 
     ^~~~~~~
 
sketch\menu.h:37:8: note:   from here
 
   goto l_print;
 
        ^~~~~~~
 
sketch\menu.h:63:9: note:   crosses initialization of 'int delta'
 
     int delta = encval / (ENCODER_FREQ_LO_STEP/6);
 
         ^~~~~
 
sketch\menu.h:39:13: note:   crosses initialization of 'uint8_t keycode'
 
     uint8_t keycode=keypad.Read();
 
             ^~~~~~~
 
Скетч использует 26940 байт (87%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1048 байт (51%) динамической памяти, оставляя 1000 байт для локальных переменных. Максимум: 2048 байт.
Т.е. компиляция заканчивается без аварий, но вот с теми же ворнингами... Скомпилированная прошивка заливается в контроллер, всё работает...
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...