Bonsoir tout le monde
Je cherche à passer TRISCbits.TRISC2 en paramètre d’une de mes fonctions.
microprocesseur.h :
typedef union {
struct {
unsigned TRISC0 :1;
unsigned TRISC1 :1;
unsigned TRISC2 :1;
};
} TRISCbits_t;
extern volatile TRISCbits_t TRISCbits @ 0x014;
Ce morceau de code aligne donc 3 bits TRISC0 TRISC1 TRISC2 sur le registre 0x14 du microprocesseur.
Ce que j’aimerais faire :
user.c :
static void pwm5Init(volatile unsigned __bit* trisBit){
*trisBit = 0;
}
Je voudrais passer le bit TRISC2 en paramètre : pwm5Init(&TRISCbits.TRISC2)
Et ce, de manière à ce que ma fonction pwm5Init ne modifie non pas une copie locale du bit (portée=fonction), mais bien le bit à l’adresse 0x14+3bits.
Mais ce n’est pas possible de pointer un bit par une adresse (la plus petite unité pointable est un char).
D’où ma question : Que feriez-vous à ma place ? / Quelles sont les bonnes pratiques dans le domaine ?
Edit: Ce qui m’arrange c’est aussi de me retrouver avec le moins de #define
possible dans mon user.h.
Pour l’instant, j’ai #define maLED TRISCbits.TRISC2
et donc mon initialisation appellerait pwm5Init(maLED)