Да, я прочувствовал это приключение: как в студенческие годы, когда хочется возиться со всеми этими механизмами! Разбираешь их на атомы и собираешь обратно
Вы по сути реализовали setjmp() и longjmp() для x64 плюс стек. Во FreeRTOS до 9 версии это называлось Короутинамм (ага!). Очень полезная вещь, когда наперёд просчитал все затраты по времени на выполнение каждой функции.
Zephyr и ESP-IDF живут так, что питон над CMake над Make (или что-то другое). Почти всё необходимое для разработки, отладки и сборки есть, вызывается простыми командами. Легко тромбуется в контейнер. Там есть что подчерпнуть.
Единственное, что приходится делать самому - сервер OTA прошивок.
Вы говорите про дисплей на базе чипа ssd1306, но так и не называете сам дисплей. Почему это важно? Уверен, на плате дисплея есть места для резисторов, убирая или добавляя которые Вы устанавливаете значения контактов BS[2:0] контроллера (ssd1306 datasheet, 13), что в свою очередь определяет интерфейс между MCU и ssd1306.
Статья будет в разы интереснее, если Вы расскажете о всех доступных интерфейсах в данной реализации дисплея. Особенно интересен 3-wire SPI, где отсутствует линия D/C#, а по SPI передаются данные в формате 9 бит: 1 бит – выбор данные-команда, 8 бит – значение.
Для чего нужен режим 3-wire SPI: чтобы не дёргать каждый раз контакт D/C#, отправлять команды и данные на дисплей используя SPI-DMA. Упрощает программу, упрощает использование. Данный контроллер имеет возможность частичного обновления экрана (ssd1306 datasheet, 35-36). Для установки границ нужно отправлять сначала команды, а потом данные. При использовании 3-wire SPI Вы сформируете один буфер с командами и данными, запустите SPI-DMA, займётесь иными полезными операциями.
О том, как реализовать 9-бит SPI, тоже желательно расписать! На сериях F0 и F7 можно выбрать количество бит данных SPI от 4 до 16, а в других сериях только 8 или 16 ЕМНИП.
Прекрасная библиотека LVGL поможет раскрыть весь потенциал дисплеев на контроллерах ssd1306 и ему подобных. Библиотека реализует частичное обновление экрана.
Вы выбрали тему, которую можно разбить на группу интересных статей. Постарайтесь доносить в каждой статье что-то одно. В данной статье не было полного обзора ни на дисплей (платка, резисторы), ни на контроллер дисплея (а вся серия стоит внимания). Понимаю желание настраивать периферию непосредственно через запись значений в регистры. Однако, если Вы говорите про дисплей, то лучше бы использовать библиотеку HAL, чтобы не отвлекать читателя кодом. А код напрашивается на переработку.
Начало серии статей положено. Надеюсь на Ваши успехи и дальнейшее изложение успехов в статьях.
Да, я прочувствовал это приключение: как в студенческие годы, когда хочется возиться со всеми этими механизмами! Разбираешь их на атомы и собираешь обратно
Вы по сути реализовали
setjmp()
иlongjmp()
для x64 плюс стек. Во FreeRTOS до 9 версии это называлось Короутинамм (ага!). Очень полезная вещь, когда наперёд просчитал все затраты по времени на выполнение каждой функции.Zephyr и ESP-IDF живут так, что питон над CMake над Make (или что-то другое). Почти всё необходимое для разработки, отладки и сборки есть, вызывается простыми командами. Легко тромбуется в контейнер. Там есть что подчерпнуть.
Единственное, что приходится делать самому - сервер OTA прошивок.
BS[2:0]
контроллера (ssd1306 datasheet, 13), что в свою очередь определяет интерфейс между MCU и ssd1306.Статья будет в разы интереснее, если Вы расскажете о всех доступных интерфейсах в данной реализации дисплея. Особенно интересен 3-wire SPI, где отсутствует линия D/C#, а по SPI передаются данные в формате 9 бит: 1 бит – выбор данные-команда, 8 бит – значение.
Для чего нужен режим 3-wire SPI: чтобы не дёргать каждый раз контакт D/C#, отправлять команды и данные на дисплей используя SPI-DMA. Упрощает программу, упрощает использование. Данный контроллер имеет возможность частичного обновления экрана (ssd1306 datasheet, 35-36). Для установки границ нужно отправлять сначала команды, а потом данные. При использовании 3-wire SPI Вы сформируете один буфер с командами и данными, запустите SPI-DMA, займётесь иными полезными операциями.
О том, как реализовать 9-бит SPI, тоже желательно расписать! На сериях F0 и F7 можно выбрать количество бит данных SPI от 4 до 16, а в других сериях только 8 или 16 ЕМНИП.
Прекрасная библиотека LVGL поможет раскрыть весь потенциал дисплеев на контроллерах ssd1306 и ему подобных. Библиотека реализует частичное обновление экрана.
Вы выбрали тему, которую можно разбить на группу интересных статей. Постарайтесь доносить в каждой статье что-то одно. В данной статье не было полного обзора ни на дисплей (платка, резисторы), ни на контроллер дисплея (а вся серия стоит внимания). Понимаю желание настраивать периферию непосредственно через запись значений в регистры. Однако, если Вы говорите про дисплей, то лучше бы использовать библиотеку HAL, чтобы не отвлекать читателя кодом. А код напрашивается на переработку.
Начало серии статей положено. Надеюсь на Ваши успехи и дальнейшее изложение успехов в статьях.