Interruption C PIC16F877
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Interruption C PIC16F877



  1. #1
    invite210e4233

    Interruption C PIC16F877


    ------

    Bonjour,

    J'aimerai enfin apprendre à faire des interruptions en C.
    Mais à vrai dire je ne sais pas si c'est bien ce dont j'ai besoin.

    En gros pendant que mon programme s'execute je voudrais par exemple faire clignoter 2 LED. Mais il n'y a aucune condition pour lancer ou arrêter le clignotement. De mémoire je crois que dans ce cas on utilise une interruption, qui va faire tourner un "programme" en parallèle au programme principal.

    Il me semble qu'une interruption nécessite une "condition" pour être executée, non ? Mais à priori supprimer une condition n'est jamais un problème.

    Mais donc je suis pas vraiment sur de ce que j'avance.

    Sansa j'ai un soucis pour déterminer la "tempo". Il me faut je crois utiliser un timer. J'utilise déjà le timer2 pour des PWM, je peux donc utiliser le 1 ?

    J'utilise MPLAB avec CCS, et dans les exemples CCS j'a itrouvé ceci : (n'ayant pas internet sur mon pc, je note ça de mémoire...)

    Code:
    #int_EXT  
    EXT_isr()  
    {  
                // c'est ici qu'on tape ce qu'elle doit faire ??
    }  
     
     
    enable_interrupts(INT_EXT);  
    enable_interrupts(GLOBAL);    //à mettre tjr apparemment pour autoriser les interruptions
    Comment est-ce que j'appelle mon interruption après ?

    A priori le code pour mes LED serait du style :

    output_high(PIN_A2)
    output_low(PIN_A3)
    //réaliser la tempo, par un delay ou bien par le timer ???
    output_high(PIN_A2)
    output_low(PIN_A3)

    Bref ça reste très flou pour l'instant.

    A aussi je vois que pour configurer le timer il faut faire :

    setup_timer1(chai pu koi diviser by 4 , puis d'autres paramètre pour calculer sa fréquence, c'est ça ? )

    Merci beaucoup

    -----

  2. #2
    invite897f3d13

    Re : Interruption C PIC16F877

    Bonjour,

    L'endroit que tu spécifies pour l'inscription du code est correcte.

    Attention : Le code pour la gestion que tu proposes, s'occupe des interruptions externes.

    Si j'étais toi, j'utiliserais les interruptions du timer1 (tu peux définir ta tempo grâce à la valeur qui génère l'interruption)

    Principe : Le timer1 s'incrémente. Lorsqu'il atteint une valeur définie, il génère une interruption. Ton programme s'interrompt pour gérer cette interruption.
    Le code que tu mets dans une interruption doit toujours être le plus court possible (pour limiter le temps de "blocage"). Ne mets donc pas la tempo dans ton interruption sinon tu vas interrompre ton programme pendant toute la durée de la tempo.

    Pour le code, je mettrais quelque chose du genre (modifier la valeur de sortie, si 1 => 0, si 0 => 1):

    Pin_A2 ~=Pin_A2;
    Pin_A3 ~= Pin_A3;

    Ainsi chaque fois que le timer1 génère une interruption les leds changent d'état.

  3. #3
    RISC

    Re : Interruption C PIC16F877

    Bonsoir,

    Je te conseille cet excellent site qui propose des cours et des exemples avec les PIC16 et PIC18 en C :
    http://www.aix2pic.indepnet.org/index1.html

    a+

Discussions similaires

  1. interruption pic18f4620
    Par invite6af9789d dans le forum Électronique
    Réponses: 3
    Dernier message: 18/09/2008, 08h33
  2. Interruption RB0
    Par invite91a05f0b dans le forum Électronique
    Réponses: 5
    Dernier message: 12/04/2007, 11h45
  3. interruption ( timer )
    Par invite42dae262 dans le forum Électronique
    Réponses: 0
    Dernier message: 13/03/2007, 20h50
  4. Interruption I2C
    Par inviteb44153e1 dans le forum Électronique
    Réponses: 4
    Dernier message: 19/01/2007, 11h20
  5. Interruption et PIC18F4431
    Par invitec7ced588 dans le forum Électronique
    Réponses: 1
    Dernier message: 09/03/2006, 15h01
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...