[Programmation] Impossible de déclarer mes entrées. erreur 196 "struct/union required" [Résolu]
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Impossible de déclarer mes entrées. erreur 196 "struct/union required" [Résolu]



  1. #1
    wyssflorian

    Question Impossible de déclarer mes entrées. erreur 196 "struct/union required" [Résolu]


    ------

    Bonjour et merci de me lire,

    Je suis en train de programmer un PIC18f4523 pour mon travail de fin d'études et j'ai pour objectif de faire un système d'acquisition de mesures de deux capteurs angulaires et d'un capteur de force.

    Hors je n'arrive pas à faire fonctionner mes entrées/sorties digitales, ma déclarations "#define LED LATB.LATB1" ne fonctionnent pas (j'ai aussi essayé avec PORTB.RB1, etc ...).

    voici mon code:

    Code:
     
    #include <xc.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    #include "capteurs.h"
    
    /* Cet header contient la déclaration suivante:
    #define LED LATB.LATB1
    */
    
    // là y a mes interruptions hautes et basses
    
    void hardwareInitialise(){
            
        // Configure le micro contrôleur pour 32MHz:
        OSCCONbits.IRCF = 7;        // Fréquence de base: 8 MHz
        OSCTUNEbits.PLLEN = 1;      // Active le PLL (x4).
    
        // Configure le convertisseur A/D 
        ADCON2bits.ADFM = 0;        // Résultat justifié à gauche sur ADRESH.
        ADCON2bits.ACQT = 7;        // Temps d'acquisition du signal: 16 TAD
        ADCON2bits.ADCS = 6;        // TAD de 1uS pour FOSC = 32MHz
    
        ADCON0bits.CHS = 0;         // Canal AN0 (RA0) activé en mode acqisition A/D.
        ADCON0bits.ADON = 1;        // Active le module A/D.
        
        ADCON1 = 0b00001110;        // Tension de référence VPP-GND  et AN0 actif
                                    // Tous les autres ports commene entrée digitale
    
        // Temporisateur 0: Echantillonnage du capteur de force + référence temporel
    
        T0CONbits.T0CS = 0;         // Source: FOSC / 4 => 8 MHz
        T0CONbits.PSA = 0;          // Active le diviseur de fréquence.
        T0CONbits.T0PS = 0b0000010; // Diviseur de fréquence /8 TPS => 1 MHz 
        
        T0CONbits.TMR0ON = 1;       // Active le temporisateur
        
        T0CONbits.T08BIT = 1;       // Compteur de 8 bits.
        TMR0H = 0x00;               // Etablit le compteur pour 
        TMR0L = 0xC8;               // un débordement à 0.2 ms -> f = 5 kHz
        
        INTCONbits.TMR0IE = 1;      // Active les interruptions pour timer 0.
        INTCON2bits.TMR0IP = 1;     // Interruptions de haute priorité.  
        
        /* Option phase de test à 10 Hz  à désactiver en mode réel*/
        
        T0CONbits.T0PS = 0b0000100; // Diviseur de fréquence /32 TPS => 250 kHz
        
        
        TMR0H = 0x61;               // Etablit le compteur pour un débordement
        T0CONbits.T08BIT = 0;       // Compteur de 16 bits. (entre TMR0H et L)                 
        TMR0L = 0xA8;               // à 25000 -> T = 0.1 s -> f = 10 Hz
     
        // Temporisateur 1:
        /*
        T1CONbits.TMR1CS = 0;       // Raccordé sur Fosc/4 = 8 MHz
        T1CONbits.T1CKPS = 3;       // Diviseur de fréquence TPS = 8 = 1 MHz
        T1CONbits.T1RD16 = 1;       // Temporisateur de 16 bits.
        T1CONbits.TMR1ON = 1;       // Active le temporisateur 1
        */
        
        // Temporisateur 2: Echantillonnage des capteurs angulaires et temps de ref
        T2CONbits.T2CKPS = 2;      // Division de fréquence par 16 = 2 MHz
        T2CONbits.T2OUTPS = 1;      // Seconde division de fréquence par 2 = 1MHz
        T2CONbits.TMR2ON = 1;       // Active le temporisateur.
        PR2 = 250;                  // Période max: 32MHz / (16*2*250) = 4kHz.
        
        PIE1bits.TMR2IE = 1;        // Active les interruptions.
        IPR1bits.TMR2IP = 1;        // Interruptions de basse priorité.
           
        //Configuration de l'UART pour une transmission à 115 kbps
        
        // Pour une fréquence de 32MHz, ceci donne 115000 bauds :
        TXSTA1bits.BRGH = 1;        // Mode haute vitesse.
        SPBRG = 16;                 //Baudrate = FOSC / (16 * (N + 1)) = 117647Bauds.
        SPBRGH = 0;
    
        // Configure RC6 et RC7 comme entrées digitales, pour que
        // la EUSART puisse en prendre le contrôle:
        TRISCbits.RC6 = 1;
        TRISCbits.RC7 = 1;
       
        // Configure l'EUSART:    
    
        TXSTA1bits.SYNC = 0;         // Mode asynchrone.
        TXSTA1bits.TXEN = 1;         // Active l'émetteur.
        RCSTA1bits.CREN = 1;         // Active le récepteur.
        RCSTA1bits.SPEN = 1;         // Active l'EUSART.
        
        // Active les interruptions (basse priorité):
        PIE1bits.TX1IE = 1;
        IPR1bits.TX1IP = 0;
        PIE1bits.RC1IE = 1;
        IPR1bits.RC1IP = 0;
        
        // Active les interruptions générales:
        RCONbits.IPEN = 1;
        INTCONbits.GIEH = 1;
        INTCONbits.GIEL = 1;
    
        // Configure les ports IO:
        TRISA = 0b11111111;  // Tous les bits du port A comme entrées
        TRISB = 0b11111101;  // Tous les bits du port B comme entrées sauf b1
        TRISC = 0b11000000;  // Tous les bits du port C comme sorties sauf TX et RX
        TRISD = 0b11111111;  // Tous les bits du port C comme entrées
        }
    
    void main(void) {
        struct EVENEMENT_ET_VALEUR *ev;
    
        // Initialise le hardware:
        hardwareInitialise();
        initialiseEvenements();
        initialiseMessagesUART();
        uartReinitialise();
        
        // Surveille la file d'événements, et les traite au fur
        // et à mesure:
        while(fileDeborde() == 0) {
            
            ev = defileEvenement();
            if (ev != 0) {
                do {
                    Test_BP();
                    ENVOI_DATA(ev);
                    //ev = defileMessageUART();
                    ev = defileEvenement ();
                } while (ev != 0);
            }
        }
        
        // La file a débordé
        
        // allume une diode en cas de débordement
    
        LED = 1;                                                            // C'est ici que l'erreur "main.c:199: error: (196) struct/union required" s'affiche.
    
        
        // Tout s'arrête:
        while(1);
    }
    Est-ce que l'un d'entre vous aurait une idée pour me sortir rapidement de mon mauvais pas ? déjà que je vais devoir travailler H24 pour réussir à le finir dans les temps ..

    Merci infiniment pour votre aide

    -----

  2. #2
    wyssflorian

    Re : Impossible de déclarer mes entrées. erreur 196 "struct/union required"

    Voici le code complet du compilateur:

    Code:
    CLEAN SUCCESSFUL (total time: 51ms)
    make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
    make[1]: Entering directory 'C:/Programme_TB'
    make  -f nbproject/Makefile-default.mk dist/default/production/Programme_TB.production.hex
    make[2]: Entering directory 'C:/Programme_TB'
    "D:\Program Files (x86)\Microchip\xc8\v1.36\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/domaine.p1  domaine.c 
    "D:\Program Files (x86)\Microchip\xc8\v1.36\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/capteurs.p1  capteurs.c 
    "D:\Program Files (x86)\Microchip\xc8\v1.36\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/evenements.p1  evenements.c 
    "D:\Program Files (x86)\Microchip\xc8\v1.36\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/main.p1  main.c 
    "D:\Program Files (x86)\Microchip\xc8\v1.36\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/file.p1  file.c 
    "D:\Program Files (x86)\Microchip\xc8\v1.36\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/test.p1  test.c 
    "D:\Program Files (x86)\Microchip\xc8\v1.36\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/uart.p1  uart.c 
    make[2]: *** [build/default/production/capteurs.p1] Error 1
    make[2]: *** Waiting for unfinished jobs....
    capteurs.c:166: error: (196) struct/union required
    main.c:197: error: (192) undefined identifier "LED"
    (908) exit status = 1
    nbproject/Makefile-default.mk:154: recipe for target 'build/default/production/capteurs.p1' failed
    (908) exit status = 1
    nbproject/Makefile-default.mk:186: recipe for target 'build/default/production/main.p1' failed
    make[2]: *** [build/default/production/main.p1] Error 1
    make[1]: *** [.build-conf] Error 2
    make: *** [.build-impl] Error 2
    make[2]: Leaving directory 'C:/Programme_TB'
    nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
    make[1]: Leaving directory 'C:/Programme_TB'
    nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
    
    BUILD FAILED (exit value 2, total time: 358ms)

  3. #3
    invite03481543

    Re : Impossible de déclarer mes entrées. erreur 196 "struct/union required"

    Bonjour,

    sans connaitre votre compilateur, je suppose que c'est XC8, vous pouvez tenter ça:

    Code:
    #define LED LATBbits.RB1

  4. #4
    wyssflorian

    Re : Impossible de déclarer mes entrées. erreur 196 "struct/union required"

    Bonjour HULK28,

    J'avais déjà essayé #define LED LATBbits.RB1, malheureusement le message d'erreur est toujours présent avec cette syntaxe ...

    J'ai remarqué que le compilateur XC8 v.1.43 (je l'avais mis en tag, mais c'est vrai que c'était pas clair) n'avait pas de librairie spécifique pour le PIC18f4523 dans le répertoire C:\Program Files (x86)\Microchip\xc8\v1.43\lib. Est-ce que cela peut venir de ça ? y a-t'il une autre librairie compatible que je peux charger pour corriger ça ?

    Merci pour ton aide ^^

  5. A voir en vidéo sur Futura
  6. #5
    invite03481543

    Re : Impossible de déclarer mes entrées. erreur 196 "struct/union required"

    Tu as installé le dernier patch d'update?
    Apparemment ton PIC apparaît bien dans la liste ici:
    http://ww1.microchip.com/downloads/e...ase-notes.html

    Sinon il semble qu'il y ait en premier un problème lors de compilation de ton fichier capteur.c
    Je pense qu'il faudrait d'abord voir pourquoi, ça peut créer un soucis ensuite au niveau du linker.

  7. #6
    wyssflorian

    Re : Impossible de déclarer mes entrées. erreur 196 "struct/union required"

    J'ai créer le projet sur une ancienne version de XC8 puis installé le patch:
    Nom : PrtScr capture_3.jpg
