Webserver con ENC28J60 e SD

Salve a tutti, sono un appassionato di elettronica e posseggo 2 Arduino. Tempo fa ho avuto modo di divertirmi con un Arduino Uno r3 e un modulo ENC28J60, usando la libreria EtherCard. Ho anche provato il modulo SD prodotto dalla LC Studio (questa per intenderci), usando la libreria SD integrata nell' IDE. I due hardware funzionavano tranquillamente da soli, ma è da quando che tento di usarli insieme per realizzare un webserver che non riesco ad andare avanti, non so da dove partire.

La Ethernet e la SD condividono il bus SPI. Devi verificare se le librerie sono programmate in modo da rilasciare il bus al termine delle operazioni e non usarlo in modo esclusivo. Inoltre devi assicurarti che la libreria abiliti il giusto pin SS ogni volta che deve comunicare con una periferica diversa.

Grazie, verifico il codice delle librerie e poi torno :) . Edit: ho tentato di verificare le librerie, ma non ne sono in grado :( Per il pin SS è tutto apposto, la EtherCard abilita il pin 8 e la sd il pin 10 (impostato da me).

Ho provato con questo codice, collegando il pin cs 8 alla sd e il 10 alla Ethernet. https://codebender.cc/sketch:71832 Il seriale mostra: ETH started Ma non SD started. Qualche aiuto?

Ho visto il codice. Ma non è che con quel buffer di 700 byte ti va in "out of memory"?

A quanto dici posso ridurlo?

Ho ridotto il buffer al minimo di 572 byte... ancora stesso problema :confused: Se pingo l'ip di Arduino funziona...

Perche' non ci fai vedere lo sketch, solo il void setup()

Lo sketch è questo qui: https://codebender.cc/sketch:71832

non puo' essere quello, se come hai detto hai cambiato i pin CS dei due dispositivi

void setup() {
  pinMode(8, OUTPUT);
  pinMode(4, OUTPUT);
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
  digitalWrite(11, LOW);
  digitalWrite(4, LOW);
    // Initialize serial communication at 9600 baud
  Serial.begin(9600);
  // Initialize tinyFAT 
  // You might need to select a lower speed than the default SPISPEED_HIGH
  file.setSSpin(4);
  res=file.initFAT(4); 
  if (res==NO_ERROR)    Serial.println("SD started");
  ether.begin(sizeof Ethernet::buffer, mymac); //53 on mega ethernet shield 10 on others
  ether.staticSetup(myip, gwip);
  Serial.println("ETH started");
  int ram = freeRam();
  Serial.println(freeRam());
}

Brunello: non puo' essere quello, se come hai detto hai cambiato i pin CS dei due dispositivi

void setup() {
  pinMode(8, OUTPUT);
  pinMode(4, OUTPUT);
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
  digitalWrite(11, LOW);
  digitalWrite(4, LOW);
    // Initialize serial communication at 9600 baud
  Serial.begin(9600);
  // Initialize tinyFAT 
  // You might need to select a lower speed than the default SPISPEED_HIGH
  file.setSSpin(4);
  res=file.initFAT(4); 
  if (res==NO_ERROR)    Serial.println("SD started");
  ether.begin(sizeof Ethernet::buffer, mymac); //53 on mega ethernet shield 10 on others
  ether.staticSetup(myip, gwip);
  Serial.println("ETH started");
  int ram = freeRam();
  Serial.println(freeRam());
}

Scusate, non avevo avvertito del cambio di pin (che ho fatto per controllare che non funzioni neanche così), naturalmente non è quello il problema.

infatti, cosi' com'e' non ti puo' funzionare

Brunello: infatti, cosi' com'e' non ti puo' funzionare

Come ho già detto non è quello il problema, ogni volta che cambio pin lo cambio anche nell' hardware.

vabbene.. aiutati da solo

Brunello: vabbene.. aiutati da solo

Non ho rifiutato l'aiuto di nessuno.

Se fossi in te butterei nel cestino la ENC specie se la usi con una UNO

pablos: Se fossi in te butterei nel cestino la ENC specie se la usi con una UNO

Piacerebbe anche a me ma non ho soldi per una shield ufficiale :grinning: .

Afelicetti trovi un esempio ben spiegato da Luca Dentella qui: http://www.lucadentella.it/2014/11/04/sdwebserver-enc28j60-e-arduino-20/

Ti consiglio di leggerti anche tutti gli altri tutorial sulla ENC che ha fatto.

Grazie mille, mi hai salvato :grin: