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 :
Je branche un bouton entre un des ports du mcp et la masse du mcp, et je compile ce programme :
Code:// // 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: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
-----