Arlleex 131 10 сентября, 2020 Опубликовано 10 сентября, 2020 · Жалоба 9 минут назад, AlexandrY сказал: Среднее количество файлов в проекте с развитой RTOS не менее 1000. Так что заблудиться есть где. Ну если пользуетесь какими-нибудь SDK из индостана, то да. Неудивительно, что для "помигать светодиодом" нужно будет не меньше сотни исходников... 13 минут назад, AlexandrY сказал: Не в самом крутом uC на Cortex-M4 не меньше 50 разных периферий. И все используются одновременно? Ну-ну. 14 минут назад, AlexandrY сказал: Многие зависимости даже неочевидны их приходится исследовать... Читать даташит - ну да, кому оно нынче надо Это ж мозг напрягать надо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew_Q 0 10 сентября, 2020 Опубликовано 10 сентября, 2020 · Жалоба 16 минут назад, Arlleex сказал: Читать даташит - ну да, кому оно нынче надо Это ж мозг напрягать надо! Если Большие программисты будут читать даташиты, то они никогда не напишут свое Большое приложение. Поэтому есть мы - эмбеддеры, которые должны прочитать эти даташиты и написать ту прослойку (MCAL, BSP), которая даст возможность комфортно работать Большим программистам используя им понятные open(), read(), write() и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 сентября, 2020 Опубликовано 10 сентября, 2020 · Жалоба 3 часа назад, Arlleex сказал: Исходя из чисто моего опыта скажу, что мне крайне редко приходилось работать с периферией так, что ее нужно переинициализировать глобально, требуя thread-safety кода при работе с ней. Везёт вам! 3 часа назад, Arlleex сказал: Вот, висит на SPI какой-нибудь дисплейчик. Ну неужели драйвер этого дисплея должен каким-то образом (на лету) изменить настройки этого SPI? Бывает и так. У меня был проект (даже не один проект, а целая линейки устройств), где было требование - горячая замена ЖКИ без выкл. питания. Причём один ЖКИ мог быть заменён на совершенно другой, с другим контроллером; и матричный на сегментный или наоборот. А значит и драйвер должен был на ходу поменять алгоритм работы. Это кроме того, что он дожен был на ходу обнаружить такую замену. 3 часа назад, Arlleex сказал: Именно поэтому считаю, что в 99.9% случаев всю периферию можно настроить в main(), оформив только вызовом единственной функции. Видимо специфика ваших проектов такая простая, что можно один раз настроить и всё. У меня в большинстве проектов надо на горячую менять режимы работы интерфейсов. Без выключения питания или сброса. 3 часа назад, Arlleex сказал: Ну неужели драйвер этого дисплея должен каким-то образом (на лету) изменить настройки этого SPI? Если на шине SPI не одно устройство, а несколько, то для каждого может быть своя максимально-допустимая SCLK. Так что смена SCLK (или режима - по какому фронту работать / пассивный уровень) - обычное дело при переключении драйвера с одного слэйва на другой. Опять-же: в моих проектах почти во всех - на SPI по несколько устройств. 3 часа назад, Arlleex сказал: Ну а I2C? В большинстве случаев все, что может поменяться - это скорость. А почти все устройства ныне поддерживают 400кГц. А некоторые поддерживают ещё и 1Мб/с. ;) Если есть требование горячей замены устройств на I2C, то надо например обнаруживать факты кратковременного залипания уровней сигналов или подобных случаев, обрывов транзакций и т.п., происходящие при втыкании/выдёргивании. И корректно выходить из таких ситуаций. 2 часа назад, haker_fox сказал: Renesas или Kinetic? И Infineon - тоже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew_Q 0 10 сентября, 2020 Опубликовано 10 сентября, 2020 · Жалоба 11 минут назад, jcxz сказал: И Infineon - тоже. О! Коллега. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба On 9/10/2020 at 12:25 PM, jcxz said: Это кроме того, что он дожен был на ходу обнаружить такую замену. А как было реализовано обнаружение? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба Просто. Так как шина была - I2C, то: если получаем NACK - переключаемся на следующий по списку драйвер ЖКИ. И так по кольцу, пока не получим ACK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба On 9/10/2020 at 12:25 PM, jcxz said: Если есть требование горячей замены устройств на I2C, то надо ... И Infineon - тоже. Горячая замена делается элементарно на чипах типа PCA9617. А вот при чем ту Infineon не понял. У них нет фичи переконфигурации шины на лету вместе с данными. Реально переинициализация всей внутренней периферии микроконтроллера нужна когда переходим в разные режимы потребления и меняем все тактовые частоты. Вот где настоящая развлекуха начинается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 3 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба 3 hours ago, AlexandrY said: Реально переинициализация всей внутренней периферии микроконтроллера нужна когда переходим в разные режимы потребления и меняем все тактовые частоты. Вот где настоящая развлекуха начинается. Ну, кому развлекуха, кому - рутина. И уж с матлабом-то эту систему построить и отладить - как два байта переслать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 11 сентября, 2020 Опубликовано 11 сентября, 2020 · Жалоба 4 часа назад, AlexandrY сказал: А вот при чем ту Infineon не понял. У них нет фичи переконфигурации шины на лету вместе с данными. Странно... а я не знал что "нету" и использую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться