22-01-2017, 22:59
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:
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"
#include "ETHER_28J60.h"
static uint8_t mac[6] = {0x54, 0x58, 0x58, 0x10, 0x00, 0x24};
static uint8_t ip[4] = {192, 168, 10, 200};
static uint16_t port = 80;
ETHER_28J60 e;
void setup() {
e.setup(mac, ip, port);
}
void loop(){
const char* params;
if (params = e.serviceRequest())
{
if (strcmp(params, "all") == 0)
{
e.print("<center>");
e.print("Temperatura : ");
e.print(temperature);
e.print("<br>Wilgotnosc powietrza : ");
e.print(humidity);
}
if (strcmp(params, "kit_auto") == 0)
{
pilot = 0;
e.print("<center><br><br><br><br>");
e.print("kit auto!");
e.print("<br><A HREF='all'><button>BACK</button></A>");
}
if (strcmp(params, "kit_on") == 0)
{
pilot = 2;
e.print("<center><br><br><br><br>");
e.print("Kit on");
e.print("<br><A HREF='all'><button>BACK</button></A>");
}
if (strcmp(params, "kit_off") == 0) {
pilot = 1;
e.print("<center><br><br><br><br>");
e.print("Kit off");
e.print("<br><A HREF='all'><button>BACK</button></A>");
}
e.respond();
}
}