Сейчас еще есть CubeIDE — официальная программа от ST для их микроконтроллеров. Она бесплатная. Но она довольно сырая. При попытке работы с платой blue pill не проходила верификация, так как контроллеры китайцы ставят туда левые. При некоторых танцах с бубном можно запустить и китайский камень. Но в регистрах при отладке происходят странные вещи. Например у меня не выставлялся бит в регистре на PB4, даже ставя его вручную он тут же скидывался. Проблема с верификацией решилась перепайкой чипа на оригинальный. Но с пином PB4 проблему решить не удалось. Вообще IDE попадаются довольно кривые. Был у меня случай с Delphi. Бился неделю с багом, все проверил до буквы и запятой, но код не работал. В итоге снес IDE и поставил заново. Проблема решилась. Через некоторое время опять начались глюки IDE. Такие же траблы были и с C++. Через некоторое время таких глюков пропадает охота вообще заниматься программированием, потому что помимо освоения огромного количества информации по языку потом еще нифига не работает, потому что разрабы написали кривую IDE
Большинство населения не знает английского даже на школьном уровне. А те кто знает многие не вслушиваются и не переводят песни. Гораздо хуже наша современная музыка, где не прикрытый секс, продажность за бабки и прочее граничат со слабоумием. Вот эти «шедевры» дети охотно впитывают и усваивают за норму жизни.
Была такая же идея) Только горизонтальную развертку можно было сделать на шестигранном зеркале как это сделано в лазерном принтере и ловить в датчик отраженный свет, а вертикальную либо также либо например на динамик наклеить зеркало и сдвигать луч вертикально подавая напряжение. Думаю это ускорило бы работу, так как исключаются высоко инерционные механические узлы. Зеркало вращается с одной скоростью, мембрана динамика имеет малую инерцию и способность быстро колебаться.
Типичный пример попытки конкурировать с зарубежным софтом путем навязывания своего. Не исключено, что этот софт еще будет сливать информацию «кому следует»
Нужна ли предложенная проверка с помощью аналоговых входов, если реализовать алгоритм из errata (там дергаем пинами и проверяем состояние в IDR)? Или состояние IDR не отображает реальную ситуацию на пине?
Меня тоже в интерфейсе что-то смущало, но не мог понять что. Теперь понял. Подскажите, пожалуйста как организовать в Init() выбор интерфейса. Я хотел сделать это на препроцессоре #ifndef ( но в процессе про это забыл ) это не правильно?
Спасибо большое за дельное замечание. Обязательно доработаю как будет время. Был бы признателен, если бы Вы подсказали как таймауты правильно организовать. Я только начинаю изучать stm32 и микроконтроллеры в целом. Косяк, описанный в errata мне не встречался, зато встречался другой. Если сначала сконфигурировать регистр на альтернативную функцию, а потом настроить на выход, то I2C работать не будет. Но это скорее мой косяк
Я сейчас тоже изучаю этот датчик. Подскажите, пожалуйста, если кто знает. Почему у него адрес по умолчанию 0x5A, а отвечает по I2C он на адрес 0xB4. В даташите тоже показано обращение к 0x5A, а на диаграмме передается 0xB4. Хотя я читаю адрес датчика из EEPROM (в даташите сказано младший байт — адрес) там записано 0x5A. Всю голову уже сломал — никак не въеду. Мне нужно точно понять как это работает, чтобы менять адрес датчика, т.к. у меня их будет несколько на шине. А то может получиться, что поменяю неизвестно на что, потом все адреса перебирать искать его на шине.
Думаю так «в лоб» решить задачу не получится. Потому, что адресация первой строки продолжается на третью, а второй на четвертую. Скорее всего (но я могу ошибаться) это связано с тем, что сам контроллер дисплея умеет работать только с двумя строками, а расширение до четырех происходит добавлением еще одного контроллера на две строки и физически на дисплее строки разведены через одну. По поводу пробелов, да наверно громоздко, но если задавать начальное положение в строке, то все равно придется использовать условные операторы и перерасчет адресов. А вот если писать функцию для отображения переменных в реальном времени без перерисовки всего экрана, то там свободное позиционирование понадобится обязательно. Позже думаю реализовать возможность вывода переменных, мне нужно будет выводить температуру и мощность верхнего и нижнего нагревателя в реальном времени и само время работы.
Изначально думал читать флаг, но просмотрев форумы решил на задержках, ибо везде пишут, что производительность контроллера дисплея не очень и чтение флага не сильно скажется на увеличении скорости работы. Как вариант можно поэкспериментировать с уменьшением пауз.
Для кириллицы есть такие дисплеи с кириллическим знакогенератором. Но если его нет, то во всех таких дисплеях есть память под пользовательские 8 символов, которые можно нарисовать как хочешь. Можно попробовать динамически рисовать кириллицу в эту память а потом выводить оттуда на экран. На сколько это будет быстро работать вопрос…