Спасибо тебе милый человек, отплюсовать не могу — подвергся нападению банды минусеров.
Ты просто сделал мне вечер субботы и часть ночи воскресенья. Оторваться не смог, прям как про профессора Мориарти нашего поколения. Про связь с TrueCrypt читать Эпизод 3 «У него всегда была темная сторона»
Странно, еще раз перепроверил, яркость действительно на результат не влияет. Кусок кода остался от ssd1309, вроде когда переносил показалось что влияет, i2c вариант у коллеги по цеху, как выцеплю — результат сообщу.
Неоднозначно получилось. Конечно любая функция HAL тормознее CMSIS. Имел в виду, в конкретном коде что в HAL тормозит общий результат и требует переписывания на регистрах.
Засада в том, что в вашей библиотеке используются массив шрифтов char (байт), а у него uint16_t (два байта).
Никто Вам не запрещает работать через указатели и обращаться хоть к байту, полуслову или слову. Библиотеку Алексеева не исследовал, но мне кажется может возникнуть вопрос с ориентацией шрифта, у меня вертикальный, там, судя по всему горизонтальный. Поизучайте статью на датагоре Визуализация для микроконтроллера. Часть 1. OLED дисплей 0.96" (128х64) на SSD1306
Странно, у меня заводится и без них, похоже еще у китайцев и разные контроллеры там. Размер дисплея у Вас какой?
Хорошо, спасибо, добавлю в инициализацию. С остальным справились? Все заработало?
Совсем забыл, на STM32F103 у меня не заработало с DMA, пришлось менять функцию пересылки на:
HAL_SPI_Transmit(&hspi3,dt,128,10);
Возможно проблема описана в публикации STM32 — I2C — HAL_BUSY сам я не проверял, перешел на STM32F4 серию.
Давайте, сначала определимся откуда плясать.
1. Какой процессор/плата у вас?
2. Какой экран SSD1306 или SH1106, интерфейс I2C или SPI?
3. Светодиодами Вы уже помигали?
4. Как вы определяете определяете управляющие сигналы и сам SPI?
5. Мусор на экране после инициализации увидели?
6. Логический анализатор какой-нибудь есть?
>Пальпация слона с целью обнаружения болезни — весьма затратное предприятие, он толстый везде.
Вот тут, я с Вами согласен, избыточность HAL иногда просто поражает.
>Но саму проблему я указал более чем точно — тотальное разделение.
Это не проблема, прочитайте внимательней, целью написать не универсальную библиотеку для дисплея, а вывод цифр, текста, псевдографики (при желании) как можно быстрее и меньше это занимало.
>На отдельном слое работы с примитивами — HAL и CMSIS должен отсутствовать!!! У вас для этого есть нижний слой — набор функций работы с железом.
Т.е. Вы предлагаете рисовать все по точкам и на низком уровне перебрасывать массив? Если бы я хотел написать универсальную библиотеку под разные дисплеи это бы имело смысл.
>Сколько времени у вас займет переписывание кода для возможности печатать разным шрифтом, добавить слой графики, сменить жк экран, сменить мк???
Тут я совсем перестал вас понимать, возможно, уровня моего просветления не хватает. Вы хотите сказать что переход на другой процессор на CMSIS легче и быстрее чем HAL? Про слои тоже уже звучит как мантра.
Не хочется разжигать холивар HAL vs CMSIS. Умею работать с тем и другим. Хотелось бы услышать поконкретней, какая именно функция HAL является критической по скорости чтобы ее переписывать на регистры?
Не знаю, как насчет японцев, но я до последнего не мог поверить что виснет ардуинкаа в моем терморегуляторе для морозильной камеры, причем без всякой системы могла проработать месяцами или зависнуть два раза за неделю. Даже watchdog проблему не решал. Причина оказалась банальна — перегрев, дополнительно с ардуиной и модулем питания к ней, тепло выделяла плата резисторов на светодиоды морозилки. Определил случайно, оказавшись рядом когда зависло.
Ты просто сделал мне вечер субботы и часть ночи воскресенья. Оторваться не смог, прям как про профессора Мориарти нашего поколения. Про связь с TrueCrypt читать Эпизод 3 «У него всегда была темная сторона»
Никто Вам не запрещает работать через указатели и обращаться хоть к байту, полуслову или слову. Библиотеку Алексеева не исследовал, но мне кажется может возникнуть вопрос с ориентацией шрифта, у меня вертикальный, там, судя по всему горизонтальный. Поизучайте статью на датагоре Визуализация для микроконтроллера. Часть 1. OLED дисплей 0.96" (128х64) на SSD1306
Хорошо, спасибо, добавлю в инициализацию. С остальным справились? Все заработало?
HAL_SPI_Transmit(&hspi3,dt,128,10);
Возможно проблема описана в публикации STM32 — I2C — HAL_BUSY сам я не проверял, перешел на STM32F4 серию.
1. Какой процессор/плата у вас?
2. Какой экран SSD1306 или SH1106, интерфейс I2C или SPI?
3. Светодиодами Вы уже помигали?
4. Как вы определяете определяете управляющие сигналы и сам SPI?
5. Мусор на экране после инициализации увидели?
6. Логический анализатор какой-нибудь есть?
В STM есть:
const uint8_t SmallFont[] =
Ссылку же давал на готовую либу в архиве или на моем сайте imax9.narod.ru
Вот тут, я с Вами согласен, избыточность HAL иногда просто поражает.
>Но саму проблему я указал более чем точно — тотальное разделение.
Это не проблема, прочитайте внимательней, целью написать не универсальную библиотеку для дисплея, а вывод цифр, текста, псевдографики (при желании) как можно быстрее и меньше это занимало.
>На отдельном слое работы с примитивами — HAL и CMSIS должен отсутствовать!!! У вас для этого есть нижний слой — набор функций работы с железом.
Т.е. Вы предлагаете рисовать все по точкам и на низком уровне перебрасывать массив? Если бы я хотел написать универсальную библиотеку под разные дисплеи это бы имело смысл.
>Сколько времени у вас займет переписывание кода для возможности печатать разным шрифтом, добавить слой графики, сменить жк экран, сменить мк???
Тут я совсем перестал вас понимать, возможно, уровня моего просветления не хватает. Вы хотите сказать что переход на другой процессор на CMSIS легче и быстрее чем HAL? Про слои тоже уже звучит как мантра.