[Micro] Problème pin 12

Bonjour bonjour,

Petit souci, petite question que je me permets de vous soumettre. Je viens récupérer dans un "buffer" des données stockées sur plusieurs bit qui correspondent à la distance en mm d'une roue codeuse . Jusque là pas de problème !
J'ai défini mes ports I/O :

#define PIN_D0 4
#define PIN_D1 5
#define PIN_D2 6
#define PIN_D3 7
#define PIN_D4 8 
#define PIN_D5 9
#define PIN_D6 10
#define PIN_D7 11
#define PIN_RSTNX A4
#define PIN_RSTNY A5
#define PIN_OE A0
#define PIN_SEL1 A1
#define PIN_SEL2 A2

Jusque là tout va bien, et je mesure correctement ce que je souhaite mesurer à savoir pour un tour de roue :

Note : ED = encodeur droit, et EG encodeur gauche.

Le problème est que je dois libérer absolument (et c'est la seul que je puisse changer) la pin 11 (car PWM) pour un autre besoin.
=> Pas de soucis il y a la PIN 12 disponible sur la carte arduino micro ..
Me voilà qui fait ma petite bidouille pour changer mon cablage et inverser electriquement ma pin 12 et ma pin 11, et fais ensuite la modif dans le code (rien de sorcier à priori) :

#define PIN_D0 4
#define PIN_D1 5
#define PIN_D2 6
#define PIN_D3 7
#define PIN_D4 8 
#define PIN_D5 9
#define PIN_D6 10
#define PIN_D7 12
#define PIN_RSTNX A4
#define PIN_RSTNY A5
#define PIN_OE A0
#define PIN_SEL1 A1
#define PIN_SEL2 A2

Et là surprise ... ca marche pas (valeurs mesurées complètement à l'ouest, le D7 étant le pin le plus "lourd"). Pour autant le reste de mon code est identique. Alors la question que je me pose est : Y-a-t-il une particularité sur la PIN 12 ??? (A part qu'elle se trouve tout en bas x) )

Des idées sur ce que j'aurai pu louper ? :s

PS : Si ca vous intéresse, on utilise ici un HTCL2032 cadensé avec un quartz à 32MHz, très utile pour éviter des traitements important à notre petite arduino. Le code source est en PJ.

[OEZ]Mesure en mm des encodeurs.txt (5.76 KB)

Bonjour,

pierre-guillon:
Et là surprise ... ca marche pas (valeurs mesurées complètement à l'ouest, le D7 étant le pin le plus "lourd"). Pour autant le reste de mon code est identique. Alors la question que je me pose est : Y-a-t-il une particularité sur la PIN 12 ??? (A part qu'elle se trouve tout en bas x) )

Ouaip, c'est normal, mais ce n'est pas lié à une particularité de la broche 12 :slight_smile:

Ce bout de code par exemple :

for( i = PIN_D7 ; i > PIN_D0 -1 ; i-- )
	{
		data += digitalRead ( i ) ;
		data = data << 1;
	}

présuppose que les numéros de broches se suivent. Lorsque PIN_D7 vaut 11, la boucle tourne 8 fois «à l'envers» en partant de 11 jusqu'à 4. Mais après la modif, lorsque PIN_D7 vaut 12, la boucle tourne 9 fois en partant de 12 jusqu'à 4...

Il va falloir que tu revoie ta façon de boucler sur les différentes broches pour que ça fonctionne normalement (en les mettant dans un tableau par exemple).

Oh bah oui ! Merci d'avoir pris le temps de jeter un coup d'oeil la dessus ! J'avais zappé complet cette partie là !