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

Embarqué Discussion :

Interruption PIC16F88 .. je sèche


Sujet :

Embarqué

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 35
    Points : 33
    Points
    33
    Par défaut Interruption PIC16F88 .. je sèche
    Bonjour,

    Depuis 2 jours j’essaye de faire fonctionner les interruptions sur mon PIC16F88 sans succès ... j'ai essayé des dizaines de codes et j'en peut plus x)

    Je programme sous MPLAB X avec XC8 comme compilateur.

    Je souhaiterais pour le moment un truc tout simple : j'ai une PICDEM 2 plus (plaque de démo avec dessus les boutons RA4 et RB0), je souhaiterais qu'à l'appuie de RB0 la led connectée à RB1 s'allume.
    Pas compliqué mais je vois pas ce qu'il cloche. Avant j'utilisais un PIC18F4550 avec MikroC et je trouvais ça beaucoup plus facile à faire mais je n'ai pas le choix du pic.

    Voici le code :

    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
    #include <stdio.h>
    #include <stdlib.h>
    #define _XTAL_FREQ 4000000 // 4 MHz
    #include <pic.h>
    
    /*
     * 
     */
    void interrupt Timer0_ISR(void);
    /*******************************************************************************/
    /*      Interrupt function                                                     */
    /*******************************************************************************/
    void interrupt Timer0_ISR(void) {
        if(INTF ){
            PORTBbits.RB1= ! PORTBbits.RB1;
            INTF=0;
        }
    }
    int main(int argc, char** argv) {
        TRISA=0xFF;
        TRISB=0x00;
        PORTB=0x00;
    
        nRBPU=0;
        INTEDG=0;
        GIE=1;
        INTE=1;
        RBIE=0;
        INT0IE=0;
        EEIE=0;
        INTF=0;
    
        while(1){
        }
        return (EXIT_SUCCESS);
    }
    A noter que j'ai essayé tellement de codes que celui-ci peut être complètement farfelu ....

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 35
    Points : 33
    Points
    33
    Par défaut
    C'est quand on relit son post qu'on voit des erreurs absurdes : j'ai configuré tout le TRISB en sortie alors que j'essaye de l'utilise comme entrée.
    Une erreur de moins, mais ça ne marche quand même pas :/



    TRISA=0xFF;
    TRISB=0b00000001;
    PORTB=0x00;

  3. #3
    Membre actif Avatar de Livegen
    Homme Profil pro
    Ingénieur logiciel embarqué Franco-allemand
    Inscrit en
    Avril 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué Franco-allemand
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 83
    Points : 255
    Points
    255
    Par défaut
    J'ai survolé ton code, je vois cela :

    INT0IE=0;
    Maintenant, dans la documentation du microcontrôleur (page 19), je lis :

    INT0IE:
    RB0/INT External Interrupt Enable bit
    1= Enables the RB0/INT external interrupt
    0= Disables the RB0/INT external interrup
    C'est pour un projet étudiant ?

    Meilleures salutations, Livegen.

Discussions similaires

  1. Utiliser l'interruption clavier
    Par Ninkosen dans le forum x86 16-bits
    Réponses: 7
    Dernier message: 28/03/2003, 01h01
  2. interruption clavier
    Par pyrostan dans le forum C
    Réponses: 4
    Dernier message: 13/01/2003, 17h33
  3. interruption materiel port parrallele
    Par pyrostan dans le forum C
    Réponses: 2
    Dernier message: 13/01/2003, 08h22
  4. Tracer une ligne droite sans les interruptions
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 25/11/2002, 01h22
  5. Bouquins d'Assembleur - interruptions matérielles
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 12/11/2002, 21h23

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