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

BP anti-rebond



  1. #1
    jum0034

    BP anti-rebond


    ------

    salut a tous ,
    j aimerai savoir comment faire une fonction anti rebond pour un BP ,
    sans utiliser les interruptions , mon code principale fais une boucle de min 300microseconde et avec interruption 2 ms .
    le temps d'appuis min du bp est 100ms et max 350ms,

    si vous avez des idée sa m aiderai beaucoup , je suis bloqué

    -----

  2. Publicité
  3. #2
    gcortex

    Re : BP anti-rebond

    tu as la solution logicielle et matérielle

    pourquoi se compliquer la vie avec 100ms min ?

    la solution la moins chère et la plus fiable est la logicielle

    touche appuyée
    attendre 100ms
    touche relachée
    attendre 100ms


  4. #3
    jum0034

    Re : BP anti-rebond

    oui ta solution est bonne mais pendant se temps mon code ne tourne plus,
    merci quand meme

  5. #4
    gcortex

    Re : BP anti-rebond

    bin tu dis au timer de déclencher une interruption pour lire la touche 100ms plus tard

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

    Re : BP anti-rebond

    s est facile pour toi , mais je suis debutant dans la prog, je test mon bp a chaque boucle du prog ,jsuis pommé

  8. #6
    maxitec

    Re : BP anti-rebond

    tu peux toujours montrer ton programme et préciser de quel µC il s'agit.

  9. Publicité
  10. #7
    jum0034

    Re : BP anti-rebond

    s est bon j ai mis une grosse tempo apres appui du bp

    mais si la personne qui va l utilisé reste appuiez trop longtemp, s est mort

    s est sur un pic 18F2525


    void Lecture_Input(void)
    {

    if(BP_ == _active_)
    {
    Delay10KTCYx(30);
    while (BP_ == _active_){}
    Delay10KTCYx(30);
    while (BP_ == _active_){}
    Delay10KTCYx(30);
    while (BP_ == _active_){}

    if ( Flag_mode_repos_ == oui_ && Flag_en_veille == oui_ && Flag_I2C_reception_en_cours == non_ )
    {
    I2C_commande(reception_,etat_, reveil_);
    Flag_I2C_reception_en_cours = oui_;
    }

    Flag_BP_arret_mode = oui_;
    }

    if(Flag_BP_arret_mode == oui_)
    {
    Lecture_Mode();
    }

    if(AP_ == ferme_)
    {
    Flag_AP_position = ferme_;
    }
    else
    {
    Flag_AP_position = ouvert_;
    }

    if(Flag_BP_arret_mode == oui_) //Test si il y a eut appui sur le BP dans lecture Input
    {
    if( chargdriver == oui_ )
    {
    Initialisation_Variables_BP_ac tif(); //Initialisation des variables pour chaque mode
    Flag_BP_arret_mode = non_; //Reset Flag BP
    }
    else
    {
    Initialisation_Variables();
    Init_variables_I2C();
    Flag_BP_arret_mode = non_; //Reset Flag BP
    }
    }
    }

  11. #8
    BOB92
    Animateur Bricolage et décoration

    Re : BP anti-rebond

    Bonjour
    et pourquoi pas une misze en forme matérielle en utilisant le contact Repos et le contact Travail du Bouton poussoir, avec un bistable derrière.
    Là pas de propblème , celà fonctionne dans tous les cas ( vieillissement, encrassement, type de pression de l'humain, ...).
    Et pas de système d'interruption, de boucle, de filtrage ... qui seront toujours mis en défaut un jour ou l'autre (et qui grèvent la charge du µ ).
    Les choses les plus simples sont quelquefois les plus efficaces ....
    Cordialement

  12. #9
    invite03481543

    Re : BP anti-rebond

    Certainement, mais il est dommage d'alourdir le hard quand quelques lignes de code solutionne le problème définitivement.

    Gcortex à raison il suffit d'utiliser l'entrée RB0/INT par exemple et de la gérer par interruption sur front montant ou descendant.

    Front montant si le bit 6 (INTEDG) du registre OPTION_REG est à 1.

    Front descendant si le bit 6 (INTEDG) du registre OPTION_REG est à 0.

    L' interruption est autorisée si le bit 4 (INTE) du registre INTCON est à 1, ainsi que GIE.

    Lorsqu'une interruption valide a eu lieu, le bit 1 (INTF) du registre INTCON passe à 1, il faut juste penser à le remettre à 0 par soft une fois l'interruption gérée pour permettre une nouvelle interruption.
    Lorsque l'interruption sur RB0 intervient tu déclenches la temporisation contenant une variable qui déclenchera le processus dans le programme principal.
    Le timer1 sera utilisé pour générer la tempo.

    Exemple avec un quartz à 4MHz, action BP sur front descendant:

    Code:
    volatile char action;
    // volatile car variable modifiable en arrière plan dans
    //l'interruption
    
    TMR1H = 0x9E ;       // on charge Timer1 avec un offset pour avoir 0,1s
    TMR1L = 0x58;
    INTE=1;
    INTF=0;
    TMR1IF=0;
    TMR1IE=0;
    INTEDG=0;
    GIE=1;
    
    void interrupt() // appel selon le compilo utilisé
    {
    if(INTF)
      {
      appui = 1;
      TMR1IE=1;  // on autorise l'interruption du timer1
      INTF = 0;
      }
    
     if(TMR1IF == 1 && appui == 1) // la tempo sera déclenché si appui sur l'entrée RB0 
       {
            action = 1 ;   // déclenche le processus lié au BP dans le prog principal
                              // action devra être remis à 0 à l'issu du processus
            appui = 0;
    
       TMR1H = 0x9E ;       // on recharge Timer1
       TMR1L = 0x58;   
       TMR1IF = 0 ;  // on remet le flag à 0
       }
    
     }
    C'est un exemple, j'ai pas vérifié mais c'est le principe.
    @+
    Dernière modification par HULK28 ; 19/09/2008 à 01h56.

  13. #10
    jum0034

    Re : BP anti-rebond

    merci les mec , sa gere

  14. #11
    marmotte

    Re : BP anti-rebond

    Citation Envoyé par jum0034 Voir le message
    merci les mec , sa gere
    ouais grave t as vu tactac
    If the world doesn't change today, what would it be tomorrow?

Discussions similaires

  1. systeme anti rebond
    Par kevin35 dans le forum Électronique
    Réponses: 11
    Dernier message: 12/05/2011, 16h56
  2. anti rebond
    Par florian85 dans le forum Électronique
    Réponses: 9
    Dernier message: 02/05/2011, 08h48
  3. anti rebond
    Par mattheo25 dans le forum Électronique
    Réponses: 7
    Dernier message: 26/07/2007, 13h03
  4. anti rebond
    Par bouly94 dans le forum Électronique
    Réponses: 29
    Dernier message: 17/07/2007, 12h56
  5. Anti rebond
    Par zanzeoo dans le forum Électronique
    Réponses: 3
    Dernier message: 07/08/2004, 10h56
Découvrez nos comparatifs produits sur l'informatique et les technologies.