PIC, anti rebonds par le soft
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

PIC, anti rebonds par le soft



  1. #1
    invite7973ef56

    Lightbulb PIC, anti rebonds par le soft


    ------

    Bonjour a tous,

    Je viens de me lancer dans un projet: recycler un vieux synthétiseur en clavier maitre midi. J'utilise pour ca un pic 16f877A en m'inspirant du projet MIDI keyboard encoder.
    Mais voila: les sources de ce projet ne semble pas gèrer les anti rebonds des touches du clavier. J'ai beau me plonger dans le code, j'ai du mal a voir comment réaliser ca... Ca fait trois ans que je n'ai pas toucher un pic et... Heu... Ben voila, j'ai du mal.
    Bon, j'ai cru comprendre que l'idée c'est de mettre une interruption avec le timer0. Mais j'arrive pas a bien visualiser comment pour ne pas troubler le scan des touches ni la transmission...
    Bref, le code légèrement modifié par moi-même et que donc j'utilise est ici: http://poulet-rock.ifrance.com/proje...ginal_midi.asm (désolé pour la pub ifrance, c'est mon site tout nul...). Et je suis ouvert à tout conseil. Merci d'avance!

    -----

  2. #2
    Grulou

    Re : PIC, anti rebonds par le soft

    Salut,

    le plus simple c'est ça, je pense que tu y trouveras ton bonheur:

    void Debounce(void)
    {
    unsigned char COUNT = TenMS;

    TMR0 = 0;
    for(;
    {
    if(!BUTTON)
    {
    // reset 10 millisecond COUNT if BUTTON pushed
    COUNT = TenMS;
    }
    else
    {
    // decrement timer COUNT for every Timer0 overflow
    if(T0IF)
    {
    // reset flag
    T0IF = 0;
    // exit on 10 consecutive milliseconds without BUTTON closure
    if(--COUNT == 0) break;
    }
    }

    }
    }


    A+

  3. #3
    invite7973ef56

    Re : PIC, anti rebonds par le soft

    Ha ben oui probablement. Mais je travaille en assembleur. Du coup ca complique un peu. Je vais voir si je peuxx adapter ce code.

    Merci!

  4. #4
    Nico G.

    Re : PIC, anti rebonds par le soft

    Bonjour,

    Moi j'utilise ça : io.h (c'est fait pour MikroC normalement mais ça doit pouvoir tourner avec n'importe quel compilo en adaptant un peu).

    En gros tu as les macros suivantes :

    DEBOUNCE_COUNTER_MAX, nombre de passages par le timer avant de réactiver le bouton.

    debounce_low(PRT,PN), fonction qui retourne 1 si le bouton a été enclenché (niveau bas), retourne 0 sinon.

    debounce_high(PRT,PN), idem avec le niveau haut comme actif.

    debounce_timer(PRT,PN), fonction à appeler dans un timer, le bouton correspondant au port PRT et à la broche PN est réactivé après DEBOUNCE_COUNTER_MAX appels à cette fonction.

    debounce_ok(PRT,PN), retourne 1 si le bouton correspondant est réactivé, retourne 0 sinon.

    input(PRT,PN), juste pour dire que PRT.PN est une entrée.

    output(PRT,PN), idem pour une sortie.

    debounce_init(PRT,PN), initialise la gestion de l'anti-rebond pour un port et une broche donnée.

    Exemple d'utilisation : example.c

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Probleme De Rebonds ??
    Par DG85 dans le forum Électronique
    Réponses: 12
    Dernier message: 02/01/2007, 17h06
  2. [TERMINE] Régulation de chauffage par PIC par fil pilote
    Par azertylr dans le forum Projets électroniques
    Réponses: 296
    Dernier message: 30/08/2006, 18h01
  3. bascule JK et anti-rebonds
    Par invite4c74dcfe dans le forum Électronique
    Réponses: 12
    Dernier message: 17/02/2006, 18h18
  4. rebonds atmosphériques
    Par invite71b1f7de dans le forum Astronautique
    Réponses: 20
    Dernier message: 13/12/2005, 14h18
Découvrez nos comparatifs produits sur l'informatique et les technologies.