Pages: [1]   Go Down
Author Topic: 0x01<<PINB0 ? A quoi ça correspond ?  (Read 673 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour ,

Dans le bout de code suivant l'on declare les PINs de l'arduino , mais j'aimerais avoir plus détails sur le fonctionnement de ce code.
A quoi correspond "0x01" et PINB0 , PIND4 , PINC3 etc...qu'elle sont ces PINs ? pourquoi les déclarer de cette façon ?

Merci

Code:
#define Fil_A_A1 (0x01<<PINB0)
#define Fil_A_A2 (0x01<<PINB1)
#define Fil_A_B1 (0x01<<PINB2)
#define Fil_A_B2 (0x01<<PINB3)

#define Fil_B_A1 (0x01<<PIND4)
#define Fil_B_A2 (0x01<<PIND5)
#define Fil_B_B1 (0x01<<PIND6)
#define Fil_B_B2 (0x01<<PIND7)

#define Fil_C_A1 (0x01<<PINC0)
#define Fil_C_A2 (0x01<<PINC1)
#define Fil_C_B1 (0x01<<PINC2)
#define Fil_C_B2 (0x01<<PINC3)
Logged

DiyFr
Passionné de nouvelles technologies et constructions en tout genre, ce blog m'offre la possibilité de mett

france
Offline Offline
God Member
*****
Karma: 15
Posts: 879
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est du bitwise : http://skyduino.wordpress.com/2013/04/05/tuto-le-bitwise-pour-les-nuls/

0x01  vaut en binaire  0000 0001
L'opérateur >> (Shift right) décale les bits vers la droite
par exemple  0110 0101>> 4 retourne 0000 0110

L'oppérateur << (Shift left) décale les bits vers la gauche
par exemple  0110 0101 << 4 retourne 0101 0000

#define Fil_A_B1    (0x01<<PINB2)
avec par exemple  PINB2 = 4

0x01 << 4 vaut 0000 0001 << 4 et retourne 0001 0000

Sans le reste du code c'est difficile de savoir à quoi ça va servir.
Logged

Christian

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

PINB0 etc .... Ce sont des masques pour manipuler les registres (enfin pas sur à 100% vu que je code pas en dur chez Atmel)
Logged


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

Bonjour ,

Dans le bout de code suivant l'on declare les PINs de l'arduino , mais j'aimerais avoir plus détails sur le fonctionnement de ce code.
A quoi correspond "0x01" et PINB0 , PIND4 , PINC3 etc...qu'elle sont ces PINs ? pourquoi les déclarer de cette façon ?
0x01 = valeur 1 en notation hexadécimal

PINB0, PIND4 , PINC3, ... = équivaut à des numéro de broche et de port du microcontrôleur
PINB0 = 0
PINB1 = 1
PINB2 = 2
PINB3 = 4
...
C'est juste des mémo pour faire de la manipulation de port direct.
(personnellement je trouve ces mémo inutiles mais bon ...)

Dans tout les cas je ne vois pas pourquoi tu part dans l'exploration de code d'un niveau déjà relativement élevé (et bas niveau) sans connaitre les bases tel que l'hexadécimal smiley-wink

Edit :
Grosse remarque à noter : ceci n'est pas vraiment du domaine de l'Arduino mais du domaine de la programmation AVR "de base".
Logged

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

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2274
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
ceci n'est pas vraiment du domaine de l'Arduino mais du domaine de la programmation AVR "de base"
C'est pas interdit ?  smiley-mr-green smiley-mr-green
Logged

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

C'est pas interdit ?  smiley-mr-green smiley-mr-green
Quoi ? La prog Arduino ou la prog AVR ?
smiley-mr-green
Logged

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

france
Offline Offline
God Member
*****
Karma: 15
Posts: 879
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

tu part dans l'exploration de code d'un niveau déjà relativement élevé (et bas niveau)
Il faut avoir un haut niveau pour programmer en bas niveau.
c'est de la logique d'informaticien smiley-mr-green
Logged

Christian

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

tu part dans l'exploration de code d'un niveau déjà relativement élevé (et bas niveau)
Il faut avoir un haut niveau pour programmer en bas niveau.
c'est de la logique d'informaticien smiley-mr-green
La vie est une perpétuelle contradiction, et comme l'informatique c'est la vie ... CQFD smiley-cool
Logged

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

Pages: [1]   Go Up
Jump to: