IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Union ou quoi ?


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Par défaut Union ou quoi ?
    Bonsoir à tous,
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    extern volatile near unsigned char       ADCON1;
    extern volatile near struct {
      unsigned PCFG0:1;
      unsigned PCFG1:1;
      unsigned PCFG2:1;
      unsigned PCFG3:1;
      unsigned VCFG0:1;
      unsigned VCFG1:1;
    } ADCON1bits;
    extern volatile near unsigned char       ADCON0;
    extern volatile near union {
      struct {
        unsigned ADON:1;
        unsigned GO:1;
        unsigned CHS0:1;
        unsigned CHS1:1;
        unsigned CHS2:1;
        unsigned CHS3:1;
      };
      struct {
        unsigned :1;
        unsigned DONE:1;
      };
      struct {
        unsigned :1;
        unsigned NOT_DONE:1;
      };
      struct {
        unsigned :1;
        unsigned GO_DONE:1;
      };
    } ADCON0bits;
    extern volatile near unsigned            ADRES;
    extern volatile near unsigned char       ADRESL;
    extern volatile near unsigned char       ADRESH;
    extern volatile near unsigned char       SSPCON2;
    extern volatile near struct {
      unsigned SEN:1;
      unsigned RSEN:1;
      unsigned PEN:1;
      unsigned RCEN:1;
      unsigned ACKEN:1;
      unsigned ACKDT:1;
      unsigned ACKSTAT:1;
      unsigned GCEN:1;
    } SSPCON2bits;
    Pouvez-vous me dire quels sont les types de ADRES, ADRESH et ADRESL s'il-vous-plaît?
    Je n'ai pas trouvé d'explications dans le tutoriel de B. Cassagne.
    Merci à vous.
    __W__

  2. #2
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    Salut,
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    extern volatile near unsigned            ADRES;
    extern volatile near unsigned char       ADRESL;
    extern volatile near unsigned char       ADRESH;
    Le mot clé extern veut dire que ce composant sera défini ailleurs, volatile qu'il est susceptible d'être modifié par une source indépendante du programme, le near ne me dit rien. ADRESL et ADRESH semblent être des unsigned char et donc des octets non signés, en ce qui concerne ADRES, je ne sais pas trop car seul unsigned est spécifié ce qui est plûtot bizarre.

  3. #3
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    je n'ai pas trouvé "near" dans la norme C99.

    Citation Envoyé par AL1986
    des unsigned char et donc des octets non signés
    s/octets/bytes

    en ce qui concerne ADRES, je ne sais pas trop car seul unsigned est spécifié ce qui est plûtot bizarre.
    c'est un unsigned int, il me semble que dans le cas d'unsigned, le mot clef int est facultatif

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    c'est un unsigned int, il me semble que dans le cas d'unsigned, le mot clef int est facultatif
    Oui, cf. http://www.allprog.com/CPlusPlus/Unsigned.htm

    Le modificateur unsigned peut être appliqué aux types de base char, short, int et long.
    Lorsque le type de base est omis d'une déclaration, int est utilisé par défaut.
    Tu retrouves near dans une présentation de la compilation C pour PIC (http://www.aix-mrs.iufm.fr/formation...0C18%20v13.pdf)

    near place la variable dans la mémoire programme avec des adresses inférieures à 64 Ko dans la rom et dans access memory dans la ram.

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bibilolo2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    extern volatile near unsigned            ADRES;
    extern volatile near unsigned char       ADRESL;
    extern volatile near unsigned char       ADRESH;
    Pouvez-vous me dire quels sont les types de ADRES, ADRESH et ADRESL
    Respectivement :
    • unsigned int
    • unsigned char
    • unsigned char

    Le qualificateur volatile n'a aucun sens ici. Quand à 'near', il n'a d'intérêt que sur une architecture intel x86 mode réel (et encore, dans certains cas uniquement).

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Respectivement :
    • unsigned int
    • unsigned char
    • unsigned char

    Le qualificateur volatile n'a aucun sens ici.
    Tu peux expliquer pourquoi? Personnellement je verrais bien utiliser des moyens specifiques a l'implementation pour que les variables correspondes a des registres d'IO mappes en memoire.

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Tu peux expliquer pourquoi? Personnellement je verrais bien utiliser des moyens specifiques a l'implementation pour que les variables correspondes a des registres d'IO mappes en memoire.
    Ce seraient des pointeurs... Vu le peu d'informations dont on dispose, on ne peut pas extrapoler plus...

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Ce seraient des pointeurs...
    Ce n'est pas clair pour moi. On peut avoir aussi bien un pointeur vers un type volatile qui est initialise a l'adresse ou une variable globale d'un type volatile et utiliser l'editeur de liens pour la placer au bon endroit.

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Par défaut
    Merci pour vos réponses!
    J'ai extrait les lignes ci-dessus du fichier en-tête de la bibliothèque du compilateur de Microchip.

    near est un mot clé utilisé par le compilateur de Microchip pour définir qu'une variable dans la mémoire de données vive en mémoire RAM ou, qu'une variable ou un pointeur dans la mémoire programme est situé à une adresse inférieur à 64K de l'espace mémoire.

    ADRESH et ADRESL correspondent à des registres stockant les résultats "haut" et bas d'une conversion analogique sur microcontrôleur PIC18F2520.

    volatile doit être mentionné pour des variables globales qui sont accessibles par une fonction et une interruption.
    volatile sert à dire que le port de communication ne maintiendra pas la valeur qu'on lui a attribué.

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bibilolo2
    volatile doit être mentionné pour des variables globales qui sont accessibles par une fonction et une interruption.
    Ah oui, j'avais oublié ce cas là...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. A quoi sert union ?
    Par Mindiell dans le forum C++
    Réponses: 16
    Dernier message: 31/01/2007, 22h27
  2. Réponses: 3
    Dernier message: 10/11/2002, 11h03
  3. Quoi ?! Common Dialog fait crasher DirectDraw ?
    Par Magus (Dave) dans le forum DirectX
    Réponses: 4
    Dernier message: 21/10/2002, 19h01
  4. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23
  5. C'est quoi exactement un générateur d'états
    Par Henry Cesbron Lavau dans le forum Outils de restitution et d'analyse
    Réponses: 0
    Dernier message: 02/04/2002, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo