Вопрос по Ethernet модуль w5500

с неё надо начинать…так смотришь общими усилиями и найдёте в чем косяк
re

Я правильно понял, что вы сделали вот так?

Да, посмотрел на плате - так. Только запитан модуль от своего LDO на 3.3V, если это имеет значение.

в даташите написано от 500 микросекунд, откуда я взял 70 миллисекунд не помню :thinking:

я на 5100 смотрел, значит что-то поменяли кардинально, 2 и 500 сильно большая разница

В общем протестировал. Намеренно словил “странный режим” и будучи в нём дёрнул за ногу reset w5500. После чего модуль вышел из странного режима (огоньки перестали бегать раз в 2 секунды, лампочки начали показывать нормальный линк) и затем после Ethernet.begin(mac, ip); модуль вошёл в нормальный режим работы.
Большое всем спасибо за подсказки !

2 лайка

Вопросик по модулю
Работаю с W5500 и ESP32
Периодически не работает модуль на гигабитном свиче. Лампочки Link не горят совсем. На 100Мб запускается без проблем

pmode все в ON (режим AUTO)
Если не AUTO, как узнать какой нужен режим модуля?
10 или 100, Full или Half duplex ?

100/Full на обоих концах, если на 100 работает устойчиво.

Да. Все так и вышло. PMODE2 посадил на землю и все стало работать и с 1Гб оборудованием

Здравствуйте!
тоже вопрос по W5500, только по шилду от Keystudio. Имел кто-нибудь дело с таким монстром?:

Проблема вот в чем, никак не пойму почему при инициализации сервера, а именно сразу после

  Ethernet.begin(MACAddress, IPAddress);

на выводах D11 D12 устанавливается высокое состояние:

#include <SPI.h>
#include <Ethernet.h>
byte MACAddress[] = {0x4C, 0xD3, 0xAF, 0x1B, 0xF8, 0x99};
byte IPAddress [] = {192, 168, 0, 17}; // IP адрес 
byte subnetMask[] = {255, 255, 255, 255}; //subnet mask
EthernetServer server(80);
void setup() {
  Serial.begin(9600);
  pinMode(7, OUTPUT);
  digitalWrite(7, 0);
  Ethernet.init(10); 
 Ethernet.begin(MACAddress, IPAddress);
Ethernet.setSubnetMask(subnetMask);
 // Запустили сервер
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
Serial.print("dnsServerIP: ");
Serial.println(Ethernet.dnsServerIP());
Serial.print("subnetMask: ");
Serial.println(Ethernet.subnetMask());
 Serial.print("gatewayIP: ");
Serial.println(Ethernet.gatewayIP());
}

void loop() {
}

подскажите в чем дело, можно ли использовать D11 и D12, или не трогать их вообще?
даташита по этой плате нет, с продавцом связывался - ничего конкретного не сказал, только скинул ссылку с примерами для этой платы где используется библиотека Ehternet55.h, которая есть в архиве, но с ней компилятор ругается и в ней нет проверки linkStatus:
ссылка

Потомушто D10…D13 - это SPI, по которому W5500 с МК судачит. Трогать их можно, но не нужно, если не знаешь, что делаешь.

на меге SPI это 50,51,52

Тогда трогай.


Мошт разглядишь чего полезного.

и чё так усложнять?

/*
  Web Server
 
 A simple web server that shows the value of the analog input pins.
 using an Arduino Wiznet Ethernet shield. 
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional)
 
 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe
 modified 12 Aug 2013
 by Soohwan Kim
 
 */

примечательно, что такого на шилде w5100 нет

Ничего не мешает подключать без шильда.
Всё зависит от коивизны рук.

Сергей, а подскажите, в итоге на какое время дергали ресет? И если не сложно, можете показать код «дергания» и переинициализации w5500.

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

void setup() {
delay(200);
pinMode (pinEthernetReset, INPUT);
digitalWrite(pinEthernetReset, LOW);
pinMode (pinEthernetReset, OUTPUT);
delay(700);
pinMode (pinEthernetReset, INPUT);
delay(100);

инициализация/переинициализация

Ethernet.begin(mac, ip);

1 лайк

Вопрос знатокам. W5500 может работать несколько суток нормально, а потом перестать откликаться на внешние запросы пока его не перезагрузишь. Из этого “состояния зависания” модуль может вывести просто строчка Ethernet.begin(mac, ip); Пока что я придумал только сделать таймер, который дёргает эту строчку раз в 5 минут. Но всё-равно я ловлю прибор на том что это “зависание модуля” случается в любой момент и приходится ждать пока отработает таймер со строчкой. Была ли у кого нибудь такая проблема?