[problème] CS SD et Ethernet [résolu]

Bonjour,

Bon j'en ai marre de me coltiner ce problème, je galère a chaque fois avec ces histoires de CS à en croire qu'on peut pas utilisé la SD et ethernet en même temps..

Bon j'ai un arduino ethernet et je veux utilisé la SD et ethernet

j'ai vue sur le net les pint de CS sont 4 et 2 donc réspéctivement quand je commence le SD je fait:

      pinMode(2, OUTPUT);// ethernet 
      digitalWrite(2,HIGH);// CS=1 désactivé
      pinMode(4, INPUT);//activer SD
      SD.begin(4);//débuté SD

et a l’inverse pour le ethernet:

  pinMode(4, OUTPUT);//cs SD
  digitalWrite(4,HIGH);// désactiver SD
  pinMode(2, INPUT);// activer ethernet
  Ethernet.begin(mac);//debut ethrnet
  Udp.begin(localPort);
.
.
.
  Udp.stop();

voila, donc je ne sais pas ou je merde pourtant c'est bien expliqué sur cette page:

Arduino communicates with both the W5100 and SD card using the SPI bus (through the ICSP header). This is on digital pins 11, 12, and 13 on the Duemilanove and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card. These pins cannot be used for general i/o. On the Mega, the hardware SS pin, 53, is not used to select either the W5100 or the SD card, but it must be kept as an output or the SPI interface won't work. Note that because the W5100 and SD card share the SPI bus, only one can be active at a time. If you are using both peripherals in your program, this should be taken care of by the corresponding libraries. If you're not using one of the peripherals in your program, however, you'll need to explicitly deselect it. To do this with the SD card, set pin 4 as an output and write a high to it. For the W5100, set digital pin 10 as a high output.

certe c'est pour le shield ethernet et pas pour le arduino, mais j'ai supposé que c’était pareil et appart pour ethernet ou c'est 2 le 4 pour SD reste le même..

Merci de votre aide :)

Skizo !

Dans tout les cas le CS est un signal de sortie.

Pour l'Ethernet :

pinMode(10, OUTPUT);// ethernet 
digitalWrite(10,HIGH);
Ethernet.begin(mac);//debut ethrnet
Udp.begin(localPort);

Pour la SD:

pinMode(4, OUTPUT);//activer SD
SD.begin(4);//débuté SD

Les 2 sont totalement indépendants. Tu mets, l'un ou l'autre ou les 2 dans ton programme suivant que tu veux utiliser l'un ou l'autre ou les 2. Normalement tu n'a pas besoin de faire quoi que ce soit sur l'autre si tu n'utilises qu'un. Dans le doute, si tu n'en utilise qu'un, tu mets les 2 en output et tu met en HIGH celui que tu n'utilises pas.

skizoh: Bonjour,

Bon j'en ai marre de me coltiner ce problème, je galère a chaque fois avec ces histoires de CS à en croire qu'on peut pas utilisé la SD et ethernet en même temps..

Bon j'ai un arduino ethernet et je veux utilisé la SD et ethernet

bonjour perso , je n'ai jamais eu de probleme pour utiliser avec un uno la sd et ethernet (shield W5100) j'ai testé encore il y a quelques heures des "améliorations" Voir http://arduino.cc/forum/index.php/topic,104855.msg787680.html#msg787680

yesss ! :)

ça y est ça fonctionne :)

Alors double problème, premier:

Serial.begin(2400);
Serial.begin(9600);

du coup visu à 2400, donc de la merde ^^'

Second problème:

      pinMode(4, OUTPUT);
      pinMode(2, OUTPUT);//setup(){}

      digitalWrite(2,HIGH);// pour activer SD
      digitalWrite(4,LOW);


      digitalWrite(4,HIGH);// pour activer ethernet
      digitalWrite(2,LOW);

et voila comme ça tout fonctionne niquel =)

Merci barbudor =) ( je le laisse en résolu ça aidera surement ^^ )

Skizo !

Salut,

Tu n'as pas besoin de te casser la tête avec la pin CS. Si tu travaille avec l'ide arduino >=0020 la librairie ethernet et la librairie SD s'occupe en interne de prendre / libérer le bus SPI.

En ajoutant des CS low, CS high en plus dans ton code tu risque plus de foutre le bordel qu'autre chose ;)

bas alors même si théoriquement ça devrai fonctionné je t'informe que non ^^ Les deux en utilisation normale, même avec des stop et des begin avant chaque utilisation ça ne suffi pas.. :s

ou alors je n'y suis juste pas parvenue moi en tout k

Skizo !

