Bonjour a tous!
Tout d'abord merci de me repondre si vous le faite.
Alors voila mon probleme (je vais essayer d'etre le plus clair possible), je sais bien ce qu'est un #include mais le reste me parait quelque peu mysterieux.
D'apres ce que j'ai compris il sagit des definitions des adresse des registre du µC mais je sui scurieux de savoir ce que fait au final la derniere ligne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
BASE_PIO_LED->PIO_OER = (LED_A | LED_B);
pouvez vous m'expliquer par ordre cronologique ce qui se passe svp?

Je dois aussi avouer que je ne saisi pas non plus ces lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
#define PIO_OER         (AT91_CAST(AT91_REG *) 	0x00000010)
#define AT91C_BASE_PIOA	(AT91_CAST(AT91PS_PIO) 0xFFFFF400)
Pour les AT91 CAST et REG * et les 0x... je ne m'y retrouve plus pourriez vous me dire ce qui se passe pour chacune des variables. (je sais tout de meme que le 0x... est un nombre hexa mais avec les * reg parentheses etc je ne m'y retrouve pas, en fait un define tout simple je comprend bien mais des tortueux comme ceux que je vous propose je suis perdu)

Pour cette ligne il me faudrai juste la confirmation que la variable vaut 1 décalé de 0 donc 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
#define AT91C_PIO_PA0	(1 <<  0)



/**Dans fichier AT91SAM7S64.h**/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef __ASSEMBLY__
typedef volatile unsigned int AT91_REG;// Hardware register definition
#define AT91_CAST(a) (a)
#else
#define AT91_CAST(a)
#endif
 
#ifndef __ASSEMBLY__
typedef struct _AT91S_PIO {
	...
	...
	...
	AT91_REG	PIO_OER;	// Output Enable Register
	...
	...
} AT91S_PIO, *AT91PS_PIO;
#else
#define ...
#define ...
#define ...
#define PIO_OER         (AT91_CAST(AT91_REG *) 	0x00000010) // (PIO_OER) Output Enable Register
#define ...
#define ...
#endif
 
#define AT91C_PIOA_PER	(AT91_CAST(AT91_REG *) 0xFFFFF400) //(PIOA) PIO Enable Register
 
 
#define AT91C_PIO_PA0	(1 <<  0)	//Pin Controlled by PA0
#define AT91C_PIO_PA1	(1 <<  1)	//Pin Controlled by PA1
#define AT91C_BASE_PIOA	(AT91_CAST(AT91PS_PIO) 0xFFFFF400) //(PIOA) Base Address

/**Dans fichier AT91SAM7S-EK.h**/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#include "AT91SAM7S64.h"
 
#define AT91B_LED1          AT91C_PIO_PA0
#define AT91B_LED2          AT91C_PIO_PA1
#define AT91D_BASE_PIO_LED  AT91C_BASE_PIOA

/**Dans fichier main.c**/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
#include "AT91SAM7S-EK.h"
#include "AT91SAM7S64.h"
 
#define LED_A          AT91B_LED1
#define LED_B          AT91B_LED2
#define BASE_PIO_LED   AT91D_BASE_PIO_LED
 
BASE_PIO_LED->PIO_OER = (LED_A | LED_B);
Merci beaucoup à tous.
Tibo