Affichages : 125
Taille : 41,0 Ko

    Donc ça devrait jouer à priori ...

    L'autre erreur provient du même genre de bug, mais avec un bouton poussoir. Le problème persiste quand je mets cette autre fonction en commentaire:

    Code:
    CLEAN SUCCESSFUL (total time: 140ms)
    make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
    make[1]: Entering directory 'C:/Programme_TB'
    make  -f nbproject/Makefile-default.mk dist/default/production/Programme_TB.production.hex
    make[2]: Entering directory 'C:/Programme_TB'
    "C:\Program Files (x86)\Microchip\xc8\v1.43\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/evenements.p1  evenements.c 
    "C:\Program Files (x86)\Microchip\xc8\v1.43\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/file.p1  file.c 
    "C:\Program Files (x86)\Microchip\xc8\v1.43\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/capteurs.p1  capteurs.c 
    "C:\Program Files (x86)\Microchip\xc8\v1.43\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/main.p1  main.c 
    "C:\Program Files (x86)\Microchip\xc8\v1.43\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/domaine.p1  domaine.c 
    "C:\Program Files (x86)\Microchip\xc8\v1.43\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/uart.p1  uart.c 
    "C:\Program Files (x86)\Microchip\xc8\v1.43\bin\xc8.exe" --pass1  --chip=18F4523 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/test.p1  test.c 
    main.c:198: error: (255) not a member of the struct/union ""
    make[2]: *** [build/default/production/main.p1] Error 1
    main.c:198: error: (182) illegal conversion between types
    make[2]: *** Waiting for unfinished jobs....
    int -> volatile union S42
    (908) exit status = 1
    nbproject/Makefile-default.mk:186: recipe for target 'build/default/production/main.p1' failed
    make[1]: *** [.build-conf] Error 2
    make[2]: Leaving directory 'C:/Programme_TB'
    make: *** [.build-impl] Error 2
    nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
    make[1]: Leaving directory 'C:/Programme_TB'
    nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
    
    BUILD FAILED (exit value 2, total time: 500ms)
    Que faire ? redémarrer un nouveau projet et coller mon code dedans ? Réinstaller MPLabX et XC8 ? Jeter l'éponge et recommencer en arduino

    Si t'as une meilleur idée je suis preneur

  8. #7
    invite03481543

    Re : Impossible de déclarer mes entrées. erreur 196 "struct/union required"

    Tu peux tenter de réinstaller proprement l'outil.
    Je ne connais pas XC8 suffisamment, je présume d'après les messages qu'il y a des erreurs dans le code qui empêche le bon déroulement de la compilation, pas sur donc que ça vienne de l'installation de la chaîne de compilation.
    Perso je n'utilise plus que MikoC depuis des lustres, les codes d'erreurs sont plus clairs et l'éditeur bien plus convivial à mon goût pour le debug et la prog.
    Attend peut-être que quelqu'un d'autre se manifeste.
    Bon courage.

  9. #8
    wyssflorian

    Re : Impossible de déclarer mes entrées. erreur 196 "struct/union required"

    Merci Hulk28,

    J'attends encore pour voir si il n'y a pas un "dieu" du XC8 pour me sauver ... Je vais écumer les forums anglais en attendant et reviendrais vous apporter la solution si je la trouve ...

    Pour tous les autres lecteurs de passage, si vous avez une idée merci de la poster, c'est peut-être un truc tout con ... Je suis pas très expérimenté en programmation de PIC

  10. #9
    wyssflorian

    Re : Impossible de déclarer mes entrées. erreur 196 "struct/union required"

    Bonjour,

    Mon ancien prof de prog m'a répondu et mon erreur est "toute conne" comme souvent quand il s'agit de syntaxe:

    Lorsque tu veux accéder à un bit spécifique d'un registre, comme par exemple LATB0, tu dois utiliser le nom de l'union, pas celui du registre de base. Par exemple, dans capteurs.h, tu peux définir tes variables comme:

    #define BP LATBbits.LATB0
    #define LED LATBbits.LATB1"
    En tout cas merci pour votre aide et j’espère que ce post sera utile à d'autres.

    ++ Florian

  11. #10
    invite03481543

    Re : Impossible de déclarer mes entrées. erreur 196 "struct/union required"

    Oui sauf que dans le cas d'une led (sortie) c'est LATx qu'il faut utiliser et pour un BP (entrée) c'est PORTx .
    Il n'est pas indispensable de définir une union ou une structure, en général pour faire ce genre de chose, les compilateurs permettent d'accéder à un bit de registre directement, par exemple avec mikroC:

    Code:
    sbit led_defaut            at LATC.B4;
    Même si en C, la variable bit n'existe pas, le compilo (pas tous) fait le travail en arrière plan.
    il faut donc lire la doc de ton compilo.
    @+
    Dernière modification par HULK28 ; 04/09/2017 à 15h15.

Discussions similaires

  1. struct LangageC problemePointeur;
    Par cedric300 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 02/04/2013, 19h17
  2. Boucher ou non les entrées VMC ! [résolu]
    Par inviteee191bb4 dans le forum Bricolage et décoration
    Réponses: 16
    Dernier message: 16/11/2012, 09h44
  3. Erreur 128 mplab A #DEVICE required before this line
    Par invite3c0815c5 dans le forum Électronique
    Réponses: 5
    Dernier message: 01/06/2009, 11h37
  4. Compilateur CCS C - initialiser struct bit à bit ?
    Par branqueira dans le forum Électronique
    Réponses: 4
    Dernier message: 26/11/2007, 15h37
Découvrez nos comparatifs produits sur l'informatique et les technologies.