TIMER1 qui me compte les fronts montants et les descendant....
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

TIMER1 qui me compte les fronts montants et les descendant....



  1. #1
    minioim

    TIMER1 qui me compte les fronts montants et les descendant....


    ------

    Salut,

    je suis en train de bidouiller mon 16F877 et étant en vacances, je me suis pas baladé avec tout le matos (breadboard, programmeur etc....) du coup je fais de la simu sur proteus.

    je souhaite utiliser le TIMER1 en compteur et là je suis un peu... étonné.

    partout, datasheet comprise, je lis que le TIMER1 compte sur les fronts montant (je l'utilise avec le RC0)
    pour ma simu j'y ai connecté un interrupteur connecté au Vcc et une résistance de pull-down.

    tout va bien, ça compte.... sauf que ça compte les fronts montant et les descendant! quand je ferme l'interrupteur ça compte +1, quand je l'ouvre ça compte aussi +1...

    bien sûr je peux utiliser le prédiviseur en le plaçant sur 1:2. mais j'aimerais bien comprendre pourquoi ça compte les montant et descendant... une idée?

    voilà mon code (trèèèèèès basique)

    Code:
    #include <htc.h>
    int blop = 0;
    
    void interrupt GestionIT()
    {      
       if (INTF==1)
          {
         // mesure = TMR1L*255/15;
          PORTD = TMR1L;
          TMR1L = 0x00;
          blop = PORTB; // enregistrement de la valeur du port B pour permettre le retour à 0 de INTF
          INTF=0;
     	
          }
    
    }
    
    void main()
    {
    //configuration du port D 0 = sortie
    TRISD=0b00000000;
    //mettre la sortie RD7 à 0
    PORTD = 0b00000000;
    
    // autoriser les IT
    
    GIE = 1;
    T0IE = 0;
    T0IF=0;
    PEIE=0;
    
    INTE = 1;
    INTF=0;
    
    // initialisation timer0 et port B, prescaler = 256
    
    TRISB=0xFF;
    PORTB=0;
    OPTION_REG = 0b11000111;
    TMR0 = 0x3D;
    
    // initialisation timer1
    
    TRISC| = 0xFF;
    TMR1H = 0x00;
    TMR1L = 0x00;
    T1CON = 0b00000111;
    
    
    
    
    while(1)
       {
                      
       }
    }

    -----

  2. #2
    gienas
    Modérateur

    Re : TIMER1 qui me compte les fronts montants et les descendant....

    Bonsoir minioim et tout le groupe

    Citation Envoyé par minioim Voir le message
    ... quand je ferme l'interrupteur ça compte +1, quand je l'ouvre ça compte aussi +1 ...
    C'est normal, et tu as même de la chance que ton µC ne soit pas trop rapide.

    En effet, le comptage devrait être plus "rapide".

    Un interrupteur mécanique n'a pas une fermeture et une ouverture franches. Il y a "plein" de rebondissements, qui doivent être filtrés pour ne pas intervenir.

    Il y donc des ouvertures à la fermeture et des fermetures à l'ouverture.

  3. #3
    minioim

    Re : TIMER1 qui me compte les fronts montants et les descendant....

    Je vois ce que tu veux dire...mais je suis sur proteus, qui simule donc j'espérais que la simu soit franche...
    Mais admettons que la simu soit "réaliste" tu penses que quand j'ouvre l'interrupteur (front descendant) ça créé un front montant??
    Parce que quand je suis en mode pas a pas, je peux très clairement identifier le fait que j'ai UN compte sur la fermeture de l'interrupteur et UN compte sur l'ouverture...

  4. #4
    gienas
    Modérateur

    Re : TIMER1 qui me compte les fronts montants et les descendant....

    Citation Envoyé par minioim Voir le message
    J ... mais je suis sur proteus, qui simule donc j'espérais que la simu soit franche ...
    J'ignore aussi si ton simulateur simule ou "réalise" la réalité.

    Citation Envoyé par minioim Voir le message
    ... Mais admettons que la simu soit "réaliste" tu penses que quand j'ouvre l'interrupteur (front descendant) ça créé un front montant? ...
    Dans la vraie vie, c'est ainsi que cela se passe. C'est plus long à la fermeture car il y a des rebondissements mécaniques. Il y en a moins à l'ouverture car on quitte une pression.

    Citation Envoyé par minioim Voir le message
    ... quand je suis en mode pas a pas, je peux très clairement identifier le fait que j'ai UN compte sur la fermeture de l'interrupteur et UN compte sur l'ouverture ...
    Ceci serait un signe de double détection (donc une erreur soft). Pour mettre les choses au clair, je te suggère de remplacer ton switch par un générateur de carré. Lui ne peut pas rebondir. Tu verras ce qu'il se passe vraiment.

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

    Re : TIMER1 qui me compte les fronts montants et les descendant....

    Remplacer le switch par un générateur carré était effectivement l'idée que j'ai eu en descendant manger ^^ je vais mettre en application.... Merci

  7. #6
    minioim

    Re : TIMER1 qui me compte les fronts montants et les descendant....

    bon bon bon...

    j'ai utilisé le signal carré, et ça marchait correctement a priori.

    par acquis de conscience j'ai remis l'interrupteur... de nouveau ça marche correctement... que les fronts montant avec un prediv de 1...

    bon j'avoue que je comprend pas bien. j'ai fait un "rebuild" à un moment, peut être que c'est lié? ou c'est mon cablage de simu qui était foireux? (mais je vois pas comment...) ou encore je ne sais quoi...

    bref ça donne les résultats attendus maintenant... désolé pour le dérangement.

  8. #7
    minioim

    Re : TIMER1 qui me compte les fronts montants et les descendant....

    allons bon... maintenant sans avoir rien changé, j'ai un compte sur le front descendant et un compte double sur le front montant ???? j'ai rien touché au code... bon vais partir du principe que c'est le cablage simu qui est foireux mais bon... je cherche je cherche... a priori, le code que j'ai

    au passage, la simu sous mplab (avec le stimulus sur RC0 en mode "toggle") donne le résultat parfaitement attendu, je penche donc sur une erreur sous proteus niveau cablage ou je ne sais quoi...
    Dernière modification par minioim ; 22/12/2013 à 22h48.

  9. #8
    adrien4607

    Re : TIMER1 qui me compte les fronts montants et les descendant....

    Salut,
    je ne suis pas un grand fanatique des pic, mais je connais assez bien proteus ISIS et je fait toute mes simulations grâce a se logicielle qui pour ma part fonctionne bien (sauf quand je fait des erreurs de programmation et/ou de câblage )
    Normalement sur tes entrées tu a un carré avec les état logique (Rouge = 1 ; Bleu = 0 ; Gris = Indéterminé)
    Si se carré est gris, pense a mettre une résistance pull-up ou pull-down sur ton entée

  10. #9
    minioim

    Re : TIMER1 qui me compte les fronts montants et les descendant....

    salut,

    oui j'avais remarqué ça, j'avais pourtant bien une alternance rouge/bleue déterminée.

    enfin.... le générateur "DCLOCK" fournit un signal qui donne les résultats attendus.
    j'ose espérer que mon signal réel fera la même chose. si ce n'est pas le cas il sera toujours temps de se pencher sur le problème.
    étant pressé par le temps, je vais être un peu moins perfectionniste que d'habitude et ne m'intéresser aux comportements inattendus que si ils posent effectivement problème

Discussions similaires

  1. Détection de fronts (montant et descendant)
    Par invite6ef730be dans le forum Électronique
    Réponses: 16
    Dernier message: 01/04/2013, 20h29
  2. Votre avis sur trio Acoustix : fermacell, panterre, montants
    Par invite9f5b3e3b dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 1
    Dernier message: 02/12/2010, 21h43
  3. Fronts d'ondes
    Par invitecbade190 dans le forum Physique
    Réponses: 3
    Dernier message: 18/10/2010, 07h13
  4. Flowcode peut il répérer les informations sur fronts montants ?
    Par invite95c0d67c dans le forum Électronique
    Réponses: 1
    Dernier message: 25/02/2008, 16h36
  5. Problémes avec fronts montants et codeurs sur un PIC
    Par invited10bcc3e dans le forum Électronique
    Réponses: 6
    Dernier message: 21/05/2006, 09h29
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...