Phazz писал(а): ↑18.09.2022{, 23:25}
ecoins, а любом случае где-то нарветесь не несовместимость. Что касается этого примера пока не было времени разбираться в чем причина этого поведения. Возможно и не все так страшно.
Именно этому и посвящена наша работа за последние несколько лет.
Насколько возможно мы изучаем все CORE для разных контроллеров и Вы безусловно правы - очень много различий по работе с пинами, UART, SPI, i2c, 1-Wire.
Во многих случаях это просто приводит к ошибкам компиляции.
И производители порой радикально меняют ядра (ESP). У AVR стабильно, а вот с Raspberry Pi Pico поддержка очень и очень радует.
По прерываниям и системам реального времени.
Одна из известных управляющих машин в CCCP была M6000 (аналог Hewlett-Packard). Память от 16 до 64кБ на ферритах.
Процесс там собран платах в основном на базовых логических элементах 155ЛА3 (2И-НЕ), совсем немного JK-триггеров.
Так уж получилось, что мне приходилось программировать системы реального времени и одновременно ремонтировать (155 серия горела часто и контакты подводили если спиртом регулярно не мыть).
Там была удивительная операционная система на перфоленте (ОУС), чуть позже ОСРВ. И все работало с прерываниями., таймерами, стеком, выталкивающей (по приоритету_ многозадачностью.
Пришлось и удалось разобраться не только с кодами до уровня машинных команд, но и их физическая реализация до уровня логических элементов. Благо образование было как раз в этой области.
Потом мой отдел разработал на процессоре КР580ВМ80А (аналог Intel 8080) и периферийными микросхемами этой же серии модульный контроллер для управления мощными технологическими лазерами.
Там было 8 аппаратных прерываний + многозадачность. Создали собственную операционную систему реального времени.
До сих пор кое-где лазеры продолжают трудиться. Там же появился опыт промышленного производства (помехи, конструкторская и эксплуатационная документация, метрология и прочее).
Представление о многозадачности, прерываниях у нас носит не абстрактный характер.
Один из основных инструментов при разработке программного обеспечения - это мощные логические анализаторы.
Во многом поэтому код наших библиотек быстрый, а проекты демонстрируют без конфликтную работу с вышеприведенных характеристиках.
-------------
Проблема упомянутой Вами совместимости(несовместимости) объективна, но нама вроде удается разрешать ему системными методами.