Странное поведение I2C ESP32

gasan333
Offline
Зарегистрирован: 16.10.2015

Добрый ночи уважаемые форумчане. Столкнулся с такой проблемой, на видео контроллер, под капотом ESP32, по шине I2C подключен ЖК дисплей 16Х4. Рядом с правой стороны находится контактор модульный. Подаю напряжение на реле контактора I2C, от помех шина I2C зависает. ESP32 плюет в порт Serial что I2C занята, SDA сажается на землю, выполняемая программа зависает до того момента пока я не отключу на горячую дисплей. Подумал дело в дисплее, проэксперементировал на arduino nano, все работает отлично.

-Дисплей к ESP32 подключен как положено, через преобразователь уровней 5->3,3В.

-Подтяжка со стороны ESP32 2,7кОм а со стороны дисплея 4,7кОм.

-ESP32 менял из разных партий результат нулевой.

-Фреймворк arduino, библиотека для дисплея стандартная LiquidCrystal_I2C.h

Может кто сталкивался??? 

https://yadi.sk/i/Ggzhx15wozdMfg

rkit
Offline
Зарегистрирован: 23.11.2016

Реализация i2c в arduino склонна зависать намертво. Просто нет обработки случая сбоя. Делай надежную связь.

gasan333
Offline
Зарегистрирован: 16.10.2015

Как еще надежнее делать аппаратную часть ??? не представляю. Тут люди переделали библиотеку Wire https://github.com/stickbreaker/arduino-esp32/tree/master/libraries/Wire , кто бы помог переделать LiquidCrystal_I2C под него.

rkit
Offline
Зарегистрирован: 23.11.2016

gasan333 пишет:

Как еще надежнее делать аппаратную часть ??? не представляю.

Учебник прочитай. лол.

gasan333
Offline
Зарегистрирован: 16.10.2015

 Форум и для этого существует, чтобы спрашивать.  Если ты прочитал мой пост, то там ясно сказано, что  я менял контроллер ESP32 на atmel и проблема исчезала это доказывает, что проблема не аппаратная а программная. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Любая аппаратная проблема может казаться программной (и наоборот), пока она не локализована.

rkit
Offline
Зарегистрирован: 23.11.2016

У тебя всё хорошо с мозгами? Поменял железо и проблема исчезла. Это доказывает, что проблема не в железе.

gasan333
Offline
Зарегистрирован: 16.10.2015

Что за форум, твою дивизию, это у тебя с мозгами не в порядке пару шариков не хватает!!! Че ты умничаешь, не знаешь не пиши вообще!!.  Ты писал, что  нужно I2C надо делать надежную, я же говорю, что я менял контроллер на другой на той же плате и все работает. Если ты читал ??? а я уверен ты даже не открыл ссылку которую я скинул https://github.com/stickbreaker/arduino-esp32/tree/master/libraries/Wire, то там люди столкнулись с проблемой I2C в ESP32 в arduino 

sadman41
Offline
Зарегистрирован: 19.10.2016

Как вы связываете написанное на github со своими симптомами - не только по слову "problem"?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Дорогой! Зачем такой горячий?! Есть трабл в реализации и2ц - ну и прекрасно - возьми другую, или свою напиши, там 30 строк кода.

Для дисплея 1602, 1604 и т.п. управление - еще 20 строк кода. Причем реализация в LiquidCrystal_I2C - совсем детская, как из кубиков. Писалась школьниками, вероятно, всеми используется просто потому, что косячит мало, и не очень ответственна.

Софт и2ц + управление дисплеем я как-то даже в аттини13 запихивал и еще место оставалось ;))) вот реально дольше тут препираться станешь, чем сесть и написать.

gasan333
Offline
Зарегистрирован: 16.10.2015

Спасибо так и сделаю.

5N62V
Offline
Зарегистрирован: 25.02.2016

gasan333 пишет:

-Дисплей к ESP32 подключен как положено, через преобразователь уровней 5->3,3В.

можно просто к 3.3в подтягивать. Если на дисплейной плате стоит подтяжка к 5В - придется ее убрать.