W5100 shield умер?

Messiah
Messiah аватар
Offline
Зарегистрирован: 10.11.2018

Симптомы следующие. При включении / перезагрузке желтый LED (pin13) моргает несколько раз. Скетч из примеров Webserver независимо от того DHCP или задан статический IP - Ethernet.localIP() выдает 0.0.0.0.

На самом RJ45 порту светодиоды не горят. На плате есть LED LINK, 100M, RX, TX - все не горят. Индикатор наличия питания горит. Кабель Ethernet проверялся кабель тестером, контакт в порту по всем 8 пинам есть с обоих сторон проверял, другой кабель тоже проверялся. Еще из начальных условий - девайс работал некоторое время. SD карта которая на нем же - идеально работает. Pin 4 и Pin 10 зарезервированные шилдом меняют свое состояние при перезагрузке.

Из того что пишут в интернете по похожей проблеме:

https://forum.arduino.cc/index.php?topic=499436.0 - нет, контакты не окислились. Протирал спиртом. Кроме того, ICSP используется и для карты памяти, а она работает.

https://arduino.stackexchange.com/questions/10326/is-my-arduino-ethernet... - у человека умер W5100 из-за подключения повышенной нагрузки к цифровым выходам. У меня этого не было.

На шилде стабилизатор AMS1117 3.3 - на выходе 3.3.

На чипе W5100 пин 2 должен быть 3.3V - правильно. Пин 59 /Reset - 4.5V (уровень питания от USB). Low = перезапуск, тут high значит рабочий режим. Остальные пины прощупать сложно, слишком близко расположены друг к другу. ИМС инвертирующий триггер 74LVC14A - питание 3.3, на логических входах 0 на выходах 3.3.

Куда дальше копать - не понимаю, но проблема явно аппаратная.

 

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Что у вас написано на резисторной сборке, см фото.

https://a.d-cd.net/9f93981s-960.jpg

Messiah
Messiah аватар
Offline
Зарегистрирован: 10.11.2018

Вот так как на фото снизу вверх - 302 вместо 301, 123 вместо 2021, 511 сборка, параллельно ей (правее) сборка также 102.

Прозвонил - у сборки 511 по 254 ома, остальные по номиналу плюс минус. У сборки 102 нижняя пара по 1к, верхняя пара по 500 дает. Уже увидел что там попарно параллельно дорожки идут. Вроде бы все резисторы целые.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Китайцы козлы. По даташиту сборка на которой написано 511 (это 510 ом) должна быть 510 (это 51 ом). Это причина ваших бед. Пока не замените эту сборку на правильную, ваш шилд будет работать только с некоторыми устройствами.

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

Брукли, "независимо от того DHCP или задан статический IP - Ethernet.localIP() выдает 0.0.0.0" - это не симптом неправильно резистивной сборки.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

sadman41 пишет:

Брукли, "независимо от того DHCP или задан статический IP - Ethernet.localIP() выдает 0.0.0.0" - это не симптом неправильно резистивной сборки.

Ошибаешься. Это именно оно. Чип не чувствует сети. Поэтому ип всихда 0. Я именно такие косяки уже вылавливал с кривыми шилдами.

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

Выдерни из своего шилда сетевой кабель, назначь ему статический IP и считай его - будет он 0.0.0.0 ?

Messiah
Messiah аватар
Offline
Зарегистрирован: 10.11.2018

Этот шилд с этим кабелем был подключен к этому же роутеру и все работало. Я тоже считаю что это не тот симптом.

Более того, мне там намекнули что нужно взять пример Webserver из версии библиотеки Ethernet 2.0, в нем больше дебага. Раскомментировав несколько serial.print в самой библиотеке получилось что W5100 не отвечает Ардуинке по SPI. Вот лог:

