1 sortie MISO / MOSI avec plusieurs peripheriques ?

Bonsoir,

je souhaite afficher de la température et enregistrer en meme temps sur une carte SD.

Or, le LCD ET le lecteur de carte utilisent les sorties MISO/MOSI de l'arduino, comment faire pour que les deux utilisent les memes pin ?

les divers 'périphériques' SPI sont tous câblés sur la même groupe MISO MOSI SCLK, la sélection de l'un d'entre eux (un seul à la fois, chacun son tour) se fait par une broche de sélection individuelle.

C'est par exemple le cas du shield Ethernet ou l'embase SD et la puce W5100 sont sur le bus SPI. On active pin10 quand on s'adresse à la puce Ethernet ou pin 4 quand on s'adresse à la carte SD

al1fch:
les divers 'périphériques' SPI sont tous câblés sur la même paire MISO MOSI, la sélection de l'un d'entre eux (un seul à la fois, chacun son tour) se fait par une broche de sélection individuelle.

C'est par exemple le cas du shield Ethernet ou l'embase SD et la puce W5100 sont sur le bus SPI. On active pin10 quand on s'adresse à la puce Ethernet ou pin 4 quand on s'adresse à la carte SD

Et ou se trouve cette broche ?

côté Arduino : là ou tu veux, sur toute sortie numérique disponible, il suffit de l'indiquer dans le soft.
il faut donc gérer l'état de cette pin (en général la mettre à 0 = état actif, puis s'adresser au périphérique concerné et enfin la remettre à 1 pour désactiver ce périphérique et s'adresser à un autre sur le bus)

côté périphériques : chacun a une broche d'entrée sélection imposée (appelée CS ou SS)
Sur une carte SD c'est la broche 1

al1fch:
côté Arduino : là ou tu veux, sur toute sortie numérique disponible, il suffit de l'indiquer dans le soft.
il faut donc gérer l'état de cette pin (en général la mettre à 0 = état actif, puis s'adresser au périphérique concerné et enfin la remettre à 1 pour désactiver ce périphérique et s'adresser à un autre sur le bus)

côté périphériques : chacun a une broche d'entrée sélection imposée (appelée CS ou SS)
Sur une carte SD c'est la broche 1

Ok, donc rien de physique à effectuer sur l'arduino.

Juste dans le soft :

  1. recup de valeurs de température

  2. ouverture de la pin du LCD

  3. affichage sur LCD

  4. fermeture de la pin du LCD

  5. ouverture de la pin de la carte sd

  6. ecriture de la valeur sur la carte

  7. fermeture de la pin de la carte.

8 retour au debut.

Ok, donc rien de physique à effectuer sur l'arduino.

juste à cabler les deux CS sur les pins Arduino choisies et en suite manipuler les pins (haut/bas) pour produire les ouvertures/fermetures LCD ou carte SD

al1fch:

Ok, donc rien de physique à effectuer sur l'arduino.

juste à cabler les deux CS sur les pins Arduino choisies et en suite manipuler les pins (haut/bas) pour produire les ouvertures/fermetures LCD ou carte SD

Sue la plaque d'essai, j'enfiche les ports miso/mosi sur la meme colonne pour la carte sd et l'ecran lcd ?

Oui : les MOSI reliées, les MISO reliées , les SCLK reliées

Bon, testé ce matin, et l'affichage affiche des lignes de caracteres.

qu'appelle t'on gesrer les PIN ? ouverture, fermeture ? une ligne dans le programme ?

Un exemple à me donner ?

Merci

Bingo !!
je découvre à l'instant ton message du forum 'Display' sur le même sujet.
http://arduino.cc/forum/index.php/topic,137071.0.html
Si la question initiale avait été posée comme celà je n'aurai pas fait tout ce baratin sur l'association de périphériques SPI multiples !!!! :blush:

J'aurai répondu : cabler l'entrée CS de la carte SD à une sortie Arduino réservée exclusivement à cette fonction.
(la carte SD ne s'intéresse à MISO et MOSI et SCLK que quand on la sélectionne, le reste du temps elle est comme 'isolée' du bus SPI)
De la même manière il faudrait que E (Enable) du LCD vienne d'une pin Arduino non partagée avec un autre composant.

Le conflit constaté provient très probablement d'un choix de câblage à revoir. (double usage de la pin 4 ?)
Je reprend le câblage LCD de ton programme 'Température sur LCD' :

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Il ne devrait plus y avoir de conflit si le CS de la carte SD est piloté par la pin 10 disponible(et non la pin 4 qui sert déjà):

const int chipSelect = 10;

j'ai changé la pin 4 du lcd, basculée sur la pin 6, l'ecran fonctionne.

Par contre, j'alimente ma carte sd et l'alime part de la carte sd vers la plaque d'essai. Alimenter la carte sd à partir de la plaque d'essai ne marche pas...

Etrange. Voila la carte que j'utilise : http://dx.com/p/sd-card-reading-writing-module-for-arduino-deep-blue-142121

laurentjeuxlille:
j'ai changé la pin 4 du lcd, basculée sur la pin 6, l'ecran fonctionne.

Par contre, j'alimente ma carte sd et l'alime part de la carte sd vers la plaque d'essai. Alimenter la carte sd à partir de la plaque d'essai ne marche pas...

Etrange. Voila la carte que j'utilise : http://dx.com/p/sd-card-reading-writing-module-for-arduino-deep-blue-142121

Finalement, j'ai changé le cabalge du LCD, acces à la carte ok et affichage ok... le LCD ne doit donc pas avoir besoin de miso/mosi...

Prochaine etape, ecriture des données sur la carte...