Pages: 1 2 [3]   Go Down
Author Topic: [RESOLU] lire état d'une sortie digitale  (Read 3209 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 12
Posts: 915
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

héhé, merci al1fch, problème réglé donc.

Je vais dormir moins c** ce soir...  smiley-mr-green smiley-mr-green
« Last Edit: January 29, 2013, 11:44:14 am by john_lenfr » Logged

Offline Offline
Faraday Member
**
Karma: 34
Posts: 5092
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-mr-green
Logged

Offline Offline
God Member
*****
Karma: 12
Posts: 915
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui, j'ai appris pas mal de choses avec ce post.
Je passe donc en [RESOLU] !
 smiley-mr-green
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3656
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-mr-green

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 ... smiley-lol

http://jeelabs.org/2010/01/06/pin-io-performance/
http://www.instructables.com/id/Arduino-is-Slow-and-how-to-fix-it/step3/Exspearimintation/
« Last Edit: January 30, 2013, 05:30:34 am by B@tto » Logged


France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ... smiley-lol
Même sans toucher aux registres il est possible d'accélérer les choses de manière significative avec la librairie "digitalWriteFast" smiley-wink
http://code.google.com/p/digitalwritefast/
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: 1 2 [3]   Go Up
Jump to: