Я не называл нано микроконтроллером, а исходил из того, что вопрошающий - "полный профан", и пытался вытащить из него инфу максимально доступным образом. Какая у него нано, и при чем здесь автомобиль, будем разбираться позже.
Я не называл нано микроконтроллером, а исходил из того, что вопрошающий - "полный профан", и пытался вытащить из него инфу максимально доступным образом. Какая у него нано, и при чем здесь автомобиль, будем разбираться позже.
Land:вообще должна грузиться в ардуину?
А почему нет? Что такое ардуина? Плата на АВРке, ну с бутлодером. А кто мешает залить через ISP? Всего делов то - программатор. В свое время я так использовал платы ардуино - стирал бутлодер и получал качественный макет для своих поделок.
nml:Land:вообще должна грузиться в ардуину?
А почему нет? Что такое ардуина? Плата на АВРке, ну с бутлодером. А кто мешает залить через ISP? Всего делов то - программатор. В свое время я так использовал платы ардуино - стирал бутлодер и получал качественный макет для своих поделок.
у меня есть полуторамегабитный хекс под есп32. Загрузите в ардуину?
Land:у меня есть полуторамегабитный хекс под есп32. Загрузите в ардуину?
У человека была прошивка под ардуину и плата соответствующая. Что вы фантазируете? И таки да, прошивка уже залита, ждем результатов.
Ну сказал человек - в этой области - профан. Значит, надо помочь, а не... ну вы поняли.
nml:У человека была прошивка под ардуину и плата соответствующая. Что вы фантазируете?
да это как бы вы фантазируете:
Сеник:Всем привет. Имеется прошивка в формате hex (для автомобиля)
с чего вы решили, что это прошивка под ардуино? С каких пор ардуины в автомобилях используют?
nml:Значит, надо помочь, а не... ну вы поняли.
кому это надо?
и что там с прошивкой моего хекса в ардуину? Смогете?
Land:с чего вы решили, что это прошивка под ардуино?
с того, что:
1) чел взял схему и прошивку для нее в инете
2) есть такая кнопочка F3... достаточно наглядно
3) прошилось и заработало (что-то выводило по usart)
хватит? и оставьте уже свой х...екс в покое
nml:с того, что:
1) чел взял схему и прошивку для нее в инете
2) есть такая кнопочка F3... достаточно наглядно
3) прошилось и заработало (что-то выводило по usart)хватит? и оставьте уже свой х...екс в покое
а откуда эти ваши фантазии следуют? из его сообщения на форуме?
С хексом вы облажались, да? Не всякий хекс одинаково полезен для ардуины?
Land:а откуда эти ваши фантазии следуют?
Потому что я эту прошивку человеку залил в ардуинку. Этого вам хватит, чтоб успокоиться?
nml:Потому что я эту прошивку человеку залил. Этого вам хватит, чтоб успокоиться?
а я и не волнуюсь. Но ответа я так и не услышал: откуда это все следует? Из его сообщения на форуме?
Здравствуйте. Нужна помощь. Необходимо закачать программу на Arduino nano. Плата с AliExpress. Проект по подключению джойстика к автомагнитоле. Программа тоже есть. Человек делал, все работает. Но это было 10 лет назад. Я в этом не сильно разбираюсь.
офлайн
ВиталийXXL
Senior Member
|
|
10087 |
22 года на сайте Город:
|
Доброго дня .
Помогите решить проблему :
Имеем ESP32 (WROOM , DEV-плата - не важно .... работает одинаково)
Среда разработки : Arduino IDE 2.0 или Platformio (в обоих системах код работает ) .
Программа читает данные по UART (Serial1 или Serial2) c другого передающего устройства ( Устройство отправляет информацию по 24 байта . ESP ее только читает и разбирает на компоненты ) . Драйвер связи ( HLW8032.C , HLW8032.H) всё обрабатывает в соотв. с описанием микросхемы - то есть как надо .
Прикрутил к ESP ещё дисплейчик ST7789 по SPI . Всё норм - картинку показывает , текст , графика - как надо .... Но - перестали правильно сниматься данные по UART ... вместо обычной пачки данных - прилетает то 10 то 15 то 8 байт ....
Как только убираю инициализацию дисплея (tft.iniy()) - всё опять работает как надо . Serial1(2) принимает положенные байты и работает с инф в соотв. с программой ....
И вот как подружить дисплей (SPI) и приём данных по Serial ?
PS: перепробовал все известные библиотеки для работы с ST7789 .... никак не согласуется с одновременной работой по Serial .
1.надо смотреть на какие пины подключен UART. Может конфликтовать с пинами SPI.
2. Разнесите задачи на разные ядра. диплей на ядро 0, прием по UART на ядро 1
3. поиграйте со скоростями шин
офлайн
ВиталийXXL
Senior Member
|
|
10087 |
22 года на сайте Город:
|
Пины выведены правильно . Незадействованные для работы памяти ESP . Свободные . Ну я-ж и написал , всё по дисплею ОК - работает . UART тоже читается правильно ...Конфликта по выводам нет . Глючит Uart только когда включаю SPI-дисплей ....
Скорость только SPI могу устанавливать .... пробовал в разных вариациях . ничего не меняется .
Чтоб разнести задачи нужно сильно модифицировать код .... и вникать глЫбже во FreeRTOS..... пока нет на это времени и возможности .
да нет там ничего сложно с ртосом. Создадите две задачи типа xTaskCreatePinnedToCore(task_display, "Task_Display", 2048, NULL, 2, NULL, 0);
xTaskCreatePinnedToCore(task_uart, "Task_UART", 2048, NULL, 2, NULL, 1); и запускайте одну по семафору, другую из очереди displayQueue = xQueueCreate(2, sizeof(SendBuffer_t)); и будет вам счастье
ВиталийXXL:Чтоб разнести задачи нужно сильно модифицировать код
не сильно
ВиталийXXL:пока нет на это времени и возможности
ну тогда забейте
ВиталийXXL:Глючит Uart только когда включаю SPI-дисплей
с высокой вероятностью прошивка ваша глючит, а не юарт. Прием в цикле, без прерываний?
офлайн
ВиталийXXL
Senior Member
|
|
10087 |
22 года на сайте Город:
|
Ради испытания на конфликтность можно попытаться написать небольшой код ....
Там всё в маленьком Loop() крутится ..... никаких delay()
И да , при использовании (как костыль) дисплейчика на I2C - всё шевелится как надо ... и отображение и чтение данных UART и WiFi
Если кто и делает задержку - то операции с дисплеем по SPI.
Рушится приём сразу после tft.init() - даже если все операции с дисплеем не использовать ....
Там две (три) задачи :
Циклическое чтение из порта (вольтметр/амперметр) - отрисовка данных на дисплее и работа с Web-интерфейсом . Никаких OTA и т д нет .
Для гуру могу скинуть код для осмотра
50$ призовые - если сможете победить конфликт и код заработает
"Железо" , разумеется , предоставлю .
работать с дисплеем и данными в одной loop - плохая идея. обновляйте дисплей в отдельном потоке по прерыванию или таймеру, а данные можно читать и обрабатывать в основном лупе. дисплей можно обновлять с заданной частотой, в зависимости от требований (например, 5 раз в секунду), а остальные ресурсы использовать на обработку данных.
в общей, каждая тяжелая задача должна обрабатываться в отдельном потоке (например, по таймеру или прерыванию). нельзя все пихать в общий луп, иначе проблемы неизбежны.
офлайн
ВиталийXXL
Senior Member
|
|
10087 |
22 года на сайте Город:
|
Нет там никаких тяжёлых задач . С дисплеем по I2C всё работает как надо и просто летает .
Считать поток данных , найти байты заголовка - принять следующие (24 байта) . разобрать полученную последовательность на элементы данных . Это всё что по UART . Частота опроса не важна .
Ну и далее - отправить на дисплей (перерисовать) четыре числа : Вольты / амперы / Мощность / Энергия .
Обновить те же четыре переменные для Web-морды .
Спасибо конечно за советы ....
Потоки и прочее пока даже не рассматриваю .
Вижу проблему в реальном конфликте SPI и UART :
Для чистоты эксперимента вообще вырезал все и оставил только чтение с UART . даже отображение убрал .
В коде только tft.init() в Setup() и чтение UART в LOOP() . и ничего более .
Не работает правильно чтение .
Убираем tft.init() - всё как надо .
Ну и какие тут потоки нужно разделять , ядра и прочие FreeRTOS ?
нужно смотреть исходники TFT или смотреть докумментацию. вполне может оказаться так, что библиотека вмешивается в работу прерываний, которые используются в UART или SPI.
но все равно, еще раз подчеркну мысль, что пихать всю работу в один loop - это не правильно. в идеале, loop вообще должен быть пустым или делать минимальную работу. все остальное нужно распихать по таймерам, прерываниям и потокам.
да не надо исходники библиотеки смотреть. Надо просто правильно организовать потоки. ВиталийXXL, ну киньте код. может будет желание посмотреть на досуге.