Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Чт дек 15, 2022 16:33:00
Приветствую!
Есть задача на один I2C дисплей выводить попеременно данные с 2-х микроконтроллеров. Теоретически предполагаю, что это достаточно просто сделать на мультиплексоре. Но попытка воткнуть в разрыв SDA и SCL линий CD4053BE (просто потому, что такой мультиплексор у меня есть) дали результат, который меня не устроил. Переключение есть, но есть и шум типа песка - доп. белые точки, через некоторое время дисплей переключается на половинную яркость, а потом вообще вырубается.
В чем может быть причина... и как это можно исправить?
Попробовать купить другой мультиплексор? Увеличить подтяжку линий SDA и SCL к питанию? Или есть другие, не сильно сложные решения, помимо мультиплексора?
Чт дек 15, 2022 17:52:54
третий микроконтроллер, который будет принимать КОРРЕКТНО (потому что никакая фигня не будет мешать) данные от обоих микроконтроллеров, и выводить на дисплей нужные. Либо изменить программу в тех двух, чтобы они понимали, что работают вместе и построили очередь
Чт дек 15, 2022 18:03:14
А можно придавливать CLK и работать через аппаратный I2C с нормальной поддержкой задержки обмена.
Чт дек 15, 2022 20:08:59
Где-то я уже встречал подобную проблему. Автору - изучить, что такое I2C интерфейс и осознать, что мультиплексоры не нужны, I2C шина может быть общей для многих устройств, и даже в режиме мультимастера может работать. Но чтобы не получалась каша на дисплее, надо договориться микроконтроллерам, что они не будут одновременно отправлять в дисплей данные. Если микроконтроллер не поддерживает режим мультимастер на I2C, то арбитраж доступа к дисплею можно реализовать с помощью отдельной линии между микроконтроллерами, которая будет в режиме pull-up. Микроконтроллер, желающий занять дисплей, должен вначале проверить эту линию, что она находится в высоком состоянии, затем опустить её в низкое состояние и после этого он может начать работать с дисплеем. Второй микроконтроллер, видя низкое состояние этой линии, к дисплею обращаться не будет. И наоборот.
Пт дек 16, 2022 01:55:14
MLX90640, идея в принципе годная вот тока на практике малоприменимая
обычно те кто так делаю жаждают засунут 2 готовых ЧУЖИХ СХЕМЫ в 1 корпус и выводить их на дисплей или поперемено или по воле оператора (тумблер/кнопка) при это собиралшик часто не вкурсе не тока исходникоф обох нои даже не знает толком ка раьботает шина даже в режиме точка- точка...про мултимастер ваше молчим я не помню ПОПУЛЯРНЫХ бытовых МК с подержкой сего режима штатно апаратно
Пт дек 16, 2022 04:06:24
поэтому решается третьим микроконтроллером
Пт дек 16, 2022 07:49:06
Я бы установил связь между контроллерами по SPI, контроллер который выводит на дисплей просто бы запрашивал данные у второго и потом всё вместе выводил.
Ещё вопрос: а нафига 2 контроллера, какой смысл?
Пт дек 16, 2022 08:58:17
В один контроллер не влезают все хотелки (мало флеша, мало ног), вот на два контроллера и разбросил... А дисплейчик как правило крохотный SSD1306 миллиписической диагональки 0,91".
С мультимастером работают все популярные STM32. Правда, я никогда этим режимом не пользовался, но в описании он есть.
Автор вопроса наверно из тех, кто ищет готовые скетчи и просто соединяет всё вместе скотчем и соплями.
Пт дек 16, 2022 09:03:42
Если нехватает контроллера, то как правило берётся контроллер пожирнее.
Чувствую, пахнет каким то нелепым лисопедом
Пт дек 16, 2022 10:36:17
Нет такого правила. Существование двух контроллеров одновременно не есть лисопед или следствие отсутствия "жирного.
Пт дек 16, 2022 10:49:13
Достаточно дополнительных линий на каждом МК "запрос доступа к дисплею(ресурсу)" и "доступ к дисплею(ресурсу) разрешен".
Ну и ессно программное обеспечение данных линий.
Пт дек 16, 2022 10:57:49
Нет такого правила.
Может я и не прав, но какой смысл ставить 2 по 0,5 если можно поставить 1 нормальный при этом сэкономить на ресурсах согласования этих контроллеров, если они стоят на одной плате? Или Афтор любитель эротики
Пусть
Valentinos сначала объяснит свою мотивацию, чего он хотел этим достичь, может есть более простое и очевидное решение?
Пт дек 16, 2022 11:18:17
Может я и не прав, но какой смысл ставить 2 по 0,5 если можно поставить 1 нормальный при этом сэкономить на ресурсах согласования этих контроллеров
Не всё так однозначно. У меня (в прошлом веке
) в одном приборе трудились 8535 и Мега ( не помню номер ) . Одна в реалтайме оцифровывала сигнал и передавала сигнал другой, которая производила достаточно сложную обработку, с плавучкой и функциями. Предвижу скепсис: взял бы STM32 на 200МГц и не парился... Ребяты, какой STM32 четверть века назад!
Тут скорее всего не тот случай. Но тем не менее...
----------
А 2 по 0.5 на столе смотрятся красивше, чем литра
Про арбитраж доступа согласен, решается супер-просто. Только решает ли он проблему? Один МК выдал строчку, отдал управление, а второй через миллисекунду сказал своё - и где сообщение первого? Всё определяется логикой совместной работы обоих МК, не только в плане OLED.
Последний раз редактировалось
Jack_A Пт дек 16, 2022 12:21:17, всего редактировалось 2 раз(а).
Пт дек 16, 2022 11:21:03
Предполагаю с большой долей вероятности: Оба устройства, вероятно, уже готовы. С "чужой" кодом из интернета для две конструкции (только hex). Каждое устройство: как оно работает, что делает каждый контроллер ... может быть неизвестно. Назначение: экономия дисплея, пространства в ящике, объединение конструкций и т.д.
.
Чтобы были случайно расположенные точки, в данных есть случайные биты (из переключения?). И будет ли напр. инициализация OLED в обоих МК одинаковые, можем только догадываться ...
Пт дек 16, 2022 12:04:42
В общем, для нормального решения задачи требуется уточнение условий от ТС
Если же предполагать худший случай, как предположил veso74, то решение только в третьем, буферном микроконтроллере.
Пт дек 16, 2022 12:43:22
Если нехватает контроллера, то как правило берётся контроллер пожирнее.
Чувствую, пахнет каким то нелепым лисопедом
Так и есть. Проблема в том, что залезть в 1 из этих контроллеров и переписать программу я не могу. А ставить 2-й дисплей места нет.
Пт дек 16, 2022 13:03:03
Переключение есть, но есть и шум типа песка - доп. белые точки, через некоторое время дисплей переключается на половинную яркость, а потом вообще вырубается.
В чем может быть причина... и как это можно исправить?
А вы контролируете тот факт что у вас линия свободна? Первый контроллер не знает что подключен мультиплексор и может попросту вклиниваться в обмен когда второй передаёт, в результате наложение пакетов. Второй момент: логический 0 должен довольно близко находиться к 0В а чуть выше уже будет считать единицей, может мультиплексор не может обеспечить этот стабильный ноль?
Пт дек 16, 2022 13:32:47
А вы контролируете тот факт что у вас линия свободна? Первый контроллер не знает что подключен мультиплексор и может попросту вклиниваться в обмен когда второй передаёт, в результате наложение пакетов. ?
Первый МК не знает, что есть второй МК и мультиплексор. Со второго МК я переключаю мультиплексор: сначала дергаю ножку INGIBIT, отключая от дисплея обоих, потом, с небольшой задержкой (не знаю, какая нужна, правда) соединяю линии I2C нужного МК и отпускаю INGIBIT.
логический 0 должен довольно близко находиться к 0В а чуть выше уже будет считать единицей, может мультиплексор не может обеспечить этот стабильный ноль?
Это сколько в вольтах, если VCC 3.3?
Пт дек 16, 2022 13:39:35
лог 0 мене 0.4
но это не поможет в таком случае...
кадр должен быть полным в обоих случаях а при таком рещении
viewtopic.php?p=4337617#p4337617 это в принципе нереално...
Пт дек 16, 2022 14:00:43
кадр должен быть полным в обоих случаях а при таком рещении
viewtopic.php?p=4337617#p4337617 это в принципе нереално...
Ну, это-то я понимаю. И это как раз не проблема, кадр полный.
На обоих МК дисплей на либе U8g2 в режиме полного буфера (код для первого МК теоретически open source, но разобраться в нем ой как сложно, так что разработчик выкладывает hex).
Подвисание дисплея с частичной отрисовкой кадра на момент переключения большой проблемой не считаю.
Т.е. решение на мультиплексоре в принципе рабочее. Просто есть помехи, иногда сразу, иногда через несколько секунд, иногда через десятки секунд. Иногда с одного МК помехи идут сразу, а с другого через несколько переключений туда-сюда. С помехами и хотелось бы разобраться.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.