Ethernet WebServer Example
w5100 init
w5100.cpp: detect W5200 chip
Wiznet soft reset
mr=0
w5100.cpp: detect W5500 chip
Wiznet soft reset
mr=0
w5100.cpp: detect W5100 chip
Wiznet soft reset
mr=0
w5100.cpp: readMR =0 <> 0x10
no chip :-(
Ethernet shield was not found.  Sorry, can't run without hardware.

 

dmitron1036
Offline
Зарегистрирован: 10.01.2016

Брокли точно прав.

Почини - тогда будем обсуждать новые проблемы.

Эту уже "скурили".

Вот моя цигаретка:

https://www.youtube.com/watch?v=tcsKdsnOd4w&list=PLWPGkgnA_YMYKpyrFbVBDtexCKO1yzSl9&index=2

Messiah
Messiah аватар
Offline
Зарегистрирован: 10.11.2018

Видео убедительное. А теперь кто-нибудь с рабочим шилдом пожалуйста проверьте такую вот фигню: При отключенном Ethernet кабеле инициализируйте W5100 и скажите какие LED'ы на нем горят плюс

В Мои документы\Arduino\libraries\Ethernet\src\utility\w5100.cpp раскомментируйте все Serial.print, а функцию isW5100 замените на следующую:

uint8_t W5100Class::isW5100(void)

{
chip = 51;
Serial.println("w5100.cpp: detect W5100 chip");
if (!softReset())
{
Serial.println("w5100.cpp: softReset failed");
return 0;
}
writeMR(0x10);
uint8_t mr = readMR();
if (mr != 0x10)
{
Serial.print("w5100.cpp: readMR =");
Serial.print(mr, HEX);
Serial.println(" <> 0x10");
return 0;
}
writeMR(0x12);
mr = readMR();
if (mr != 0x12)
{
Serial.print("w5100.cpp: readMR =");
Serial.print(mr, HEX);
Serial.println(" <> 0x12");
return 0;
}
writeMR(0x00);
mr = readMR();
if (mr != 0x00)
{
Serial.print("w5100.cpp: readMR =");
Serial.print(mr, HEX);
Serial.println(" <> 0x00");
return 0;
}
Serial.println("chip is W5100");
return 1;
} 

Какой должен быть ответ по SPI у заведомо рабочего шилда? У Вас тоже будут нули вместо ожидаемого значения 0x10 ?

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

На видео разборки с шилдом, которому прилетел разряд в RJ-45. Поэтому там были проблемы с раскачкой выхода, но со SPI всё было ОК.

При отключенном кабеле у меня горит только PWR. Но это никак не препятствует (и не должно) обмену по SPI. Вот это вернёт 0x10, если шина работает (в Mode Register устанавливается бит Ping Block и, затем, читается).

writeMR(0x10);
uint8_t mr = readMR();
Serial.println(mr, HEX);

Если есть осциллограф, то вешайтесь на MISO/MOSI и смотрите - уходит ли команда чипу и отвечает ли он. Или же логический анализатор на шину садите.  Это  самый простой и надёжный способ понять на чьей стороне проблема.

Messiah
Messiah аватар
Offline
Зарегистрирован: 10.11.2018

Если методом исключений... судя по тому что SD карта на том же шилде по тому же SPI пашет - проблема не со стороны Arduino. Кроме того, есть второй Arduino, вероятно от другого производителя (точно из другого магазина но визуально отличий не заметил) который с этим шилдом ведет себя точно так же. Правда, проверялось до того как мне сказали что лучше проверить с библиотеки Ethernet 2.0, но на вид все та же проблема. Есть конечно мысль связать 2 Arduino по SPI (2й в качестве логического анализатора) но что-то мало в сети примеров, видимо все заканчивается тезисом "слишком много проводов" и все реализации либо через 1wire либо UART.

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

Что-то я не понял - у вас же в другой теме Mini Red был вроде как.  Какая ардуина - тоже непонятно... Может еще и датчиками обвешена?

На шилдах с SD бывает замыкание в районе корпуса SD-разъема на один из контактов SPI. Хотя, если она работает... В любом случае надо в SPI потыкать - срабатывает ли CS, например?

Messiah
Messiah аватар
Offline
Зарегистрирован: 10.11.2018

Uno у меня. В другой теме обсуждались спонтанные перезагрузки из-за ухода AMX1117 в аварийное отключение на долю секунды в цикле, это решено заменой питания. Как-то слабо верится что пониженное или повышенное питание стало причиной выгорания W5100 (при том что AMS 3.3 на шилде живой) во время экспериментов с отключенным LAN кабелем. Сейчас все тесты проводились без датчиков - только Uno и шилд, и с вставленной картой памяти и без.

Согласен, между корпусом SD и ICSP расстояние маленькое, легко может быть сопля, но сопли нет. Корпус прозванивается на один из контактов, но в распиновке сказано что это земля - так и должно быть. Карта работает потому это исключается.

Логический анализатор пока не делал. Видимо, придется заказать доставку второго шилда заведомо рабочего и с ним сравнивать. Если вдруг старый оживет после каких-то операций, пойдет под другие задачи...

miks69
Offline
Зарегистрирован: 16.02.2020

Друзья по несчастью, сообщите пожалуйста, удалось ли что-то выяснить в итоге по причинам такого поведения шилда?

Столкнулся с похожей проблемой, при которой аналогичный китайский шилд W5100 в процессе работы неожиданного уходит в нирвану и перестает отвечать по шине SPI. Помогает только сброс по питанию.

Messiah
Messiah аватар
Offline
Зарегистрирован: 10.11.2018

Нет. Купил второй, оказался из другой партии (номиналы чуть отличаются).
SPI карты памяти и SPI Ethernet'а идут через разные разъемы и на шилде гальванически не связаны, потому согнутые ноги могут оказаться проблемой при работе Ethernet при рабочей SD и вводить в заблуждение.

Номиналы всего что мог по прозванивал но причину неработоспособности так и не определил, бросил в ящик. Проект завершен на другом шилде.