Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Boucle pour compter les rebonds
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » mer. 12 août 2015 20:32

Bonjour à tous ,

Je désire faire une tuto, pour expliquer le phénomène de rebonds quand on appui sur un BP.

J'ai bien ma courbe vu à l'oscillo, mais j'aurais souhaité , tant qu'a faire , faire une vidéo pour démontré la véracité et l'utilité d'un anti-rebond .

L'idée serait idéalement de "compter" le nombre de pic ou d'états haut différents sur un appui ?

LE hic c''est donc qu'il faille compter un front descendant , pour ne pas compter le fait de la durée de l'appui ( si on laisse le doigt trop longtemps par exemple) .
Il est faisable de montrer que l'appui sur un BP, peut revenir a la valeur initiale sans anti-rebonds, mais je ne sais pas si c'est faisable avec la résolution d'un pic poussé à sa vitesse max de compter le nombre de rebonds.

Je dispose d'un PIC 18F45K22 et d'un quartz externe de 8Mhz sur ma carte easyPIC .
Le nombre de Pic pourrait être affiché sur digit 7 segments présent sur ma carte également . ( utilisation du PORT A et D pour les afficheurs)

Merci à vous.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boucle pour compter les rebonds
mazertoc
Passioné
Passioné
Messages : 201
Enregistré en : juillet 2015
Localisation : Auvernha

#2 Message par mazertoc » jeu. 13 août 2015 09:22

Avec un µC tu vas visualiser uniquement les rebonds pris en compte par le circuit d'entrée.
Pour bien comprendre le phénomène il faut un oscilloscope.
Attention aux confusions (pic de tension et pic16f et colégrame).

Il faut aussi définir la finalité de l'anti-rebond.

Ne pas oublier les solutions hard.

Boucle pour compter les rebonds
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » jeu. 13 août 2015 11:57

mazertoc a écrit :Source du message Avec un µC tu vas visualiser uniquement les rebonds pris en compte par le circuit d'entrée.

D'accord donc tu entends par là, seulement le fait de resté appuyer trop longtemps en fait ?

Pour bien comprendre le phénomène il faut un oscilloscope.

Oui Oui j'ai fais la courbe

Attention aux confusions (pic de tension et pic16f et colégrame).

:mrgreen:
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boucle pour compter les rebonds
Pat
Débutant
Débutant
Messages : 43
Enregistré en : juillet 2015

#4 Message par Pat » jeu. 13 août 2015 12:06

Tu devrais poster ton code et l'oscillogramme

Boucle pour compter les rebonds
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#5 Message par Jérémy » jeu. 13 août 2015 17:39

Pat a écrit :Source du message Tu devrais poster ton code et l'oscillogramme

Voici un début de tuto qui n'attends que vos commentaires et idée .
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boucle pour compter les rebonds
Pat
Débutant
Débutant
Messages : 43
Enregistré en : juillet 2015

#6 Message par Pat » ven. 14 août 2015 08:49

10 ms c est trop court il faut bien 100ms.
De plus il faut attendre le relâchement du bouton après.
Sinon , en restant appuyé la fonction se fera plusieurs fois, évidement si c 'est le but c'est correct , mais généralement ça ne l'est pas.

Boucle pour compter les rebonds
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#7 Message par Jérémy » ven. 14 août 2015 10:04

10 ms c est trop court il faut bien 100ms.

Oui , il faut ajuster suivant la vestusté et la mécanique des BP . avec 10 ms , c'est top dans mon cas .
De plus il faut attendre le relâchement du bouton après.
Sinon , en restant appuyé la fonction se fera plusieurs fois, évidement si c 'est le but c'est correct , mais généralement ça ne l'est pas.

Oui , je l'ai fais dans la deuxième méthode !

Mais le but de ca post, est de savoir comment on pourrait calculer le nombre de rebonds lors d'un appui sur un BP? et si c'est possible surtout
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boucle pour compter les rebonds
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#8 Message par Jérémy » sam. 15 août 2015 21:46

Hello,

Personne n'a d’idée sur la façon de faire pour compter le nombre de rebonds, lors d'un appui sur un BP ? est-ce seulement possible vous me direz ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Boucle pour compter les rebonds
Pat
Débutant
Débutant
Messages : 43
Enregistré en : juillet 2015

#9 Message par Pat » dim. 16 août 2015 15:10

il faut faire des tests avec btfss et btfsc et incrémenter 2 compteurs un up un down en plus limiter en temps avec un autre compteur

un exemple non testé, juste pour donner l'idée
vérifier les minuscules majuscules
déclarer 3 variables up down count
et faire un affichage des valeurs trouvées

Code : Tout sélectionner


clrf up
clrf down
clrf count


; Attente du premier contact
NOpush
BTFSC  PORTA
,0
goto NOpush

;Départ des boucles de compteurs


; tant que état bas
pushDown
BTFSS  PORTA
,0
goto Pushup
incf count
,f
btfss STATUS
,Z
goto EndTime
goto pushDown

; fin état bas alors +1 down
Pushup
incf down
,f

PushUp_a
BTFSC  PORTA
,0
goto PushDn
incf count
,f
btfss STATUS
,Z
goto EndTime
goto pushUp_a

; fin état haut alors +1 up
; et reboucler
PushDn
incf up
,f
goto pushDown

; fin du test pendant environ 8 * 256µs (un peu court mais il faudrait un compteur 16 bits pour faire mieux)
EndTime

;affiche up et down


Boucle pour compter les rebonds
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#10 Message par Jérémy » dim. 16 août 2015 17:03

Hello Pat,

il faut faire des tests avec btfss et btfsc

Je ne connais pas ces termes, qui sont certainement de l'ASM .

Je rappelle que ce forum est dédié (pour le moment du moins), au langage C . En effet l'ASM est un langage très particulier . Loin de moi l'idée de dire qu'il est bon ou mauvais, c'est un langage de haut niveau très peu convivial et réservé et des personnes expérimentées.

L'ASM va au cœur des choses, mais sans le coté convivial . Aujourd'hui les compilateurs sont de pus en plus perfectionnés, sans égaler l'ASM, ils apportent une solution largement plus abordables, pour des novices . C'est pourquoi j'ai fais le choix de ne parler que du C, et ainsi éviter les comparaisons trop souvent houleuses à ce sujets . Merci de respecter ce choix !

Je vais essayer avec ta méthode, a savoir utilisé 3 compteurs un pour les fronts montants, un pour les descendant, et un dernier pour limiter les calculs dans le temps .

je ne crois pas avoir les connaissances requises pour essayer de faire cela ! Mais qui ne tente rien n'as rien !

PS: Si tu as la même en chose en C je suis preneur ! ;)
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 35 invités