Сидоргек (21.10.2019 15:29 - 15:32, просмотров: 853) ответил Vit на Не аргументы, а лозунги. Извини, такое впечатление, что ты не выспался и нервный с утра:)
Главный аргумент: пробовал "с" и "без", "с" мне понравилось бОльше. Для меня - аргумент достаточный (не выспался и нервный). Далее - "жизненная" история: Есть микросхема спутникового тюнера, двухканального. Управляется по I2C. К ей есть "родные" С-шные исходники, пИсанные авторами чипа, под 32-битную машину, рабочие, но "с фокусами".
Нужно обеспечить управление 2мя такими чипоидами (4 независимых канала супутникового приёма) по некоему внутрифирменному протоколу, по СОМ-порту. Микроконтроллер - Мега128 (давно это было).
Первым делом попробовал без ОСи управлять одним каналом одной микросхемы дабы проверить, как писанный под 32битный процессор код будет работать в 8-битной Меге. Проклял всё, но в конце концов заработало.
Далее написАл обмен с хостом на прерываниях COM-порта и таймерном, а фрагменты драйвера чипоидов стал вызывать в цикле, что бы управлять и читать статус всех 4х каналов приёма. Здорово, но: что-то в функциях драйвера иногда вызывало задержку в 5-10-20-30 секунд, во время которой обработка команд интерфейса и работа с другими каналами становилась невозможной.
Копать драйвер (плохо комментирован, скудный даташит и ОЧЕНЬ много регистров) я не стал, а сваял пепелац на FreeRTOS о 5 процессах - один для инициализации и, потом, связи с хостом, остальные 4 (запуск после инициализации) - для обслуживания каналов приёма. Всё отлично работает, и все довольны.