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

Problème avec l'interruption externe du microcontrolleur.



  1. #1
    rami74

    Problème avec l'interruption externe du microcontrolleur.


    ------

    Salut tout le monde

    Je suis encore débutant en programmation de microcontrolleur et travaille avec mplabx avec hi-tech comme compilateur.
    Le code ci-dessous est celui d'une routine d'interruption externe qui allume une LED liée à la broche RD0 une fois déclenchée. Le code du programme a été compilé avec succès ainsi que la simulation du circuit sur PROTEUS ISIS. Le problème est que le programme ne sort pas de cette routine même en ajoutant un délais à cette routine (La LED devient ne s’éteint pas après l'interruption).

    #include <htc.h>


    void interrupt ISR(void)
    {
    if(INTF) //If External Edge INT Interrupt
    {

    INTF = 0; // clear the interrupt

    RD0 = !RD0; // Toggle RD0 pin

    }
    }

    Merci d'avance pour votre aide.

    -----

  2. Publicité
  3. #2
    Aurélien

    Re : Problème avec l'interruption externe du microcontrolleur.

    - on ne sait meme pas quel PIC tu utilises ! il est préférable d'utiliser les registres type LAT plutot que les registres PORT pour piloter les drivers de sortie. Mais bon, comme on ne sait pas à quoi correspond RD0...
    - as tu un scope pour regarder ce qu'il y a en sortie ?

  4. #3
    rami74

    Re : Problème avec l'interruption externe du microcontrolleur.

    J'utilise le PIC16f877 et j'ai configuré RDO comme sortie vers une LED.

  5. #4
    pilatomic

    Re : Problème avec l'interruption externe du microcontrolleur.

    Regarde la gestion des interruptions dans le datasheet du PIC. Y'a pas mal de bits a activer pour autoriser l'interruption que tu veux.

  6. #5
    rami74

    Re : Problème avec l'interruption externe du microcontrolleur.

    C'est la suite. En faite le programme fonctionne correctement, le problème est qu'en simulation avec PROTEUS ISIS une fois l'interruption se déclenche la LED devient allumée et ne s’éteint plus.

    void InitExternal_INT(void)
    {
    TRISB0 = 1; // Make RB0 pin as input

    INTCON = 0x90; // Enable Global + INT interrupt
    OPTION = 0x40; // Make INT as posedge triggered
    }


    // Configuration word for PIC16F877
    __CONFIG( HS & WDTEN & PWRTEN & UNPROTECT );

    // Define CPU Frequency
    // This must be defined, if __delay_ms() or
    // __delay_us() functions are used in the code
    #define _XTAL_FREQ 20000000


    void main(void)
    {
    InitExternal_INT(); // Initialize external interrupts on RB0 pin

    TRISD0 = 0; // Make output
    RD0 = 0; // Make value zero

    while(1)
    {
    }
    }

  7. A voir en vidéo sur Futura

Sur le même thème :

Discussions similaires

  1. Ventilo d'ordinateur problème avec alim externe
    Par invite9876423294 dans le forum Électronique
    Réponses: 4
    Dernier message: 01/07/2008, 23h44
  2. Problème avec un disque dur externe
    Par kingax dans le forum Matériel - Hardware
    Réponses: 7
    Dernier message: 14/04/2007, 22h25
  3. Probléme avec DD externe
    Par modulaire dans le forum Matériel - Hardware
    Réponses: 1
    Dernier message: 01/04/2006, 16h42
  4. Problème avec un disque dur externe
    Par kingax dans le forum Dépannage
    Réponses: 1
    Dernier message: 05/02/2006, 02h08
  5. probleme avec un dd externe
    Par smixfr dans le forum Internet - Réseau - Sécurité générale
    Réponses: 9
    Dernier message: 10/11/2005, 16h24
Découvrez nos comparatifs produits sur l'informatique et les technologies.