[Résolu] ENC28J60 sur Arduino Mega 1280...

Bonsoir tout le monde !

Après quelques mois un peu mouvementés, je retrouve enfin du temps pour faire mumuse avec mon Arduino :slight_smile: !
Je viens de m'attaquer à éssayer de faire fonctionner ma carte Ethernet avec cette Mega 1280...

Une ENC28J60 acheté sur Ebay, "made in China", et bien sûr livrée sans doc !
Voilà une photo :

Suite à plusieurs sujet vue sur le forum, j'ai téléchargé et installé cette librairie pour faire fonctionner ma carte : http://jeelabs.net/projects/cafe/wiki/EtherCard

Mon câblage est fait comme suit :
VCC - 3v3
GND - GND
RESET - RESET
CS - 53
SCK - 52
SI - 51
SO - 50

J'ai testé les différent exemples fournit, la compilation et l'upload se passent bien.
Après rien, aucun message dans la console Série pour indiquer un échec ou autre comme il devrait pourtant faire au vu des code.

Quelqu'un a réussit à la faire marcher ?
Utiliser une autre librairie ? Laquelle ?
Mauvais câblage ?
Un idée autre ?

Merci d'avance :slight_smile: !

http://shieldlist.org/nuelectronics/ethernet

Je connais pas bien ce shield et même l'électronique mais peut être à cause de reset(arduino) et reset(ENC28J60) (ici pin 2 ?) non ?
Je me trompe sans doute ?

Certainement un problème de câblage...
J'ai changé des defines dans enc28j60.cpp pour les adapter au pins de l'Arduino Mega.

Mais il doit y avoir quelque chose encore... Il y a un truc avec les devices SPI, "Chip Select" je crois...
Je continu de chercher...

Merci osaka :wink: !

Bonjour
Je n'ai rencontré aucun probleme avec cette librairie à ce jour qui pour moi est la plus aboutie des librairies pour l'enc28J60.
Par contre je n'ai jamais eu l'occasion de l'utiliser avec autre chose que des cartes diverses à Mega328. Il y a forcément des modifications à faire (je vais jeter un coup d'oeil) pour tenir compte de l'emplacement des signaux suivants :
CS - 53.... le problême est sans doute là (la lib prévoit les pin 8 ou 10)
SCK - 52
SI - 51
SO - 50
(je ne câble pas le reset)

Je me demandais a quoi servait la pin2, j'ai trouvé.

dans le code arduino

es.ES_enc28j60clkout(2);

dans enc28j60.c ligne 153

void enc28j60clkout(uint8_t clk)
{
        //setup clkout: 2 is 12.5MHz:
	enc28j60Write(ECOCON, clk & 0x7);
}

Ok, je viens de trouver le même câblage ici :
http://www.kiranjose.com/blog/2011/09/connect-to-internet-with-arduino-mega-2560-and-enc28j60-breakout-board_crossover_ethernet_cable/

J'ai re-installé de manière propre la lib, histoire que si j'ai fais des bétises...
Mais toujours rien de plus...

al1fch : Tu as modifié des chose dans la lib pour la faire marcher avec ta Mega ?
osaka : C'est important ça (clkout) ?

Darel:
osaka : C'est important ça (clkout) ?

Je sais pas je n'y connais presque rien niveau hardware mais ici je vois qu'il est branché.
http://shieldlist.org/nuelectronics/ethernet

Enfin d'un côté peut être rien à voir // change clkout from 6.25MHz to 12.5MHz

Sinon http://arduino.cc/forum/index.php?topic=54179.0 ?

J'utilise cette librairie avec un Mega328 sur plaque d'essais ou une carte Uno sans aucun probleme avec la carte Ethercard http://jeelabs.com/products/ether-card
A la ligne 239 du fichier enc28j60.cpp je choisis la pin 8 ou la pin 10 comme sortie vers le ChipSelect du enc28j60. C'est tout. Je laisse tranquille le reset et ne le relie pas a une sortie du mega328 (ce n'est peut être pas un bon exemple !)

