Hello, j’ai une interface ethernet de ce type avec ma 2560 et j’utilise ce schéma de câblage :
J’ai importer la librairie uipethernet et aussi la ethercard , j’ai tenté tous les modes possible, mais il ne m’est même pas possible d’attribuer une IP !
Je suis un peu à cour d’idée, donc si vous en avez…
pour info j’ai testé ceci :
// 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.netmask);
ether.printIp("GW IP: ", ether.gwip);
ether.printIp("DNS IP: ", ether.dnsip);
}
void loop () {}
j'ai regarder dans le .h, par défaut c'est 8, mais je n'ai trouvé aucune doc portant à ce sujet, j'ai testé quelque nombre a pouf, et sans plus.
par contre, j'ai vu que dans le même .h, il y a des commentaires qui dit que ça serais prévu pour une UNO ? ici j'utilise une Mega, c'est possible que ça pause problème ?
Visiblement la librairie s’adapte suivant la carte et c’est bien le 53 pour le CS. Toutefois ce n’est pas le top, c’est le CS de l’Atmega en esclave. J’ai déjà vu de projet foirer à cause de ça. Change le dans ton .h, mets 48 par exemple
Non aucune différence puisque le dénominateur commun est le SPI. Que tu sois sur Nano ou mega le dénominateur commun sera toujours SPI.write()
Ce qui est d'ailleurs un peu étrange c'est qu'il fasse une différence dans la lib alors que le core Arduino s'occupe de ce genre de tâche.
Dans le .h de la lib j'avais pas vu mais on peut lire :
// If you use a pin other than 53 then you still need to define // pin 53 as output, in similar manner to ATMega328 versions: // pinMode(53, OUTPUT); // digitalWrite(53, HIGH);
Ce sont des directives pour le pré-processeur, les définitions comme AVR_ATmega2560 sont générées par le choix de la board. Ensuite quand tu vas lancer la compilation, ces définitions seront ou non générées, et donc les parties en #if defined (LaDéfinition) seront compilées ou pas. Celà permet à partir d'une même librairie de compiler pour tel ou tel microcontrôleur.
Donc ici, quand tu sélectionneras Mega dans la liste de carte, ce sera uniquement cette partie qui sera compilé :