Compteur d'impulsion et interruption - Flowcode
Affichage des résultats 1 à 18 sur 18

Compteur d'impulsion et interruption - Flowcode



  1. #1
    invitee785e981

    Compteur d'impulsion et interruption - Flowcode


    ------

    Bonjour,

    Dans la cadre de mon projet je dois programmer un robot avec Flowcode. Ce dernier doit acquérir un taux de radioactivité, et pour ce faire, je dois utiliser des interruptions.
    Je dois compter le nombres d'impulsions sur 10 s, puis ensuite faire des petits calculs pour arriver a ma valeur final. Pour l'instant j'ai fait un chrono et un compteur d'impulsion. Maintenant mon problème c'est de réunir le tout, en utilisant les interruptions sur RB0. Si quelqu'un pouvais déjà m'expliquer le principe de l'interruption, car même avec des recherches, je ne comprend pas, et j'avance un peu a l'aveugle.
    Ce robot doit aussi rouler ! J'avais déjà plus ou moins un programme utilisant le pwm, mais je ne peut pas l'utiliser car sa sortie est déjà utilisée. Maintenant mon problème c'est comment pouvoir faire varier la vitesse du moteur.
    J'attend avec impatience de l'aide, et je suis disposé à vous donner d'autres informations si besoin.

    -----

  2. #2
    Antoane
    Responsable technique

    Re : Compteur d'impulsion et interruption - Flowcode

    Bonjour et bienvenue,

    Imagine que tu es tranquillement en train de discuter avec qq au bas d'un immeuble. Tout d'un coup, un piano tombe du 15e étage. Vas-tu finir ta conversation avant de t'écarter ? C'est le principe de l'interruption : un programme est en cours de réalisation (= ta conversation) mais peut être interrompu à tout moment si intervient un événement particulier (=un piano qui tombe) pour agir en réponse à cet événement (=t'écarter).

    Dans un pic, tu peux autoriser les interruptions par front montant sur RB0 : tandis que ton programme se déroule, par exemple pour gérer un moteur, si un front montant arrive sur RB0, le pic va laisser de côté la gestion du moteur pour aller exécuter un morceau de code pré-défini.

    Ce robot doit aussi rouler ! J'avais déjà plus ou moins un programme utilisant le pwm, mais je ne peut pas l'utiliser car sa sortie est déjà utilisée. Maintenant mon problème c'est comment pouvoir faire varier la vitesse du moteur.
    Plusieurs solutions :
    - libérer la broche PWM ;
    - coder un PWM ;
    - utiliser tout un port (=8bits) pour gérer le moteur, avec en plus quelques composants externes ;
    - utiliser un composant actif externe piloté avec une liaison série qqcq (I²C, SPI, One-Wire...) ;
    - autres.
    La plus simple est _très_ clairement la première.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    invitee785e981

    Re : Compteur d'impulsion et interruption - Flowcode

    Merci pour l'explication sur l’interruption. En gros dans mon cas, je dois mettre mon compteur d'impulsion dans une interruption sur rb0 si j'ai bien compris ?
    Pour le PWM je ne peux vraiment pas libérer la broche, je suis obligé de faire un programme pour faira varier la vitesse, mais je ne vois vraiment pas comment arriver a reproduire le PWM. Si vous auriez des pistes a donner, ça serait avec plaisir.

  4. #4
    Antoane
    Responsable technique

    Re : Compteur d'impulsion et interruption - Flowcode

    C'est en fait un fréquencemètre que tu veux faire. Pour ça, il faut compter les impulsions et le temps.

    Pourquoi ne peux-tu pas libérer la broche ?
    Faire un PWM sans le module interne du PIC est possible, mais relativement couteux en terme de ressources. Pour ca, une solution est de coder un générateur PWM à la main, en utilisant un timer. Une autre solution consiste à trouver un composant générant le signal par lui-même à partir d'une commande par liaison série ou parallèle... Il te reste combien de I/O de disponibles sur ton pic ?
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

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

    Re : Compteur d'impulsion et interruption - Flowcode

    Petit up du sujet !

    Pour mes moteurs c'est bon ça tourne !!

    Maintenant mon problème ça reste le compteur d'impulsion. Il me le faut pour lundi donc je dois bosser vite ! (mon prof m'a promit une très très bonne note si je lui donne ce programme ! ) Donc ou j'en suis ? J'ai un chrono pour mon int TMR et un compteur d'impulsion dans RB0, dans ma logique, je devais faire ça. Le problème maintenant c'est l'assemblage de tout ça. JE dois d'abord rentrer dans la boucle temps, et ensuite dans le compteur j'imagine. Pour l'instant, dans une boucle, j'ai mon INT sur TMR et ensuite une autre boucle dedans, avec l'INT sur RB0. Est ce que je vais sur la bonne voie ?

  7. #6
    Antoane
    Responsable technique

    Re : Compteur d'impulsion et interruption - Flowcode

    J'ai pas tout compris...

    Tu as effectivement besoin de deux interruptions, sur un timer et une entrée. chacune appelle une macro différente, l'une comptant le temps, l'autre les pulses.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  8. #7
    invitee785e981

    Re : Compteur d'impulsion et interruption - Flowcode

    Moi non plus j'ai pas trop compris ce que j'ai marqué

    Pour résumer ou j'en suis :- J'ai ma macro de l'int timer. Avec dedans un chrono qui fait 60s
    -J'ai une macro de l'int rb0 avec un compteur d'impulsion.
    Mon problème maintenant, c'est rassembler le tout. J'imagine que je dois d'abord rentrer dans la macro temps et ensuite dans le compteur d'impulsion, mais comment tout bien emboîter pour que tout défile correctement ?

  9. #8
    Antoane
    Responsable technique

    Re : Compteur d'impulsion et interruption - Flowcode

    Tu ne rentres pas dans une macro puis dans l'autre : tu rentres dans chaque macro quand l'interruption se déclenche.

    Quand remets-tu à zéro le compteur ?

    Il te faut une variable cmpt_act qui contienne la dernière valeur calculée de fréquence : pendant le calcul de la fréquence, la valeur de ton compteur n'est pas stable. Il faut donc mémoriser pendant la dernière valeur de fréquence calculée pendant le nouveau calcul.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  10. #9
    invitee785e981

    Re : Compteur d'impulsion et interruption - Flowcode

    Mon compteur se remet a 0 toute les 60 s. J'ai absolument rien compris au reste Quand est ce que je calcul ma fréquence ?

  11. #10
    Antoane
    Responsable technique

    Re : Compteur d'impulsion et interruption - Flowcode

    Envoie-nous ton programme ; tu n'as normalement besoin que d'une boucle, dans ton main (principal).
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  12. #11
    invitee785e981

    Re : Compteur d'impulsion et interruption - Flowcode


  13. #12
    Antoane
    Responsable technique

    Re : Compteur d'impulsion et interruption - Flowcode

    Tu n'as pas compris l'utilisation des interruptions :
    Le pictogramme "interruption" c'est pour dire à ton microcontrôleur "à partir de maintenant, si tu vois arriver un piano, tu vas exécuter le morceau de programme situé dans la macro idoine". Il suffit de le dire une fois, aussi est-il inutile de mettre ce pictogramme dans la boucle (une boucle = un "tant que...", ou un "jusqu'à..." ; une macro : un morceau de programme ouvert dans une nouvelle fenetre/onglet sous flowcode) infinie.

    Ici tu utilises 2 interruptions, pour faire réagir ton µC si tu vois arriver un piano (dans ce cas là, tu réagis d'une certaine manière) et si tu vois arriver un camion te fonçant dessus (tu réagis de manière différente).

    Le timer, c'est une interruption qui se déclenche tous les x ms (réglable dans le pictogramme autorisant l'interruption). Tu comptes donc le temps en comptant le nombre d'appels de la macro d'interruption timer.
    Il ne faut donc pas mettre de temporisation dans la macro.

    Pourquoi utiliser un timer plutôt qu'une temporisation : car c'est plus précis, on ne peut rien faire pendant que tourne une temporisation alors qui oui entre deux déclenchements du timer.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  14. #13
    invitee785e981

    Re : Compteur d'impulsion et interruption - Flowcode

    Donc dans mon Int TMR, il y a rien ? J'ai juste a régler ma frequence ?
    Et dans mon INT du compteur, si je comprend bien, je dois enlever ma decision, juste mettre +1 a mon compteur ?

  15. #14
    Antoane
    Responsable technique

    Re : Compteur d'impulsion et interruption - Flowcode

    Citation Envoyé par Aztel Voir le message
    Donc dans mon Int TMR, il y a rien ? J'ai juste a régler ma frequence ?
    bah si, il faut compter le temps : la fréquence minimale disponible doit être de l'ordre de plusieurs Hz.
    Et même si elle est suffisamment faible, il faut metter à jour ton affichage et gérer la remise à zéro du compteur.

    Et dans mon INT du compteur, si je comprend bien, je dois enlever ma decision, juste mettre +1 a mon compteur ?
    Oui.

    Il te faut 2 compteurs : un pour le temps et l’autre pour compter les événements radioactifs.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  16. #15
    invitee785e981

    Re : Compteur d'impulsion et interruption - Flowcode

    Mais la fréquence et trop grande, ca va pas faire des seconde. Il y a un moyen de régler ca ? Niveau compteur impulsion c'est bon.

  17. #16
    Antoane
    Responsable technique

    Re : Compteur d'impulsion et interruption - Flowcode

    Avec un second compteur qui compte le temps, c'est à dire le nombre d'appels de la macro d'interruption TMR0.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  18. #17
    invitee785e981

    Re : Compteur d'impulsion et interruption - Flowcode

    Euh comment tu veux qu'un compteur change une fréquence ? Pas trop compris la. Or mis les seconde, qui ne sont pas des secondes, le programme marche. La remise a 0 se fait, les impulsion se compte. Plus qu'un problème de fréquence.

  19. #18
    Antoane
    Responsable technique

    Re : Compteur d'impulsion et interruption - Flowcode

    A ton avis ?
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

Discussions similaires

  1. Interruption TMR0 avec Flowcode ?
    Par inviteb68a7a76 dans le forum Électronique
    Réponses: 1
    Dernier message: 10/01/2014, 11h03
  2. Interruption TMR0 avec flowcode ?
    Par inviteb68a7a76 dans le forum Électronique
    Réponses: 16
    Dernier message: 09/01/2014, 17h17
  3. flowcode (calcul et interruption)
    Par invitec6c4026c dans le forum Électronique
    Réponses: 13
    Dernier message: 07/04/2011, 21h43
  4. FLOWCODE-interruption sur PORTB
    Par invited8a36ace dans le forum Électronique
    Réponses: 3
    Dernier message: 23/01/2011, 17h45
  5. PPE: interruption sous flowcode
    Par invite1cf45d2f dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 08/05/2009, 21h05