Cette librairie a été conçue pour la carte Ethercard commandée par la carte 'Jeenode' à Mega328 du même auteur Il y a peut être des modifications plus importantes à faire pour l'utiliser avec un Mega1280 ou 2560 et non un mega328. Je pense que le second lien donné par osaka dans le message ci-dessus indique la direction à suivre. ça se situerait aux lignes 243 à 246 de enc28j60.cpp de cette librairie. mais quoi mettre en ligne 239 ?
En cas d'insuccès le mieux serait de poser la question sur le forum de jcw.
http://forum.jeelabs.net/forum/general-discussion jcw est très réactif :grin:

La sortie clkout du enc28J60, avec un choix de plusieurs fréquences, n'est à ma connaissance jamais exploitée dans le monde Arduino.
Un signal d'horloge est disponible, on s'en sert si on veut. C'est tout.
Je pense que le chiffre 2 que tu as repéré, 'osaka, ne correspond pas à un numéro de pin arduino mais à une des options du diviseur de fréquence qui opére sur le 25MHz du enc28j60. D'après le schéma de la carte Ethershield ( Nueelectronics) la sortie clkout a un point test mais n'est pas reliée à un connecteur.

clkout.jpg

al1fch:
Je pense que le chiffre 2 que tu as repéré, 'osaka, ne correspond pas à un numéro de pin arduino mais à une des options du diviseur de fréquence qui opére sur le 25MHz du enc28j60. D'après le schéma de la carte Ethershield ( Nueelectronics) la sortie clkout a un point test mais n'est pas reliée à un connecteur[/i].

Je devrais en resté à l'aide seulement niveau programmation :* et vive le shield officiel lol :grin:

Je viens de poster sur le forum de l'auteur (JWC) :
http://forum.jeelabs.net/node/493

On va voir ce que ça donne...
En tout cas merci à vous tous d’essayer de m'aider :slight_smile: !

Je propose (ce n'est pas totalement désintéressé et le probleme pourrait bien me concerner prochainement !!) :

ligne 239 de enc28j60.cpp :

#define SELECT_BIT  0   // 0 = B0 = pin 8, 2 = B2 = pin 10
#define FULL_SPEED  1   // use full-speed SPI for bulk transfers

void ENC28J60::initSPI () {
    const byte SPI_SS   = 8; // ou 10 idem ligne 239
    const byte SPI_MOSI = 51;
    const byte SPI_MISO = 50;
    const byte SPI_SCK  = 52;

MISO, MOSI et SCK sont imposés par le micro, pas de choix possible.
SS qui sert a piloter le CS du 28j60 peut par contre sortir de n'importe ou.
En choisissant les pin 8 ou 10 tu restes dans les cordes de la librairie Ethercard.

Non, rien de plus... :frowning:

Par exemple avec le test DHCP de la bibliothéque, ça m'affiche ça :

[testDHCP]
MAC: 74:69:69:2D:30:31

Puis plus rien.

Incompréhenssible :fearful: !

J'ai tout viré et tout remis histoire de repartir sur des bases propres...
J'ai juste changé ça :

const byte SPI_SS   = 53;
const byte SPI_MOSI = 51;
const byte SPI_MISO = 50;
const byte SPI_SCK  = 52;

Je n'ai même pas touché au reste.

J'ai aussi tout défait mon montage et repris de zéro...
Et là, magie, malgré que le DHCP ce n'est pas ça (marche 1 fois sur 10), ça marche en statique :smiley: !

Sois je mettais planté dans mon montage, mais vu le nombre de fois que j'ai vérifié ce p***** de montage, je ne pense pas.
Certainement un faux contact quelque part.

En tout cas merci à tous !
Je me coucherais moins bête ce soir :wink: !