Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Programme codeur inc, PIC18



  1. #1
    emic21

    Programme codeur inc, PIC18


    ------

    Bonjour,
    je dois convertir un programme que j'ai fait poru un codeur incrémental avec un pic 16f pour un pic 18f, mais j'obtiens des erreurs de syntaxe mais je ne vois pas lesquelles, peut etre pouvez vous m'aider? merci beaucoup!!

    /****************************** ******************************/
    /* sous programme interruption */
    /****************************** ******************************/


    #pragma code highVector=0x008
    void atInterrupthigh(void)
    {
    _asm GOTO it_prioriaire _endasm
    }
    #pragma code

    #pragma interrupt it_prioritaire
    void it_prioritaire (void)
    {
    int_save_registers //enregistre les registres


    if (INTCONbits.INT0IF == 1) //vérifie une impulsion sur INT0
    {abs_nb_front=abs_nb_front+1 ;
    sens_prec=sens;
    determine_sens(INTF,voie2);
    }
    if (sens!=sens_prec)
    {abs_nb_front=0;} //détection de front, donc cela signifie que l'on a changé de sens
    else if (sens==sens_prec)
    {nop();}

    if (sens==1)
    {++nb_front;} //selon le sens, on incrémente ou on décrémente
    //nb_front image de la distance parcourue
    else if (sens==0){--nb_front;}

    // if (OPTION.6==1) OPTION.6=0; //on change la détection de front pour avoir une plus grande résolution
    // else if (OPTION.6==0) OPTION.6=1;

    INTCONbits.INT0IF = 0; //efface le flag int0


    int_restore_registers // restaure les registres
    }


    #include <MATH.H>
    //#include <MATH24F.H>
    //#include <MATH24LB.H>

    /****************************** ******************************/
    /* programme principal */
    /****************************** ******************************/
    void main(void)
    {

    /****************************** ******************************/
    /*configure INT0 with pullups enabled, falling edge */
    /****************************** ******************************/

    config = PORTB_CHANGE_INT_ON | FALLING_EDGE_INT | PORTB_PULLUPS_ON;
    OpenRB0INT(config ); //configures INT0 & enables it

    /****************************** ******************************/
    /*configure INT1 with pullups enabled, falling edge */
    /****************************** ******************************/
    config=0;
    config = PORTB_CHANGE_INT_ON | FALLING_EDGE_INT | PORTB_PULLUPS_ON;
    OpenRB1INT( config); //configures and enables INT1

    -----

  2. Publicité
  3. #2
    antoine6

    Re : Programme codeur inc, PIC18

    Salut

    -mets des balises code

    -ton main est incomplet

    -il manque des points virgule et des ()

    -ça fait pas un peu usine à gaz ton truc?

  4. #3
    emic21

    Re : Programme codeur inc, PIC18

    en fait je n'ai pas tout copier coller poru ne pas faire un message long comme le bras, les lignes qui posaient probleme étaient int_save_registers //enregistre les registres et int_restore_registers // restaure les registres car ce sont des commandes de cc5x
    mais maintenant que j'ai résolu ce probleme et changer quelques syntaxes, j'ai encore un soucis avec les programmes d'interruption:
    #pragma code highVector=0x008
    void atInterrupthigh(void)
    {
    _asm goto it_prioriaire _endasm
    }
    #pragma code

    #pragma interrupt it_prioritaire
    void it_prioritaire (void)
    {
    // int_save_registers //enregistre les registres


    if (INTCONbits.INT0IF == 1) //vérifie une impulsion sur INT0
    {abs_nb_front=abs_nb_front+1 ;
    sens_prec=sens;
    determine_sens(INTCONbits.INT0 IF,PORTBbits.RB0);
    }
    if (sens!=sens_prec)
    {abs_nb_front=0;} //détection de front, donc cela signifie que l'on a changé de sens
    else if (sens==sens_prec)
    {nop();}

    if (sens==1)
    {++nb_front;} //selon le sens, on incrémente ou on décrémente
    //nb_front image de la distance parcourue
    else if (sens==0){--nb_front;}

    // if (OPTION.6==1) OPTION.6=0; //on change la détection de front pour avoir une plus grande résolution
    // else if (OPTION.6==0) OPTION.6=1;

    INTCONbits.INT0IF = 0; //efface le flag int0
    }

  5. #4
    antoine6

    Re : Programme codeur inc, PIC18

    Citation Envoyé par emic21 Voir le message
    j'ai encore un soucis avec les programmes d'interruption
    Quel soucis, à quel niveau? ca compile?

    Tu teste comment? sur un simulateur, ou une vrai carte?

    Avant d'essayer de gérer ton codeur incrémental, essaie d'allumer une led à partir d'un poussoir qui te génére une IT

  6. A voir en vidéo sur Futura

Discussions similaires

  1. Programmation microcontrôleur PIC18
    Par Amine_34 dans le forum Électronique
    Réponses: 12
    Dernier message: 27/08/2010, 14h21
  2. audio record - pic18
    Par jahcooik dans le forum Électronique
    Réponses: 4
    Dernier message: 17/12/2009, 17h59
  3. Carte PIC18 WIFI
    Par microchip dans le forum Électronique
    Réponses: 1
    Dernier message: 23/12/2008, 06h23
  4. Dérive PIC18
    Par hackduc dans le forum Électronique
    Réponses: 18
    Dernier message: 12/09/2008, 16h31
  5. programmation PIC18
    Par leader00 dans le forum Électronique
    Réponses: 1
    Dernier message: 22/03/2007, 17h39
Découvrez nos comparatifs produits sur l'informatique et les technologies.