Когда я запускаю этот код на своем W5100 Ethernet Shield :
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
void setup() {
Ethernet.begin(mac);
}
это работает только тогда, когда SD-карта была удалена из щита!
Мне потребовались дни, чтобы найти эту ошибку. С установленной SD-картой работает только полная начальная установка :
Ethernet.begin(mac, ip, dns, gateway, subnet);
Официальная документацияEthernet.begin()
ничего не говорит об этой проблеме. Почему он полностью работает только при удаленной SD-карте? Это "ошибка документации"?
Согласно странице Arduino Ethernet Shield :
Обратите внимание, что, поскольку W5100 и SD-карта совместно используют шину SPI, одновременно может быть активна только одна из них. Если вы используете оба периферийных устройства в своей программе, об этом должны позаботиться соответствующие библиотеки. Однако, если вы не используете одно из периферийных устройств в своей программе, вам нужно явно отменить его выбор. Для этого с SD-картой установите контакт 4 как выход и напишите на него высокий уровень. Для W5100 установите цифровой контакт 10 как высокий выход.
И если вы используете первую версию платы:
Первоначальная версия шилда содержала полноразмерный слот для SD-карты; это не поддерживается.
Вы можете сообщать об ошибках с кодовой базой здесь (похоже, они переместились из кода Google в Github).
Судя по этому отчету , похоже, что третья сторона добавила поддержку DHCP, поэтому я бы сообщил о проблеме, чтобы убедиться, что это не ошибка.
Судя по этому отчету , похоже, что вы используете плохую документацию .
Кевин Марк дал очень хороший ответ, почему ваш сетевой экран не работает с SD. Вот ответ, что сделать, чтобы заставить его работать.
Как избежать путаницы SD-карты и W1500 SPI на Ethernet Shield?
Кевин Марк
Кортук
Полярный
тако
поутак