В общем бывает с этими модулями одна проблема. Иногда (довольно редко, но бывает) после подачи питания на связку ардуино + w5500 у w5500 индикаторы на гнезде, куда подключается ethernet разъем, начинают давать одиночные вспышки друг за другом с периодичностью примерно раз в 2 секунды (если ethernet кабель отключить от модуля то огоньки перестают моргать, если подключить обратно, то снова так же начинают). При этом связь по локальной сети с ардуиной не устанавливается.
В этом “странном” режиме я пробовал:
1 - Ethernet.begin(mac, ip); - не помогло
2 - void wizchip_sw_reset(void); - не помогло
3 - Ethernet.hardwareStatus(); - результат выдаёт правильный
4 - Ethernet.linkStatus(); - отвечает что кабель не подключен
5 - Ethernet.localIP(); - выдаёт правильный ip
Вывести из “странного” режима w5500 я придумал только перезагрузкой w5500 по питанию, ардуину при этом перезагружать не обязательно.
В общем то хотелось бы сделать чтобы ардуина после подачи питания как-то отслеживала, а не находится ли w5500 в этом “странном” режиме и перезагружала модуль сама, если находится.
Во всех примерах w5500 которые видел, рекомендуется сброс через rst пин модуля при включении, и когда делал один проект, один сокет использовал для контроля работоспособности, т е долго нет ответа - hardware reset.
Я такие схемные решения (с конденсатором на пине ресета) видел в промышленных аппаратах (типа кофемашин), поэтому и предложил. Но точно не знаю в данной ситуации.
Подозреваю что правильно сначала spi инициализовать, потом сброс w5500 reset, ожидаем несколько секунд, потом инициализируем. Во всяком случае я на stm32 так делал, достаточно стабильно было, но проект заглох, поэтому тестировали мало и о стабильности ничего сказать не могу
Наверное, это правильное решение, если питание медленно нарастает. У МК есть brown-out control, у визнета нет. Ребутнуть после того, как все зарядится-устаканится - вполне хорошая идея.
А чтобы дёрнуть пин Reset на W5500 я могу получается подключить ногу ардуино к этому пину и делать ею низкий сигнал на пол секунды, и таким образом этот HardReset случится, правильно я понимаю?
И наверно крайний вопрос. Есть ли смысл подавать питание на w5500 через транзистор, чтобы была возможность перезагрузить плату по питанию если что? То есть были ли у кого прецеденты, что эта плата зависала так что приходилось перезагружать по питанию чтобы оживить?