Go Down

Topic: SPI : comment faire cohabiter 2 modules ? (Read 5880 times) previous topic - next topic

hatoupix

Bonjour à tous,

Je tente de faire fonctionner 2 "modules" communiquant en SPI sur mon NANO ...

indépendamment, les 2 fonctionnent très bien ! mais une fois ensemble "ca veut plus" 8)


J'ai lu ici ou la qu'il fallait utiliser le mode slave/master ... mais je n'y ai rien compris ! :smiley-cry:


mes modules sont ILI9340 et un MS5541


Merci pour vos aides !

icare

Bonjour,
As-tu bien un chip select différent pour chaque module ?
@+
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

hatoupix

Bonjour,
As-tu bien un chip select différent pour chaque module ?
@+
...je vais passer pour un super débutant (pas completement faux d'ailleur  :(  ) :
sur le ILI9340 : oui
sur le MS5541 : pas besoin (d'apres les docs ...)

mais je sais pas comment faire pour les "adresser" ou pour "activer" le chip select ... :smiley-confuse:

Artouste

...je vais passer pour un super débutant (pas completement faux d'ailleur  :(  ) :
sur le ILI9340 : oui
sur le MS5541 : pas besoin (d'apres les docs ...)

mais je sais pas comment faire pour les "adresser" ou pour "activer" le chip select ... :smiley-confuse:

bonjour
ça aurait été trop simple :smiley-mr-green:
mets tes 2 codes

hatoupix

Code: [Select]

#include <MS5541.h>
MS5541 PressSensor;
float airPressure;
float waterPressure;

...

PressSensor.update();
Serial.println(PressSensor.get2ndTemperatureC());
...


et pour l'écran
#include <ILI9341_due_gText.h>
#include <ILI9341_due.h>

#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST 8

ILI9341_due tft(TFT_CS, TFT_DC, TFT_RST);
ILI9341_due_gText txt(&tft);

...
  tft.begin();
  tft.fillScreen(COULEUR_FOND);
txt.drawString("test", 20, 10);
...

Artouste

#5
Feb 16, 2015, 01:47 pm Last Edit: Feb 16, 2015, 01:56 pm by Artouste
Code: [Select]

#include <MS5541.h>
MS5541 PressSensor;
float airPressure;
float waterPressure;

...

PressSensor.update();
Serial.println(PressSensor.get2ndTemperatureC());
...


et pour l'écran
#include <ILI9341_due_gText.h>
#include <ILI9341_due.h>

#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST 8

ILI9341_due tft(TFT_CS, TFT_DC, TFT_RST);
ILI9341_due_gText txt(&tft);

...
  tft.begin();
  tft.fillScreen(COULEUR_FOND);
txt.drawString("test", 20, 10);
...

Sans garantie
mais a essayer
normalement CS est actif à LOW
lorsque tu accede à ton 5541 , essaye prealablement de mettre TFT_CS à HIGH
et remet le à LOW en sortie d'appel au5541

hatoupix

Sans garantie
mais a essayer
normalement CS est actif à LOW
lorsque tu accede à ton 5541 , essaye prealablement de mettre TFT_CS à HIGH
et remet le à LOW en sortie d'appel au5541

Ca ne donne rien ...

Artouste

Ca ne donne rien ...
Par acquis de conscience tu a tenté l'inverse :  active HIGH au lieu de LOW ?
si ça ne fonctionne toujours pas
voir pour passer le compo le plus lent sur su SPI soft
ou utiliser des mux/demux analogiques sur les lignes SPI.

hatoupix

Par acquis de conscience tu a tenté l'inverse :  active HIGH au lieu de LOW ?
si ça ne fonctionne toujours pas
voir pour passer le compo le plus lent sur su SPI soft
ou utiliser des mux/demux analogiques sur les lignes SPI.
J'avais bien essayé l'inversion .... mais rien de plus !

je ne comprends pas : "voir pour passer le compo le plus lent sur su SPI soft"  :o

et si je peux éviter les multiplexeurs ca m'arrangerais car la où est prévu mon montage j'ai extrement peu de place ...

Merci !

Artouste

J'avais bien essayé l'inversion .... mais rien de plus !

je ne comprends pas : "voir pour passer le compo le plus lent sur su SPI soft"  :o

et si je peux éviter les multiplexeurs ca m'arrangerais car la où est prévu mon montage j'ai extrement peu de place ...

Merci !
Quand tu expose ça ne "marche" pas qu'est ce qui ne fonctionne pas/plus ?
ça se traduit comment pour toi ?

ton affichage est rafraichi mais tu n'obtient pas de valeur du 5541 ?
ou tu bloque directement  ton programme ?

utiliser une lib SPI soft pour le MS5541  ça implique de la consommation de pin
ou (idée rapide un peu brutale 8) ) gerer l'alim du 5541

derder9161

Un transistor entre le VCC et ton module SPI pour commander sa tension ;)

hatoupix

Un transistor entre le VCC et ton module SPI pour commander sa tension ;)
tu aurais un montage ?  :smiley-red: 

pour info j'utilise déja un 4060 pour alimenter mes SPI

merci !

hatoupix

#12
Feb 16, 2015, 09:15 pm Last Edit: Feb 16, 2015, 09:16 pm by hatoupix
Quand tu expose ça ne "marche" pas qu'est ce qui ne fonctionne pas/plus ?
ça se traduit comment pour toi ?
--> il n'y a plus rien à l'écran, comme si il y avait des "perturbations" dessus ...

Quote
ton affichage est rafraichi mais tu n'obtient pas de valeur du 5541 ?
ou tu bloque directement  ton programme ?
rien de débloque au niveau du programme mais rien ne fonctionne non plus (pas de données de mon capteur)

Quote
utiliser une lib SPI soft pour le MS5541  ça implique de la consommation de pin
ou (idée rapide un peu brutale 8) ) gerer l'alim du 5541
... avec le trastistor indiqué dans le post précédent  ?

Artouste

--> il n'y a plus rien à l'écran, comme si il y avait des "perturbations" dessus ...
rien de débloque au niveau du programme mais rien ne fonctionne non plus (pas de données de mon capteur)

... avec le trastistor indiqué dans le post précédent  ?
Tu a un oscilloscope ?


Go Up