****РАЗВИТИЕ МНОГОПЛАТФОРМЕННОСТИ В СРЕДЕ C++ и FLPROG****
Поводом для текста послужило сообщение из другой темы по энкондеру:
Ingwar писал(а): ↑05.03.2023{, 13:45}
Когда у меня возникнет желание и накопятся знания, я попробую сколхозить библиотеку, учитывающую все камни (но это не точно).
А пока у меня не получилось даже добавить другой камень в Ваш вариант энкодера.
Сначала я искал пару часов как и где описывается наименование камня для добавления их в #elif defined, нашел, добавил, описал, но не "взлетело" )))
===========================================================
1.Проблема многоплатформенности проекто встает перед многими разработчиками библиотек C++. Они решают их по своему, создавая среду для потенциальных конфликтов между библиотеками.
2.Неплохо "расшивается" работа с контроллерами в:
https://github.com/PaulStoffregen/OneWire [в директории util]
https://github.com/khoih-prog/ESP32TimerInterrupt
3.Последняя ссылка очень интересного и плодовитого разработчика Khoi Hoand из Канады.
К слову ESP_WifIManager - это его разработка
https://github.com/khoih-prog/ESP_WiFiManager
В разработке ESP32TimerInterrupt он красиво разрешил и вопросы использованию таймеров для разных архитектур(AVR,ESP8266,ESP32,STM32,RP2040 и др.), тем самым создав возможность создавать универсальные блоки, которые будут вызываться по временным прерываниям.
-------------------------
4.Универсальная работа с пинами, таймерами для разных архитектур решает только часть проблем универсальной работы на разных контроллерах Также надо решать вопросы c аппаратными интерфейсами UART,i2c,SPI,CAN,BlueTooth,WiFi - в разных контроллерах есть порой незначительные отличия, некоторые приводят к ошибкам компиляции.
------------------------
5.Таким образом неплохо иметь единое ядро, которое решает вопросы универсального подхода для разных контроллеров.
------------------------
6.ecoins не один год занимается исследованием и разработкой универсальных методов для работы на разных контроллерах различных архитектур. Была разработана и развивается библиотека RT_HW_BASE.h (много раз меняла название, но всегда начиналась c "RT_"), которая решает вопросы многоплатформенности проектов на C++ и FLProg.
7.Быструю работу с пинами можно посмотреть там, за основу был принят подход из библиотеки 1-Wire (
https://github.com/PaulStoffregen/OneWire ). После выхода новой версии ядра ESP32>2.0, пины стали работать помедленнее, в следствии чего указанная библиотека 1-Wire(DS1820) не работала с ESP32. Мы разработали свою библиотеку 1-Wire(часть функций не реализовывали) и она работает хорошо. Возможно в более поздних версиях ESP32 и работает побыстрее - не проверяли.
-------------------------
8.После появления двухядерного Raspberry Pi Pico и практической работе на двух ядрах проектов FLProg, возникла необходимость доработки существующей концепции библиотеки для поддержки многоядерности, прежде всего с работой из разных ядер на интерфейсах (i2c,SPI и др.). Вроде бы основные решения найдены, в коде реализованы, сейчас подходим к стадии тестирования.
-------------------------
9.Из новых системных библиотек FLProg вытекает, что разработчик занимается разработкой универсальной поддержки разных архитектур контроллеров.
========================================================
Вывод : Создание библиотеки поддержки многоплатформенности в FLProg актуальна и своевременна и это один из поводов объединить усилия на форуме разработчиков системных библиотек, блоков, тестировщиков.
Призываю и приглашаю к совместной работе.
=========================================================
Спасибо.