Page 1 sur 1

MCP23017 et entrées qui ne sont pas stables..

Posté : ven. 11 mars 2016 19:11
par Alain91
Bonjour,

Je bidouille un peu avec un raspberry et un mcp23017.

J'ai fais des montages en utilisant les sorties du MCP avec WiringPI et pas de soucis : une led qui clignote, un moteur pas à pas, nickel.

La ou ça se gâte c'est un niveau des entrées..

Je prends mon montage qui fonctionne bien en sortie :

Image

Je branche un bouton entre un des ports du mcp et la masse du mcp, et je compile ce programme :

Code : Tout sélectionner

//
// Test switch MCP23017
//
#include <stdio.h>
#include <wiringPi.h>
#include <mcp23017.h>


int switchPin = 4;

int main(void) {

    wiringPiSetup();
	
	// adresse port 0 ( port A.0 du mcp23017 )
	int MCPbase=100;

	// adresse I2c MCP23017 = 0x20 (32 en décimal)
	mcp23017Setup (MCPbase, 0x20) ;
	
	// Sur quelle broche faire clignoter la led
	int switchPin=0;
	
	// broche led en entrée
	pinMode (MCPbase+switchPin, INPUT) ;
	
	pullUpDnControl (MCPbase+switchPin, PUD_UP) ;
	
    for (;;) {
        printf("switch : %d\n", digitalRead(MCPbase+switchPin));
    }

    return (0);
}

Si je l’exécute, j'ai un défilé de 0, mais de temps en temps un 1 s'invite...
Si j'appuie sur le bouton, une série de 1 s'affiche mais de temps en temps un 0 apparait ?

Du coup j'ai pensé à la résistance de rappel, mais dans la doc du MCP et wiringPi, il est indiqué que le MCP à déjà cette résistance en interne ?

D'ailleurs je l'active via la ligne

Code : Tout sélectionner

   pullUpDnControl (MCPbase+switchPin, PUD_UP) ;


Auriez vous une idée pour éliminer ce problème ? Je ne vois pas trop ou est la cause ?

Merci beaucoup,
Alain

Re: MCP23017 et entrées qui ne sont pas stables..

Posté : sam. 12 mars 2016 18:25
par bruno83
i2c.png
i2c.png (57.46 Kio) Vu 1777 fois
Pour avoir utilisé l’i2c en python gpio j’ai câblé les résistances de tirage , sans utiliser celles en internes ça marche bien ,ne pas oublier de configurer l’i2c dans la config système.
oups :oops: je viens de me rendre compte que l'i2c n'est pas pour le pi
si non en tor je n'ai jamais eu de soucis et avec la résistance de tirage n'ont plus mais en pithon avec librairie gpio


A+bruno

Re: MCP23017 et entrées qui ne sont pas stables..

Posté : sam. 25 juin 2016 10:29
par omg
Bonjour Alain et Bruno,

J'ai également le même problème.
MCP23017 configuré en input
A0 A1 A2 sur GND
Reset sur 3.3
VSS et VDD sur 3.3 et GND
Les deux ports i2c branché sur le Raspberry.

Quand je regarde ce que j'ai sur les 16 entrées du MCP je me retrouve avec des choses aléatoires...
Je ne comprends pas...

Re: MCP23017 et entrées qui ne sont pas stables..

Posté : sam. 25 juin 2016 11:18
par omg
Bon... au final voilà ce que j'ai compris.

Si l'on souhaite utiliserl'entrée A0 avec un bouton poussoir voilà comment procéder :

De base l'entrée doit être mise sur une résistance 1K elle même reliée à la masse.
Ceci mettra l'entrée à l'état 1
Si l'on met un contact entre A0 et 3.3V via un bouton poussoir, l'état passera à 0.

Voilà. Un poil déçu car ce n'est pas le même fonctionnement que sur raspberry.

Re: MCP23017 et entrées qui ne sont pas stables..

Posté : sam. 25 juin 2016 11:46
par guillaume9344
Bonjour, pour l inversion des ports, voir la section 1.6.2 le registr ipol gere la polarité des ports, un 1dans ce registre inverse la donnee corespondante .