[C embarqué] Membre de struct comme argument d'une fonction

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 ? :slight_smile: / 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)

Personne ? :sweat_smile:


Je viens d’ouvrir la question sur StackOverflow du coup

Résolue sur StackOverflow :wink: