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 ---
- 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 ---
RC anti-rebond
RC anti-rebond
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
vu le niveau d'energie emagasiné (sous 5V) , je pense que le condo ne risque rien .
moi je fais comme cela .. pour pouvoir laisser connecté mon ICSP, pendant la phase de deboguage
Reset via le PICKit ou en court-circuitant ( strap)
moi je fais comme cela .. pour pouvoir laisser connecté mon ICSP, pendant la phase de deboguage
Reset via le PICKit ou en court-circuitant ( strap)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
RC anti-rebond
RC anti-rebond
-
cyril13110
Confirmé- Messages : 742
- Âge : 41
- Enregistré en : avril 2016
- Localisation : 13
hello,
sur mes pics jai opté pour la solution de compter les rebonds et d'activer l'action sur 1 seul que jai choisi.
ca reduit le nombre de composants et ca rajoute quelques lignes par bp, mais cest plutot efficaces.
et le réglage du seul revient a regler la réactivité du bp.
je rajoute du code
sur mes pics jai opté pour la solution de compter les rebonds et d'activer l'action sur 1 seul que jai choisi.
ca reduit le nombre de composants et ca rajoute quelques lignes par bp, mais cest plutot efficaces.
et le réglage du seul revient a regler la réactivité du bp.
je rajoute du code
Code : Tout sélectionner
'gestion du BP +
if (portc.0=1) and (cpt_up<10) then
inc(cpt_up)
end if
if (portc.0=0)then
cpt_up=0
end if
if (cpt_up=3) then
inc(selec_f)
end if
'fin gestion BP +
Modifié en dernier par cyril13110 le jeu. 22 août 2019 07:35, modifié 1 fois.
RC anti-rebond
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Gérard a écrit :C'est pour des entrées. Donc 10K, 100n et 390 ohm vers l'entrée.
OK, je ferai comme ça.
le filtrage soft , avec timer (en mode pooling) est aussi une solution sans rajout de condo + R.
la solution la plus simple est de relire l'eat apres une tempo laissant passer les rebonds
Code : Tout sélectionner
// extrait test clavier 5 touches: 4 fleche + 1 BP validation (en C18)
// application Menu DDS sur LCD
if (BP_Incr==0)
{
Tempo(50000L);
if (BP_Incr==0)
{
Tempo(10000L);
i=4; // code de la touche appuyée
}
}
et quid de la fonction lecture bouton de mikroC ?
Code : Tout sélectionner
Button
Prototype unsigned short Button(unsigned short *port, unsigned short pin, unsigned short time, unsigned short active_state);
Returns
255 if the pin was in the active state for given period.
0 otherwise
Description Function eliminates the influence of contact flickering upon pressing a button (debouncing).
Parameter port specifies the location of the button; parameter pin is the pin number on designated port and goes from 0..7; parameter time is a debounce period in milliseconds; parameter active_state can be either 0 or 1, and it determines if the button is active upon logical zero or logical one.
RC anti-rebond
- Gérard
Expert- Messages : 1661
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
J'utilise l'interruption du Timer1 toutes les 100ms et ne souhaite pas utiliser de tempo.
Je viens de lire l'aide sur Button, est ce que c'est clair pour vous?
Je viens de lire l'aide sur Button, est ce que c'est clair pour vous?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
RC anti-rebond
Je viens de lire l'aide sur Button, est ce que c'est clair pour vous?
Bonjour,
L’aide de la fonction Button manque un peu de clarté.
Button(port, bit, temps d'appui en ms, état logique actif)
Exemple en Mikrobasic :
If Button(portA,2,10,1) then <Action 1> end if
On teste l'appui sur un bouton poussoir relié à la broche RA2 pendant 10 ms pour faire l'Action 1.
La valeur "Temps d'appui" est à adapter au matériel.
RC anti-rebond
- Gérard
Expert- Messages : 1661
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
Bonjour,
Pourquoi dans leur exemple ils utilisent oldstate?
Et que ce passe-t-il si l'interruption tombe dans la tempo?
EDIT : correction de 2 fautes.
Pourquoi dans leur exemple ils utilisent oldstate?
Et que ce passe-t-il si l'interruption tombe dans la tempo?
EDIT : correction de 2 fautes.
Modifié en dernier par Gérard le jeu. 22 août 2019 15:43, modifié 2 fois.
RC anti-rebond
Voir le chapitre "Utilisation de la routine BUTTON" en Pascal mais facile à convertir en Basic.
https://www.google.fr/url?sa=t&rct=j&q= ... rZTg2s1Md6
https://www.google.fr/url?sa=t&rct=j&q= ... rZTg2s1Md6
RC anti-rebond
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Gérard a écrit :Bonjour,
Pourquoi dans leur exemple ils utilise oldstate?
Et que ce passe-t-il si la l'interruption tombe dans la tempo?
oldstate sert à memoriser l'etat du bouton
pour detecter l'appui et le relachement
je ne connais pas en detail le deploiement du code genéré par cette fonction Button
* leur code _Button n'est pas accessible.
je suppose l'utilisation d'un timer en mode pooling
dans ce cas, une interruption externe ne changerait pas grand chose, SAUF si des traitements longue durée ( ex > 1mS)
sont fait dans l'interruption
Code : Tout sélectionner
//test button
#define BP1 &PORTB,1 // RB1
bit oldstate;
#define BP1 &PORTB,1 // RB1
bit oldstate;
......
void main()
{
// .. some init
//....
ANSELC=0;
TRISB1_bit=1;
...
do
{
UART1_Write_CText("Test appui BP1 ( doit durer>=100mS) : ");
if (Button( BP1, 100, 1)) // Detect logical one
{
oldstate = 1; // Update flag
Led_Rouge=0;
UART1_Write('1');
}
if (oldstate && Button(BP1, 100, 0)) // Detect one-to-zero transition
{
Led_Rouge=1;
oldstate = 0; // Update flag
UART1_Write('0');
}
CRLF1();
Delay_ms(1000);
} while(1);
durée anti-rebond volontairement mise à 100mS pour bien saisir le fonctionnement
si maintenu à zero pendant longtemps ..pas de rafraichissement button qui était à zero
jusqu'à ce qu'on relache BP1
Test appui BP1 ( doit durer>=100mS) : 1 BP au repos (tirage interne au +VCC)
Test appui BP1 ( doit durer>=100mS) : 1
Test appui BP1 ( doit durer>=100mS) : 1
Test appui BP1 ( doit durer>=100mS) : 1
Test appui BP1 ( doit durer>=100mS) : 0 appuyé > 100mS, puis relaché
Test appui BP1 ( doit durer>=100mS) : 1
Test appui BP1 ( doit durer>=100mS) : 1
Test appui BP1 ( doit durer>=100mS) : 0
Test appui BP1 ( doit durer>=100mS) : maintenu à Zero
Test appui BP1 ( doit durer>=100mS) :
Test appui BP1 ( doit durer>=100mS) :
Test appui BP1 ( doit durer>=100mS) : maintenu à Zero
Test appui BP1 ( doit durer>=100mS) : 1 relaché
Test appui BP1 ( doit durer>=100mS) : 1
Test appui BP1 ( doit durer>=100mS) : 1
Test appui BP1 ( doit durer>=100mS) : 1
Test appui BP1 ( doit durer>=100mS) : 0 appuyé > 100mS, puis relaché
Test appui BP1 ( doit durer>=100mS) : 1
Test appui BP1 ( doit durer>=100mS) : 1
Nota:
lien SONNELEC donné par PSPIC tres instructif .. !
Retourner vers « Coin Fourre-tout »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 126 invités