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

[PIC] - Imbrication d'interruptions



  1. #1
    jorg1n

    [PIC] - Imbrication d'interruptions


    ------

    Bonsoir!!

    Je souhaite faire communiquer 2 microcontroleurs via une liaison 1 fil.
    Les données sont envoyées que dans un seul sens. Le "driver" pour géré l'envoi est fait, mais le je rencontre quelques soucis sur le "driver" en réception...

    Je détecte les fronts descendants du "bus" via une entrée de type INT (RB0 / PIC16F1789), et je souhaitais gérer la réception directement dans ma routine d'interruption INT, mais pour cela, j'ai besoin aussi du module TIMER qui génère des IT tous les x temps... Et je me suis rendu compte que une fois dans ma routine INT, mon "compteur" pour gérer la réception ne s'incrémente plus une fois dans la routine INT (interruption externe)...

    J'ai donc 3 questions:
    - est il possible de faire incrémenté un "compteur" par le biais des interruptions générées par le timer si on se trouve dans la routine d'interruption INT?
    - si oui, comment?
    - si non, comment me conseillez vous de faire?

    Merci d'avance!
    Bonne soirée!

    -----

  2. Publicité
  3. #2
    ftorama

    Re : [PIC] - Imbrication d'interruptions

    Pour pouvoir entrer dans une interruption alors qu'on est déjà dans une autre, il faut un micro avec un NVIC (Nested Vectored Interrupt Controller).

    Cela dit, pour compter des impulsions qui entrent sur une broche, on n'a pas besoin de déclencher une interruption, il suffit le signal comme source d'horloge (et dans ton cas de le configurer pour compter sur front descendant)
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  4. #3
    vincent66

    Re : [PIC] - Imbrication d'interruptions

    Bonsoir
    "normal" c'est le compilateur qui a détecté un possible conflit d'interruptions et bloque le timer...
    Si je comprends bien tu veux mesurer le temps entre deux flancs descendants avec un timer à la capacité limitée..?
    Fais comme moi, programme ce genre de trucs en assembleur..
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  5. #4
    Blue Sn4ke

    Re : [PIC] - Imbrication d'interruptions

    Citation Envoyé par jorg1n Voir le message
    J'ai donc 3 questions:
    - est il possible de faire incrémenté un "compteur" par le biais des interruptions générées par le timer si on se trouve dans la routine d'interruption INT?
    - si oui, comment?
    - si non, comment me conseillez vous de faire?
    Salut,

    Oui, c'est possible. Le flag qui te signale que ton timer a débordé est lisible à tout moment. Tu peux donc théoriquement faire de la scrutation dans ton interruption pour tenir compte du débordement éventuel du timer.

    Ceci dit, je ne comprend pas vraiment l'utilité du truc : ta question laisse penser que ton interruption externe est dure plusieurs débordement ce timer, ce qui est très long. Ton programme principal est donc bloqué, et plus rien n'est traité pendant le temps de la transmission...
    Techniquement rien ne t'empêche de faire comme cela, mais ce serait quand même bien plus propre d'entrer en interruption le moins de temps possible de sorte à ce que ton programme continue son exécution normale en parallèle de l'envoi ou la réception des données...
    Dernière modification par Blue Sn4ke ; 07/11/2013 à 22h14.

  6. #5
    jorg1n

    Re : [PIC] - Imbrication d'interruptions

    Merci!

    "normal" c'est le compilateur qui a détecté un possible conflit d'interruptions et bloque le timer...
    Normal que mon compteur restait à zéro!

    Oui, c'est possible. Le flag qui te signale que ton timer a débordé est lisible à tout moment. Tu peux donc théoriquement faire de la scrutation dans ton interruption pour tenir compte du débordement éventuel du timer.
    Je vois le prinicpe... je vais donc essayer cette solution!

    Ceci dit, je ne comprend pas vraiment l'utilité du truc : ta question laisse penser que ton interruption externe est dure plusieurs débordement ce timer, ce qui est très long. Ton programme principal est donc bloqué, et plus rien n'est traité pendant le temps de la transmission...
    Techniquement rien ne t'empêche de faire comme cela, mais ce serait quand même bien plus propre d'entrer en interruption le moins de temps possible de sorte à ce que ton programme continue son exécution normale en parallèle de l'envoi ou la réception des données...
    En effet, tout le traitement de la trame reçu se fait dans la routine de mon interruption externe...
    Je m'explique, je dois recevoir 32 bits d'un autre microcontrôleur, et je n'ai qu'une seule liaison entre les 2 µC, tout est donc une histoire de timming, j'ai d'abord un niveau logique bas de 5 ms pour la phase d'initialisation afin de connaitre le debut de l'envoi, et ensuite, je viens lire l'état de mon entrée tous les x temps et ça 32 fois... il est donc pas possible de le faire en parallèle je pense.
    Voici un exemple proche de ce que je souhaite faire:
    http://daniel.menesplier.free.fr/Doc/BUS%201%20WIRE.pdf

    ... Mais je suis preneur de toute autre solution!!

    Merci encore!!
    Dernière modification par jorg1n ; 07/11/2013 à 22h41.

  7. A voir en vidéo sur Futura
  8. #6
    Seb.26

    Re : [PIC] - Imbrication d'interruptions

    Réception sur 1 fil = UART asynchrone.

    La pin Rx de l'UART est dispo sur le récepteur ?

    Sinon, si tu arrive à trouver un second fil, tu fais une horloge et ça devient trivial.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  9. Publicité
  10. #7
    jorg1n

    Re : [PIC] - Imbrication d'interruptions

    Bonjour Seb.26!

    Ta suggestion m'intéresse, mais sachant que mon microcontroleur maître est un PIC12F1501, sans module de communication , comment dois je gère l'envoi de mes mots de 8 bits ?

    Si cela est réalisable, cela permettrait de libérer mon microcontroleur lors de la réception de message!

    Merci !

Sur le même thème :

Discussions similaires

  1. les interruptions
    Par mmm999 dans le forum Électronique
    Réponses: 1
    Dernier message: 08/05/2012, 18h58
  2. PIC et les interruptions
    Par mmm999 dans le forum Électronique
    Réponses: 6
    Dernier message: 06/05/2012, 11h34
  3. Interruptions IRQ
    Par sheva94 dans le forum Électronique
    Réponses: 0
    Dernier message: 06/03/2012, 11h41
  4. Les interruptions
    Par abdou_inf dans le forum Électronique
    Réponses: 5
    Dernier message: 26/02/2009, 16h11
  5. interruptions
    Par mangouste dans le forum Électronique
    Réponses: 0
    Dernier message: 10/06/2008, 15h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.