Go Down

Topic: Arduino e ENC28j60 e DHCP non funzionante (Read 4891 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))





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

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


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 ?

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.





Brunello

che data hanno i file della libreria ?

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);



                 

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