Relayer Опубликовано 26 февраля, 2020 Автор Жалоба Поделиться Опубликовано 26 февраля, 2020 В 26.02.2020 в 18:03, hamrad сказал: Спасибо за ответ!Я забыл указать, что запускаю скетч от вашей предыдущей конструкции: без si570 которая...Скачал скетч для новой версии, закомментировал/раскомментировал в указанном вами файле всё, что, соответственно, ненужно и нужно. Запустил компиляцию: получаю ошибку о нехватке библиотеки i2c. Перенёс соответствующие файлы в library, снова запускаю и...получаю просто море ошибок...Я совсем перестал понимать что вы скачиваете и что у вас за проблемы. Первая версия синтеза без поддержки Si570 - там код старый и правится не будет. Но код рабочий и нормально компилируется. Нужна либа PDQ_GFX. Код этот я не рекомендую использовать т.к. все переехало в новый проект с поддержкой Si570 и прочих плюшек.Код для новой версии требует кроме PDQ_GFX еще и мою либу для работы с Si5351/Si570, в которой и есть модуль i2c. это все написано на главной странице репозитария на гитхабе. Копировать ничего не надо - ставьте либы, правьте config_hw и все соберется В 26.02.2020 в 18:12, KovAlex сказал: А где "новый" код? Я что-то упустил?Новый код там где ему и положено быть - в репозитарии гитхаба. Цитата 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 В 27.02.2020 в 10:09, hamrad сказал: файл 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 В 27.02.2020 в 15:24, hamrad сказал: закомментировал в 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 В 28.02.2020 в 08:46, hamrad сказал: Может, у меня ардуинка "очень" китайская?.. В настройках 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 В 28.02.2020 в 08:19, KovAlex сказал: P13 ext для чего предназначен?Свободные пины. Что запрограмируете - то и будет В 28.02.2020 в 08:46, hamrad сказал: Может, у меня ардуинка "очень" китайская?Какая версия IDE? Скачайте самую свежую Цитата dsрview.com Ссылка на комментарий Поделиться на другие сайты Поделиться
hamrad Опубликовано 28 февраля, 2020 Жалоба Поделиться Опубликовано 28 февраля, 2020 @KovAlex, хорошо, сейчас попробую.@Relayer, самая крайняя - 1.8.12Выяснилось интересное: как я и предполагал - если к шине I2C не подключено ни одного устройства - информация на дисплей не выводится. Достаточно подключить хоть один из модулей на 8574 или часы (тини-ртк) и дисплей после reset-а ардуинки оживает. На нажатия кнопок клавиатуры - реагирует. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
KovAlex Опубликовано 28 февраля, 2020 Жалоба Поделиться Опубликовано 28 февраля, 2020 hamrad сказал: Выяснилось интересное: как я и предполагал - если к шине 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 байт.Т.е. компиляция заканчивается без аварий, но вот с теми же ворнингами... Скомпилированная прошивка заливается в контроллер, всё работает... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.