Relayer Опубликовано 26 февраля, 2020 Автор Жалоба Поделиться Опубликовано 26 февраля, 2020 Спасибо за ответ!Я забыл указать, что запускаю скетч от вашей предыдущей конструкции: без si570 которая...Скачал скетч для новой версии, закомментировал/раскомментировал в указанном вами файле всё, что, соответственно, ненужно и нужно. Запустил компиляцию: получаю ошибку о нехватке библиотеки i2c. Перенёс соответствующие файлы в library, снова запускаю и...получаю просто море ошибок...Я совсем перестал понимать что вы скачиваете и что у вас за проблемы. Первая версия синтеза без поддержки Si570 - там код старый и правится не будет. Но код рабочий и нормально компилируется. Нужна либа PDQ_GFX. Код этот я не рекомендую использовать т.к. все переехало в новый проект с поддержкой Si570 и прочих плюшек.Код для новой версии требует кроме PDQ_GFX еще и мою либу для работы с Si5351/Si570, в которой и есть модуль i2c. это все написано на главной странице репозитария на гитхабе. Копировать ничего не надо - ставьте либы, правьте config_hw и все соберется А где "новый" код? Я что-то упустил?Новый код там где ему и положено быть - в репозитарии гитхаба. Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
hamrad Опубликовано 27 февраля, 2020 Жалоба Поделиться Опубликовано 27 февраля, 2020 @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.. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Relayer Опубликовано 27 февраля, 2020 Автор Жалоба Поделиться Опубликовано 27 февраля, 2020 файл config_hw.h взял из темы про старый синтезатор и скопировал с заменой в папку со скетчемзачем старый брать? он несовместим хоть и называется одинаково. Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
hamrad Опубликовано 27 февраля, 2020 Жалоба Поделиться Опубликовано 27 февраля, 2020 Закомментировал в основном файле (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 Опубликовано 27 февраля, 2020 Автор Жалоба Поделиться Опубликовано 27 февраля, 2020 Не надо брать конфиги от другой версии - там разные дефайны Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
hamrad Опубликовано 27 февраля, 2020 Жалоба Поделиться Опубликовано 27 февраля, 2020 @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").После этого при запуске компиляции появляются указанные "ворнинги" и компилятор в конце выводит "нормальное" сообщение. Попробовал загрузить это в ардуинку - дисплей просто светится белым, никакой реакции... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Relayer Опубликовано 27 февраля, 2020 Автор Жалоба Поделиться Опубликовано 27 февраля, 2020 закомментировал в syntez.ino первые две строки (#include и #include )Упс. Там вообще-то нет таких строк. Там есть такое: #ifdef DISPLAY_ILI9341 #include "disp_ILI9341.h" #endif а вот внутри disp_ILI9341.h уже подключается PDQ_ILI9341.hДавайте все сначала и по порядку - откуда скачивали сетчи Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
KovAlex Опубликовано 28 февраля, 2020 Жалоба Поделиться Опубликовано 28 февраля, 2020 Нормально всё компилится. И под ST7735 и под ILI9341.В логе компиляции ни единого "мяу", всё чистенько.Проверял версию с https://github.com/andrey-belokon/Syntez_Si5351_Si570Arduino IDE 1.8.8В "железе" ещё не проверял, по причине отсутствия такового на данный момент. P.S. Тоже есть вопрос - P13 ext для чего предназначен? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
hamrad Опубликовано 28 февраля, 2020 Жалоба Поделиться Опубликовано 28 февраля, 2020 @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) и "зависает"? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
hamrad Опубликовано 28 февраля, 2020 Жалоба Поделиться Опубликовано 28 февраля, 2020 @KovAlex, ну, блин, не знаю... Может, у меня ардуинка "очень" китайская?.. В настройках IDE выбираю "Плата Arduino Nano", "Процессор ATmega328P (Old Bootloader)" - тогда в плату можно что-то заливать. Вот, к примеру, скетч из комплекта библиотек дисплеев: PDQ_graphicstest - безо всяких, как вы говорите, "мяу" компилируется, заливается в плату и сразу же начинает воспроизводиться... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
KovAlex Опубликовано 28 февраля, 2020 Жалоба Поделиться Опубликовано 28 февраля, 2020 Может, у меня ардуинка "очень" китайская?.. В настройках 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_ST77355. пробуйте компилить. P.S. Ещё раз повторюсь - у меня этот проект компилится без всяких warning и notes.Не исключено, что по описанной "технологии" компилятор у Вас всё же ругнётся (возможно, я что-то упустил в "инструкции", банально позабыв).Но это, скорее всего, будут ошибки типа "... не найдено". С ними, думаю, справитесь сами. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Relayer Опубликовано 28 февраля, 2020 Автор Жалоба Поделиться Опубликовано 28 февраля, 2020 P13 ext для чего предназначен?Свободные пины. Что запрограмируете - то и будет Может, у меня ардуинка "очень" китайская?Какая версия IDE? Скачайте самую свежую Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
hamrad Опубликовано 28 февраля, 2020 Жалоба Поделиться Опубликовано 28 февраля, 2020 @KovAlex, хорошо, сейчас попробую.@Relayer, самая крайняя - 1.8.12Выяснилось интересное: как я и предполагал - если к шине I2C не подключено ни одного устройства - информация на дисплей не выводится. Достаточно подключить хоть один из модулей на 8574 или часы (тини-ртк) и дисплей после reset-а ардуинки оживает. На нажатия кнопок клавиатуры - реагирует. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
KovAlex Опубликовано 28 февраля, 2020 Жалоба Поделиться Опубликовано 28 февраля, 2020 Выяснилось интересное: как я и предполагал - если к шине I2C не подключено ни одного устройства - информация на дисплей не выводится. Достаточно подключить хоть один из модулей на 8574 или часы (тини-ртк) и дисплей после reset-а ардуинки оживаеНуууу, батенька! Телевизор, не подключённый к антенне, или другому источнику сигнала, тоже "блэк скрин показывает". Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
hamrad Опубликовано 28 февраля, 2020 Жалоба Поделиться Опубликовано 28 февраля, 2020 @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 байт.Т.е. компиляция заканчивается без аварий, но вот с теми же ворнингами... Скомпилированная прошивка заливается в контроллер, всё работает... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.