[RESOLU] lire état d'une sortie digitale

Artouste:

al1fch:
la valeur 32, par rapport à 60 donne une impression de simplicité parce que le code testé par Artouste ne manipule qu'une seule sortie. En cas de manipulation de plusieurs sorties sur le même port on se retrouve , comme pour une lecture de PIN, avec la necessité d'isoler la valeur d'un bit particulier dans un octet. ça se fait par 'masquage' (opération de ET logique) sans modifier quoi que ce soit sur les broches..

0b00111100 '60' sur les broches
0b00100000 ET '32' (c'est le masque désignant le bit que l'on veut interroger)
0b00100000 = 32

De toutes façon Arduino accepte finalement le digitalRead sur une sortie, ça sera donc plus simple et plus direct !
C'est Arduino qui s'occupera de lire le registre PIN et faire le bon masque ! (-> source dans /hardware/arduino/cores/arduino/wiring_digital.c)

Quelquefois ce n'est pas desagreable de reflechir même si c'est pour finalement découvrir voir que la roue avait déjà été inventée :grin:

Oué mais des fois aussi c'est pas mal parce que utiliser le langage Arduino est bien plus lent que de jouer directement avec les registres. Et c'est particulierement vrai pour les digitalRead() et digitalWrite(). Perso je passe jamais par les registres parce que je n'ai jamais été confronté à des problème de timing, mais un jour peut-être ... XD

http://jeelabs.org/2010/01/06/pin-io-performance/