Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas



  1. #1
    frankie

    Question Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas


    ------

    Bonjour à vous,

    Voici mon problème, j'ai beau essayer toute sorte de modifications, ça ne fonctionne pas... ça compile mais sur la carte ça ne marche pas quand j'appuie sur le switch...

    Peut-être que je suis à coté de la plaque

    Voici mon code, si vous avez une suggestion...

    Notez que j'utilise MPLAB et le compilateur C18 et que je teste sur ICD2/PICDEM 2 PLUS DEMO BOARD.


    Merci à vous !!!

    -----------------------------------------------------------------------------------------------------------------------

    #include <p18f2550.h>


    //Set up the configuration bits */
    #pragma config WDT = OFF // watchdog timer OFF
    #pragma config PWRT = ON // power-up timer ON
    #pragma config BOR = OFF // brown-out detect ON
    #pragma config FOSC = HS // oscillator HS (quartz 4 MHz)
    #pragma config PBADEN = ON // PORTB<4:0> pins are configured as digital I/O on Reset
    #pragma config LVP = OFF // low voltage programming OFF

    //Declaration prototypes

    void button (void);
    void temporisation (unsigned int count);

    #pragma code high_vector_section=0x8
    void high_vector (void)
    {
    _asm GOTO button _endasm
    }
    #pragma code



    #pragma interrupt button
    void button (void)
    {
    if (INTCONbits.INT0IF && INTCONbits.INT0IE)
    {
    INTCONbits.INT0IF = 0;
    PORTBbits.RB2=1;
    /* clear the interrupt flag */
    temporisation (30000);
    }
    }

    void temporisation (unsigned int count)
    {
    // boucle de temporisation
    int i ;
    for (i = 0; i < count; i++);
    }

    void main (void)
    {
    /* Enable interrupts */
    INTCONbits.GIE = 1;
    INTCONbits.PEIE = 1;

    /* PORTB RB0 input for the button */
    TRISBbits.TRISB0 = 1;
    /* PORTB RB1, RB2, RB3 output*/
    TRISBbits.TRISB1 = 0;
    TRISBbits.TRISB2=0;
    TRISBbits.TRISB3=0;

    /* Set the button on RB0 to trigger an
    interrupt. It is always high priority */

    INTCONbits.INT0IE = 1;

    PORTBbits.RB3=1;
    PORTBbits.RB2=0;
    PORTBbits.RB1=1;

    while(1);

    }

    -----

  2. #2
    sabeha

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    ah bravo !
    j'ai oublié la carte je vais la chercher à midi j'essayerai à ce moment la votre code et je vous dirai si j'arrive à le débugger ou pas

  3. #3
    guillaume83

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    Boujour,
    en premier , je pense qu' il faut effeacer le flag d' interuption à la fin du traitement de l'interuption , sinon il y a risque de déclencher une nouvelle interuption avant que la premiére ne soit fini.
    en second , en c18 pour écrire sur un port , on utilise LATx ou LATxbits.x1 par exemple.
    ne pas oublier aussi de definir la direction du port dans le registre TRIS du port.
    @+

  4. #4
    frankie

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    Bonjour, merci pour vos réponses.

    Que la remise du flag à 0 soit avant ou après, ça devrait allumer la led sur RB2, n'est ce pas ?

    Sinon les leds sur RB1 et RB3 fonctionnent avec PORTBbits.RBx donc je ne pense pas que cela vienne de LATx.

    J'ai également précisé la direction des ports RB avec TRIS.


    Merci de me faire part de vos suggestions.


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

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    Asseyez, juste au cas ou.

  7. #6
    guillaume83

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    De plus dans le data sheet , il est bien spécifié que l'état des ports au restet n'est pas déffini.
    si latb =1 au reset , dés que trisb =0 , les led vont s'alumées, sans que ca soit une action sur portb.
    autrement il existe aussi un simulateur sous mplab, trés efficasse pour déboguer.
    @+

  8. #7
    paulfjujo

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    bonjour,

    mauvaise config
    //#pragma config PBADEN = ON // PORTB<4:0> pins are configured as ANALOG!!!
    mettre OFF
    Images attachées Images attachées  

  9. #8
    guillaume83

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    bien vu!!!

  10. #9
    RISC

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    Salut,

    Le problème n'est vraiment du PBADEN...Ce bit décide UNIQUEMENT de l'état des broches au RESET mais c'est spécifique à ce micro.
    Le problème vient surtout du registre ADCON1 :

    Code:
             ADCON1 = 0xF ; // mettre les broches RB0 à RB3 en mode digital
    Lire le chapitre sur le PORTB...dans la datasheet

    Attention au schéma de la carte PICDEM 2 PLUS, un cavalier permet de passer du mode gestion des boutons poussoirs aux LEDs ;=)

    a+

  11. #10
    frankie

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    Bonjour à vous,

    Alors effectivement les interruptions sur RB0 semblent marcher + ou - : je m'explique, lorsque j'appuie sur le switch S3 (RB0) de la carte Picdem 2 Plus demo board, rien ne se passe sur les diodes. Il suffit que j'enlève le jumper J6 et que je le remette pour voir le résultat de l'interruption... Bizarre quand même, mais ça marche à chaque coup...

    Donc mon interruption sur RB0/INT0 fonctionne pour moi, mais bon je m'attendais à qqch de plus évident...


    Qqn sait pourquoi ça fait ça ?


    Merci à vous

  12. #11
    RISC

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    Frankie,

    Je t'ai expliqué pourquoi au post précédent...Télécharges le user manual et regarde le schéma électronique de la carte PICDEM 2 PLUS.
    Certaines broches du PIC servent à la fois aux boutons poussoirs et aux leds. Le choix de l'un OU l'autre se fait par le cavalier J6 ;=)

    a+

  13. #12
    frankie

    Re : Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas

    Nickel !

    Merci RISC j'ai compris !

    Sujet ok : réponse pour ceux qui chercheraient encore = mes interruptions marchent mais je ne peux pas visualiser mon interruption sur une led du PORTB tout en générant l'interruption sur ce même PORTB (RB0) dans le cas de l'utilisation de la carte PICDEM 2 PLUS DEMO BOARD (le choix se fait obligatoirement par le jumper J6).

Discussions similaires

  1. interruption INT0
    Par guifou dans le forum Électronique
    Réponses: 1
    Dernier message: 30/06/2011, 22h33
  2. MPLABX et Compilateur C18 sur Mac
    Par peter pan666 dans le forum Électronique
    Réponses: 3
    Dernier message: 15/06/2011, 09h37
  3. interruption RB0 sur pic16f877
    Par invite7acd1074 dans le forum Électronique
    Réponses: 2
    Dernier message: 19/05/2011, 15h20
  4. [PIC C18] desactiver interruptions Int0 Int1 Int2
    Par Bouteille51 dans le forum Électronique
    Réponses: 1
    Dernier message: 28/09/2010, 17h31
  5. Interruption RB0 (int_ext) avec compilateur CCS
    Par invite70684c77 dans le forum Électronique
    Réponses: 10
    Dernier message: 06/05/2009, 15h13
Découvrez nos comparatifs produits sur l'informatique et les technologies.