Probleme d'interruption sur PIC 18F4420
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Probleme d'interruption sur PIC 18F4420



  1. #1
    invite919cb150

    Probleme d'interruption sur PIC 18F4420


    ------

    Bonjour à tous,
    Je travail actuellement sur un programme en C pour PIC 18F4420 avec le compilateur CC8E sous MPLABv8.0.
    J'utilise le Timer0 pour generer un flag d'interruption de priorité haute.
    Lors de l'interruption j'effectue une conversion analogique numerique de certaines entrées de mon µC et je rabaisse mon flag d'interruption.
    A la suite de ca mon programme tourne en boucle en attendant un nouveaux flag et ne retourne pas dans mon main.

    Voici le code d'interruption:

    void _highPriorityInt(void);

    #pragma origin 0x08

    interrupt highPriorityIntServer(void)
    {
    int_save_registers
    // W, STATUS and BSR are saved to shadow registers
    uns8 sv_PRODL = PRODL;
    uns8 sv_PRODH = PRODH;
    uns8 sv_FSR0L = FSR0L;
    uns8 sv_FSR0H = FSR0H;

    // handle the interrupt

    // 8 code words available including call and RETFIE
    _highPriorityInt();

    // restore W, STATUS and BSR from shadow registers
    int_restore_registers
    PRODL = sv_PRODL;
    PRODH = sv_PRODH;
    FSR0L = sv_FSR0L;
    FSR0H = sv_FSR0H;
    #pragma fastMode
    }


    #include <AcquerirVar.c>

    void _highPriorityInt(void)
    {

    if(TMR0IF==1)
    {
    acquerirvars ();
    TMR0IF=0;
    }
    }


    Si quelqu'un peut m'aider, merci.

    -----

  2. #2
    RISC

    Re : Probleme d'interruption sur PIC 18F4420

    Salut,

    1/ Es-tu sur que tu vas dans l'interruption ?
    2/ Comment en es-tu sur ?
    3/ Utilises-tu un ICD2 ou autre outil de développement pour déboguer ?


    Pourrais-tu faire voir ta routine principale (surtout l'initialisation des interruptions) et aussi la fonction acquerirvars ()

    A ta place je mettrais, à titre préventif, un ELSE dans l'interruption avec une boucle sans fin ou l'allumage d'une LED sur ta carte.
    De cette manière, si jamais tu pars en interruption pour une raison pas prévue tu le sauras...

    a+

  3. #3
    invite919cb150

    Re : Probleme d'interruption sur PIC 18F4420

    Salut,

    Pour le debug j'utilise MPLAB SIM et j'execute mon programme en pas à pas, c'est pour ca que je vois bien qu'au moment de l'interruption de mon TIMER 0 je rentre bien dans ma routine.
    Une fois dans cette routine, mon prog bascule bien dans le fichier de conversion AD dont je met une partie plus bas (je le met pas en entier il trop long).
    Sinon voici la declaration des registres pour les interruptions de priorités hautes que j'ai fait.

    void initint(void)
    {
    INTCON = 0xE6;

    INTCON2 = 0x84;
    INTCON3=0x00;

    PIR1=0x00;
    PIR2 =0x00;

    PIE1=0x42;
    PIE2=0x00;

    IPR1=0x40;
    IPR2=0x00;

    RCON.7=1;
    }


    Sinon voila mon fichier du convertisseur AD:

    uns16 acquerirvars (void)
    {
    #define NB_MEAN_VALUE 4
    fs = RC2;
    cons = AN4;
    char nb_valeur;
    uns16 tab[NB_MEAN_VALUE];
    char index;
    index = 0;
    uns16 valtemp;
    valtemp = 0;
    int tempo;
    int tempo1;
    tempo1 = 0;

    //-Conversion de l'entrée de consigne---------------------------------------

    for (nb_valeur=0;nb_valeur <= 4;nb_valeur++)
    {
    delay_ms(1);
    ADRESH = 0;
    ADRESL = 0;
    ADCON0 = 0x10;
    delay_ms(1);
    ADON =1;
    delay_ms(1);
    GO = 1;
    delay_ms( 1);
    while(GO == 1)
    {
    valtemp.high8 = ADRESH;
    valtemp.low8 = ADRESL;
    tab[index++] = valtemp;
    GO = 0;
    }
    valtemp = 0;
    if(index >= NB_MEAN_VALUE)
    {
    uns16 moyenne;
    moyenne = 0;
    char i;
    for(i=0 ; i < NB_MEAN_VALUE ; i++)
    {
    moyenne += tab[i];
    }
    moyenne /= NB_MEAN_VALUE;
    cons = moyenne;
    }
    }nb_valeur = 0;
    index = 0;
    ADON = 0;
    return cons;
    }


    Merci d'avance pour ton aide.

Discussions similaires

  1. erreur 0X00 programmation PIC plus questions sur les PIC
    Par invite4a8ccabd dans le forum Électronique
    Réponses: 4
    Dernier message: 22/07/2007, 15h36
  2. Réponses: 2
    Dernier message: 23/04/2007, 13h32
  3. Probleme d'alimentation sur PIC?
    Par invited5c1b813 dans le forum Électronique
    Réponses: 12
    Dernier message: 20/08/2006, 21h48
  4. Communication I2C entre PIC et ordinateur / Problème d'interruption
    Par invite68d5b092 dans le forum Électronique
    Réponses: 3
    Dernier message: 01/11/2005, 23h45
  5. Probleme de programmation pic sur portable résolu
    Par invite3a1051d7 dans le forum Électronique
    Réponses: 0
    Dernier message: 11/05/2005, 13h45
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...