skizoh: Les deux en utilisation normale, même avec des stop et des begin avant chaque utilisation ça ne suffi pas.. :s

Stop() et Begin() n'ont pas pour but de sauter d'un périphérique à un autre ! Begin() configure le hardware et le software, et doit être utilisé [u]une seul fois[/u] dans setup(). Stop() libéres les ressources utilisé par la librairie et replace le hardware dans l'état ou il etait avant begin().

Si tu fait du begin(), stop(), begin() , stop() c'est sur que ça ne marchera jamais ...

Prend par exemple ce tutoriel de ladyada : http://www.ladyada.net/learn/arduino/ethfiles.html Elle utilise sdfatlib (la librairie derrière SD.h) et la librairie ethernet. Aucun Ethernet.stop(), aucun sdcard.stop(), juste un petit digitalWrite(10, HIGH) pour éviter les problémes au setup(), et pourtant tout marche impeccablement ;)

oui j'ai getter un oeuil c'est vrai que ça a l'air simpliste pour elle, en tout k je me demande si c'est par ce qu'elle a juste utilisé le shield ethernet et pas le arduino ethernet direct mais bon, sinon ba oui c'est vrai j'ai viré les begin les stop etc ça marche toujours ^^

Merci de votre aide les mecs =)

Skizo !

skizoh: je me demande si c'est par ce qu'elle a juste utilisé le shield ethernet et pas le arduino ethernet direct mais bon, sinon ba oui c'est vrai j'ai viré les begin les stop etc ça marche toujours ^^

Arduino ethernet = Arduino uno + shield ethernet, faut pas chercher plus loin ;)

il n'y a aucun différence de pin ou autre? niveau matos ça reviens vraiment au même? O.o

Skizo !

skizoh: il n'y a aucun différence de pin ou autre? niveau matos ça reviens vraiment au même? O.o

Regarde le schéma de l'arduino ethernet ;) C'est le schéma de l'arduino uno + le schéma de la shield ethernet, -> option fusionner avec eagle, un petit coup d'auto routage pour virer les connecteurs en trop et hop arduino ethernet !

du coup je ne comprend toujours pas pourquoi tout le monde n’achète pas de arduino ethernet directe, je trouve que c'est le plus complet, SD + ethernet déjà tu es bien ^^

skizoh: du coup je ne comprend toujours pas pourquoi tout le monde n’achète pas de arduino ethernet directe, je trouve que c'est le plus complet, SD + ethernet déjà tu es bien ^^

peut être parce que cela ne fait pas si longtemps que c'est disponible ? peut être aussi que pouvoir disposer d'un shield permet d’être sur de libérer tout le pinout lorsque le shield est retiré ?

skizoh: du coup je ne comprend toujours pas pourquoi tout le monde n’achète pas de arduino ethernet directe, je trouve que c'est le plus complet, SD + ethernet déjà tu es bien

Tout le monde ne veut pas un truc complet hors de prix des le dépars ;) Souvent on commence avec une carte arduino classique, puis vient le temps ou l'on veut faire de l'ethernet, à ce moment là on prend l'ethernet shield.

Rare sont les personnes qui partent directement sur une solution "tout en un", c'est plutôt réservé aux personnes ayant un prototype carte + shield fonctionnel voulant faire un montage définitif, et allouer la carte arduino à un autre projet.

skywodd: Tout le monde ne veut pas un truc complet hors de prix des le dépars ;) Souvent on commence avec une carte arduino classique, puis vient le temps ou l'on veut faire de l'ethernet, à ce moment là on prend l'ethernet shield.

Et c'est exactement mon cas :grin: L'arduino est pour moi ludique, je suis tombé dessus(dedans) par hasard en cherchant un petit microcontroleur monté avec la tripaille, disposant de connections I/O dispo et simple d'utilisation (prog) et ce pour un cout sinon peanuts au moins tres acceptable.

C'est ensuite que j'ai decouvert les shields l'ethernet entre autre, juste "pour voir" 8)

oui oui je vois ^^ moi j'aime bien direct bidouiller des truc net :p ça c'est d'avoir travailler avec des fox + noyeau linux cette anné, le simple ne me plai plus ^^

Skizo !

le simple ne me plai plus ^^

Eh l’autre, regardez comme il fait son snob avec sa Fox

lol c'est même pas la mienne c’était a l'université ^^ mais du coup apres ça et un peut de python dessus on à plus envi de juste allumer des leds, même si tout débutant doit passé par la, combien de système de régulation de température j'ai fait sérieux..? (8 -__- en C,VHDL,C++,C,C,C et encore C..) les profs manque cruellement d'inspiration.. ^^

Skizo !