Mega2560 + ENC28J60 + EtherShield - zawiesza program - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Mega2560 + ENC28J60 + EtherShield - zawiesza program (/watek-mega2560-enc28j60-ethershield-zawiesza-program) |
Mega2560 + ENC28J60 + EtherShield - zawiesza program - Mad_Maxs - 22-01-2017 Witam, wykonałem beta testy, przygotowanie kodu, itp. na UNO, gdzie program pięknie działał, stabilnie przez 2 dni. Postanowiłem przenieść to na Mega2560 które steruje automatyką w domu i error, program zawiesza się na inicjowaniu karty sieciowej (wyrzucałem linia po linii załadowanie każdego wiersza, aż znalazłem co wiesza). Gdy wyłączę linię e.setup, program idzie bez problemu. Doczytałem, że problem jest w pinach SPI i że dla EtherCard.h trzeba zdefiniować pin SS na 53. Kwestia jak to zrobić w przypadku etherShield? Żaden ze sposobów znalezionych w necie nie pomaga.. Ewentualnie gdzie dokładnie wpiąć moduł, żeby zadziałał w przypadku tej biblioteki? Próbowałem: 50 SO 51 SI 52 SCK 53 SS/CS Poniżej kod, mocno skrócony, o dane, mało istotne dla pytania: Kod: #include "etherShield.h" RE: Mega2560 + ENC28J60 + EtherShield - zawiesza program - namok - 23-01-2017 Przecież jest opisane jakie piny używać: Cytat:Arduino communicates with the shield using the SPI bus. This is on digital pins 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used as SS. On the Mega, the hardware SS pin, 53, is not used to select the W5100, but it must be kept as an output or the SPI interface won't work. Źródło: https://www.arduino.cc/en/Reference/Ethernet RE: Mega2560 + ENC28J60 + EtherShield - zawiesza program - Mad_Maxs - 23-01-2017 namok wszystko fajnie, ale próbowałem zarówno 53 pin jak i 10, a nawet w akcie desperacji 8 Znalazłem też coś takiego: Kod: When the Ethercard library is used with Arduino Mega a little piece of code needs to be adjusted. Thus, the begin()-method has to be called with a reference to the Pin53. ale to nadal odnosi się do lib. ehternet.h (w etherShield niema takiego wywołania jak begin()), która zjada bardzo dużo pamięci (czysty example z biblioteki, zajmuje więcej niż cały mój projekt z testów). Minus etherShield jest taki, że trzeba go kompilować z IDE 1.0.5, bo w nowszych nie jest już wspierany. No i tutaj jest całe moje pytanie, jak zdefiniować w programie ten pin 53 jako właściwy dla obsługi cs/ss przez enc28j60. RE: Mega2560 + ENC28J60 + EtherShield - zawiesza program - namok - 23-01-2017 Z tego co ja rozumie to dla MEGA pin 53 ma być skonfigurowany jako wyjście ale nie uzywany w projekcie. Jako SS jest używany pin 10. RE: Mega2560 + ENC28J60 + EtherShield - zawiesza program - Mad_Maxs - 23-01-2017 czyli po prostu: void setup(){ boolean ss = 53; pinMode(ss, OUTPUT); } a CS w module wpiąć w pin 10 MEGA2560? RE: Mega2560 + ENC28J60 + EtherShield - zawiesza program - namok - 23-01-2017 (23-01-2017, 13:40)Mad_Maxs napisał(a): czyli po prostu:Jak nie sprawdzisz to nie będziesz wiedział. RE: Mega2560 + ENC28J60 + EtherShield - zawiesza program - Mad_Maxs - 23-01-2017 Bez wątpienia chciałem się upewnić czy dobrze Cię zrozumiałem RE: Mega2560 + ENC28J60 + EtherShield - zawiesza program - Mad_Maxs - 28-02-2017 Trochę to zajęło, ale w końcu zebrałem się w sobie (może dlatego że apka na androida jest, a dostępu przez LAN nie ma) i podpiąłem to zgodnie z sugestiami, czyli SS na pin 10 i pin53 output. Nie wiesza całkowicie skryptu, ale przy inicjacji stoi jakieś 20 sekund, jakby miał problem z przypisaniem adresu IP. Potem skrypt leci dalej. Działa wszystko, poza LANem Przypominam że używam ehterShield.h a nie zwykłego Ethernet.h //EDIT: Powiem szczerze, że nie mam pojęcia o co chodzi. Nawet example nie działają SO = 50, SI = 51, SCK = 52, CS = 10. Pin 53 podniesiony jak OUTPUT. Sprawdziłem moduł na UNO i działa bez problemu. Moduł który używam z UNO podłączyłem do Mega i nie działa. Zapiąłem ponownie do Uno i działa jak działał. Próbowałem nawet odpalić przykłady z biblioteki Ethernet. Wszystko się ładnie kompiluje (o ile podniosę 53 pin), niby aplikacji nie wiesza, ale ping nie wraca |