Mega 2560 + W5500 не работает

olivergreen
olivergreen аватар
Offline
Зарегистрирован: 15.08.2016

Всем здравствуйте!
Кратко: Mega 2560 + W5500 модуль (не шилд) не работает.

Я немного начинающий и возможно потому у меня возникла следующая проблема.
Не могу подружить мегу и указаный модуль (не шилд). Перепробовал, возможно, все библиотеки связанные с W5500.
Но работает с платой ардуино мини. В описании к библитекам, равно как и в оригинальной Ethernet, указано, что используются пины 10, 11, 12 и 13.

Судя по всему, это и есть причина бемолвности моего модуля. Я пытался найти в библиотеках упоминание номеров данных пинов, но нашел только 10 (SS вроде).

Помогите разобраться с данной проблемой кто в силах! И если вдруг выбрал не подходящую тему, то уж не серчайте )))

Заранее спасибо!

arDubino
Offline
Зарегистрирован: 12.01.2017

смотри описание пинов меги и работающей мини. наверно поймешь в чем дело . 

arDubino
Offline
Зарегистрирован: 12.01.2017

судя по описанию надо на SPI присобачить а у меги это SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Посредством данных выводов осуществляется связь SPI, например, используя библиотеку SPI. Также выводы SPI могут быть выведены на блоке ICSP

olivergreen
olivergreen аватар
Offline
Зарегистрирован: 15.08.2016

Про номера пинов SPI на меге и нано я знаю. Модуль я подключил к данным пинам, но не работает. А при подключении к нано работает. Вот что есть в описании библиотек:

 /*
Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
*/

я и думал найти где в коде определяются номера пинов SPI, но не нашел....

olivergreen
olivergreen аватар
Offline
Зарегистрирован: 15.08.2016

К слову модуль я подключаю к роутеру TP-LINK 840N, напрямую к сетевой не имею возможности ввиду отсутствия оной. Может быть роутер не хочет модуль как-то регистрировать...

uno
Offline
Зарегистрирован: 16.06.2016
#include <SPI.h>
#include <Ethernet.h>
// первая строка прописывает, что подключен к стандартным портам SPI

 

olivergreen
olivergreen аватар
Offline
Зарегистрирован: 15.08.2016

Смотрел и SPI.h на предмет упоминания пинов, но нет. Да и догадываюсь, что это происходит не простым указанием номера. Но и представить не могу, чтобы разработчики библиотек предусмотрели подключение только к платам на Атмеге328, типа уно, мини...

В дальних интернетах нашел едва ли не единственное упоминание примерно моей проблемы, но вроде и не то... Точнее еще с программной частью не разбирался, для уровня моего английского, там слегка запутано )

uno
Offline
Зарегистрирован: 16.06.2016

Подключите к правильным пинам, а не перназначайте их.

uno
Offline
Зарегистрирован: 16.06.2016

На меге разьем СПР продублирован возле ресета для таких плат.

подключиться к 50,51,52,53 и еще как Вариант проверить питание. Мега есть поболее мини может тупо питание проседает. Это апаратный СПР можно реализовать программный, но он гораздо медленее и ИМХО, что сеть на нем не взлетит тупо по скорости.

olivergreen
olivergreen аватар
Offline
Зарегистрирован: 15.08.2016

Знаю я где на меге находятся SPI пины. Прзванивал цепи от пина модуля до пина ардуино.

Из-за неудач с подключением думал, что, возможно, библиотека написана с явным указанием новером пинов SPI на уно. Ошибался.

Думал, может с роутером на так что-то. Подключал к другому, полурабочему (сгорел только  WAN порт), то же самое.

Более того, у меня кроме модуля на W5500 есть enc28j60, с ним результаты такие же... Но его-то я может и спалил (он на 3,3, а я в 5 случайно воткнул).

В общем, чего я добился, так это сообщения: 

server is at 0.0.0.0
server is at 255.255.255.255

Застопорился на месте с этой бедой. А главное, что на Атмеге 328 (нано) один модуль точно работал...

uno
Offline
Зарегистрирован: 16.06.2016

Проверь резистор 510 или 511 на выходе китайцы инода путают и вместо 50 ом ставят 500 и с многими роутерами такая плата неработает или работает на коротком шнурке. и что в вашем понятие не работает

uno
Offline
Зарегистрирован: 16.06.2016

поменяй библиотеку

kolobokspb
Offline
Зарегистрирован: 30.05.2014

Проверил свзяку: Mega 2560R3 + W5500 (как на картинке) + Dlink320NRU

50 (MISO)<->MISO

51 (MOSI)<->MOSI

52 (SCK)->SCLK

10 (SS)<->SCS 

+ Power, Gnd

Работает.

P.S. Library: Ethernet2 by Various V. 1.0.4

olivergreen
olivergreen аватар
Offline
Зарегистрирован: 15.08.2016

Спасибо! А я вместо 10 пина на меге, пытался использовать 53. Потому и не работало. Хотя так до конца и не  ясно, почему не используется 53 пин.

cepzik
Offline
Зарегистрирован: 15.12.2015

потому что в Ethernet2.h явно прописано: 

EthernetClass() { _dhcp = NULL; w5500_cspin = 10; }

void init(uint8_t _cspin = 10) { w5500_cspin = _cspin; }

предлагаю заменить на (проверено, норм пашет):
 
#if defined(__AVR_ATmega1280__)\
|| defined(__AVR_ATmega2560__)
EthernetClass() { _dhcp = NULL; w5500_cspin = 53; } 
  void init(uint8_t _cspin = 53) { w5500_cspin = _cspin; }
#else
EthernetClass() { _dhcp = NULL; w5500_cspin = 10; }
  void init(uint8_t _cspin = 10) { w5500_cspin = _cspin; }
#endif

 

olivergreen
olivergreen аватар
Offline
Зарегистрирован: 15.08.2016

cepzik пишет:

потому что в Ethernet2.h явно прописано: 

EthernetClass() { _dhcp = NULL; w5500_cspin = 10; }

void init(uint8_t _cspin = 10) { w5500_cspin = _cspin; }

предлагаю заменить на (проверено, норм пашет):
 
#if defined(__AVR_ATmega1280__)\
|| defined(__AVR_ATmega2560__)
EthernetClass() { _dhcp = NULL; w5500_cspin = 53; }  
  void init(uint8_t _cspin = 53) { w5500_cspin = _cspin; }
#else
EthernetClass() { _dhcp = NULL; w5500_cspin = 10; }
  void init(uint8_t _cspin = 10) { w5500_cspin = _cspin; }
#endif

 

Спасибо! Отличное решение!