Go Down

Topic: Probleme PCF8574 pour clavier et matrice led en i2c (Read 1 time) previous topic - next topic

68tjs

Quote
j'ai un sur 0x20 et l'autre sur 0xA0

N'y aurait-il pas une erreur avec 0xA0?

L'adresse d'un PCF8574 est formée d'un code de famille sur 4 bits et d'une adresse sur 3 bits. A ces 7 bits la bibliothèque Wire ajoute un 8eme bit pour indiquer un sens de lecture ou d'écriture.

La datasheet du PCF8574 indique que la famille peut-être soit 0100 soit 0111 selon le modèle A ou B
0x20 -> 0b00100000  ---> en décomposant 0 0100 000   --> correct
0xA0 -> 0b10100000  ---> en décomposant 1 0100 000   --> incorrect
L'adresse 0xA0 n'est pas correcte : le 1er bit doit être 0 (il est géré par Wire) et 'adresse "000" existe déjà. Il faut  modifier un des bits A0,A1 ou A2

Pour vérifier les adresses teste avec un scanner I2C.
Tu as celui là :
http://playground.arduino.cc/Main/I2cScanner
Fdunews en a proposé un autre bien plus clair mais  je n'arrive pas à le retrouver.


F5MTZ

c'est avec justement i2c scanner que je les ai trouvé

par contre une autre petite question :

j'ai un mot de 7 bits et j'ai besoin d'extraire les 4 bits de poids fort et les 3 derniers de poids faibles

une idée ?

merci

f1apy

Bonjour f5mtz,

un masque et un and avec ton mot 7 bits est la solution,
eg: mot = 0101011
mask1 = 0000111
mask2 = 1111000
mot and mask1 = 0000011
mot and mask2 = 0101000
pour le mask2 si tu veux retouver tes 4 bits de poids fort comme cela: 0000101,
tu n'a même pas besoin de faire un and, mais simplement un decalage à droite,
donc : mot =(mot >> 3) et tu décales ton mot de 3 bits vers la droite et récupères 0000101
j'éspère que mes explications ne sont pas trop confuses  :smiley-mr-green:
73's de Jacques - f1apy

68tjs

Quote
c'est avec justement i2c scanner que je les ai trouvé

C'est dur de donner des renseignements exploitable !!

Référence de ton "scanner" avec le code .
Il se pourrait que tu ais obtenu les adresses en écriture et en lecture du même PCF et que l'autre soit "invisible".

Avec ce que tu donnes comme renseignement s   on ne trouve qu'une seule adresse = "000".
Tu aurais pu nous dire quelles adresses tu as mis câblé physiquement sur chaque PCF.

F5MTZ

Alors pour vous repondre, oui j'ai trouvé d'ou venait le probleme.
je mettais bien mes 2 pins à la masse mais je laissais l'autre "en l'air" au lieu de la polariser au +5v
Donc méa culpa sur ce coup là.
Erreur de jeunesse hi ;)

Merci en tout cas pour vos infos sur la manip des "bits" dans tout les sens.

Go Up