[Résolu] Deux module SPI en même temps (SD et Ethernet) !

Salut à tous !

J'ai un shield Ethernet et un shield pour les cartes SD.
Aucun des deux n'est officiel.

J'arrive à les faire marcher séparément.

Le shield SD fonctionne avec la libraie SD officelle.
Le shiel Eternet fonctionne avec la librairie EtherCard.

Mon problème c'est qu'il sont tout les deux en SPI (et utilisent les emplacements 50, 51, 52, 53) tout les deux.

Je voudrais donc les faire fonctionner tout les deux, pas forcément en simultanée.
Je sais, qu'en théorie, c'est possible grâce au Chip Select (53), on peut désactiver un shield et activer l'autre...
Mais comment faire pour changer le CS d'un des deux ?
Es-ce possible ?

J'ai essayé de modifier ça dans le code source de chacune des librairie (chacune leur tour), rien à faire.
Une marche (celle que je ne change pas), mais pas l'autre.

Avez vous une idée ?
Avez vous déjà eu ce problème ?

Merci d'avance !

Bonjour,

A mon n'avis c'est pas une bonne idée de modifier le code des librairies.
J'ai réussi par le passé à faire marcher une wave shield et une ethernet shield en même temps (SD waveshield + ethernet).

Ne touche pas à la librairie ethernet mais va plutôt voir si tu ne peut pas changer la broche SS dans ta librairie SD (ou encore mieux si elle n'as pas un constructeur ou la pin SS est paramétrable comme avec la librairie SDfat).

Ensuite tu fait "manuellement" des define pour activer/désactiver les périphériques avant utilisation:

#define ethON() digitalWrite(ETH_SS, LOW); digitalWrite(SD_SS, HIGH)
#define sdOn() digitalWrite(ETH_SS, HIGH); digitalWrite(SD_SS, LOW)

et tu appelle le define qui va bien au fils de ton code.

En effet, SD.begin() prend un argument facultatif, le CS !
Et avec tes defines, ça marche du feu de Dieu ]:smiley: !

Merci beacoup skywodd :smiley: !

Darel:
En effet, SD.begin() prend un argument facultatif, le CS !
Et avec tes defines, ça marche du feu de Dieu ]:smiley: !

Merci beaucoup skywodd :smiley: !

ya pas de quoi ^^