Go Down

Topic: Arduino e ENC28j60 e DHCP non funzionante (Read 5212 times) previous topic - next topic

Dec 27, 2012, 10:20 pm Last Edit: Dec 27, 2012, 11:50 pm by bonavoglias Reason: 1
Salve,

ho preso da poco lo shield Ethernet ENC28J60 per arduino che è praticamente identico a quello presente in foto



con l'unica differenza che sulla mia scheda non è presente il ponte R1 ma posso con certezza sostenere che il PCB è Futura Elettronica. Ho effettuato tutte le ricerche del caso sul forum purtroppo però in nessun caso sono riuscito a risolvere. Ho utilizzato le library:

https://github.com/jcw/ethercard

ho provato ad utilizzare nello specifico lo sketch testDHCP ma il risultato è sempre lo stesso:

Code: [Select]
[testDHCP]
MAC: 74:69:69:2D:30:31
Failed to access Ethernet controller
Setting up DHCP
DHCP failed
My IP: 0.0.0.0
Netmask: 0.0.0.0
GW IP: 0.0.0.0
DNS IP: 0.0.0.0


premesso che ho il DHCP attivo quale potrebbe essere il problema?? Ho sentito parlare di pin 8 - pin 10...

Grazie






Brunello

gia'.. potrebbe essere il chip select.
di default quella libreria mia pare sia sul pin8 e quella scheda pare sia sul pin 10

quindi cambierei la riga

if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)

con

  if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))




"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Grazie per la risposta ma con questo codice:

Code: [Select]
// Arduino demo sketch for testing the DHCP client code
//
// Original author: Andrew Lindsay
// Major rewrite and API overhaul by jcw, 2011-06-07
//
// Copyright: GPL V2
// See http://www.gnu.org/licenses/gpl.html

#include <EtherCard.h>

static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[700];

void setup () {
 Serial.begin(57600);
 Serial.println("\n[testDHCP]");

 Serial.print("MAC: ");
 for (byte i = 0; i < 6; ++i) {
   Serial.print(mymac[i], HEX);
   if (i < 5)
     Serial.print(':');
 }
 Serial.println();
 
 if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
   Serial.println( "Failed to access Ethernet controller");

 Serial.println("Setting up DHCP");
 if (!ether.dhcpSetup())
   Serial.println( "DHCP failed");
 
 ether.printIp("My IP: ", ether.myip);
 ether.printIp("Netmask: ", ether.mymask);
 ether.printIp("GW IP: ", ether.gwip);
 ether.printIp("DNS IP: ", ether.dnsip);
}

void loop () {}


se vado a modificare

Code: [Select]
 if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
   Serial.println( "Failed to access Ethernet controller");


ottengo questo errore:

testDHCP.ino: In function 'void setup()':
testDHCP:27: error: no matching function for call to 'EtherCard::begin(unsigned int, byte [6], int)'
/Users/bonavoglias/Documents/Arduino/libraries/EtherCard/EtherCard.h:131: note: candidates are: static uint8_t EtherCard::begin(uint16_t, const uint8_t*)

Brunello

stranissimo..
ho verificato e a me non da' errore.
e la libreria pare la stessa
"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Non so magari sbaglio qualcosa, considera che é il mio primo giorno con arduino. Che shield usi?

Brunello

non shield, ma moduli esterni, come questo http://www.hobbycomponents.com/image/cache/data/800px/HCARDU0028_800-800x600.JPG

ma qui non e' un problema di shield o scheda, dato che nemmeno ti compila

"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Il problema é che il codice viene compilato ma non viene assegnato l'iP in Dhcp e se provo a modificare il pin aggiungendo 10 caccia fuori l'errore citato.

Brunello

e' quello lo strano... l'errore

domanda:

Che IDE e che Board usi ?
"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Ho provato sia con la 023 che con l'ultima versione. Arduino invece é UNO R3.

Brunello

mah... sembra quasi che ci sia un'asegnazione in piu'...

pero'  l'errore dovrebbe darlo sulla riga137...  invece dice sulla 131. e ho reinstallato la libreria che dici tu.




"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Brunello

che data hanno i file della libreria ?
"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Io utilizzo questa:

https://github.com/jcw/ethercard

puoi dirmi che libreria stai utilizzando? E che IDE?

Brunello

secondo me stai usando una libreria diversa.
Se apri il file EtherCard.h della libreria, le righe 137 e 138 sono cosi' :

static uint8_t begin (const uint16_t size, const uint8_t* macaddr,
                        uint8_t csPin =8);



                 
"C' è chi legge Guerra & Pace e non ci capisce un tubo vuoto; c'è chi legge l'etichetta delle patatine fritte e ci trova la spiegazione del mondo" (J.S. S. architetto napoletano)

Buon Anno!

La libreria corrisponde è la stessa, ho provato lo sketch testDHCP ma:

[testDHCP]
MAC: 74:69:69:2D:30:31
Failed to access Ethernet controller
Setting up DHCP
DHCP failed
My IP: 0.0.0.0
Netmask: 0.0.0.0
GW IP: 0.0.0.0
DNS IP: 0.0.0.0

ho contattato il venditore e mi ha confermato le libreria. Dove sbaglio??

Se invece uso le librerie sempre consigliate dal venditore ENC28J60 e ad esempio provo uno degli examples il risultato è sempre lo stesso:

Webserver

In file included from /Users/bonavoglias/Documents/Arduino/libraries/ENC28J60/Ethernet.h:5,

from WebServer.pde:7:
/Users/bonavoglias/Documents/Arduino/libraries/ENC28J60/Client.h:22: error: conflicting return type specified for 'virtual void Client::write(uint8_t)'
/Users/bonavoglias/Downloads/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'
/Users/bonavoglias/Documents/Arduino/libraries/ENC28J60/Client.h:24: error: conflicting return type specified for 'virtual void Client::write(const uint8_t*, size_t)'
/Users/bonavoglias/Downloads/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:53: error:   overriding 'virtual size_t Print::write(const uint8_t*, size_t)'
In file included from /Users/bonavoglias/Documents/Arduino/libraries/ENC28J60/Ethernet.h:6,
                 from WebServer.pde:7:
/Users/bonavoglias/Documents/Arduino/libraries/ENC28J60/Server.h:16: error: conflicting return type specified for 'virtual void Server::write(uint8_t)'
/Users/bonavoglias/Downloads/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'
/Users/bonavoglias/Documents/Arduino/libraries/ENC28J60/Server.h:18: error: conflicting return type specified for 'virtual void Server::write(const uint8_t*, size_t)'
/Users/bonavoglias/Downloads/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:53: error:   overriding 'virtual size_t Print::write(const uint8_t*, size_t)'


Secondo me sbaglio qualcosa.


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy