Portier Wireless Le portier sans fil est un système bidirectionnel basé sur un microcontrôleur PIC32MX130F064B-I/SS et un module radio 868 MHz, permettant à un visiteur d’envoyer une requête depuis l’extérieur via un bouton alimenté par piles, et à l’occupant du bureau de répondre par des signaux lumineux et sonores grâce à une unité intérieure alimentée en USB, le tout avec appairage sécurisé et gestion autonome de l’énergie.
Chargement...
Recherche...
Aucune correspondance
Mc32Debounce.h
Aller à la documentation de ce fichier.
1#ifndef MC32DEBOUNCE2_H
2#define MC32DEBOUNCE2_H
3
4
5// Mc32Debounce.h
6
7// C. HUBER 19/02/2014 Portage sur PIC32MX
8// Attention int1 transformé en uint8
9
10// Fonctions pour la gestion de l'anti-rebond d'un switch
11//
12//
13// Principe : Il est nécessaire d'appeler cycliquement la fonction DoDebounce
14// pour chaque switch. Suggestion cycle de 1 ms
15//
16// Pour la gestion du switch, il y a 3 fonctions à disposition :
17// DebounceGetInput fourni l'état du switch aprés anti-rebond
18// DebounceIsPressed true indique que l'on vient de presser la touche
19// DebounceIsReleased true indique que l'on vient de relacher la touche
20// DebounceClearPressed annule indication de pression sur la touche
21// DebounceClearReleased annule indication de relachement de la touche
22//
23// Remarques : toute les fonctions utilisent un descripteur de touche
24// un état 0 indique une touche pressée
25//
26//---------------------------------------------------------------------------
27
28#include <stdbool.h>
29#include <stdint.h>
30
31// définitions des types qui seront utilisés dans cette application
32
33// Etats du système antirebond
38
39// New
40typedef struct {
41 uint8_t KeyPressed :1; // événement touche pressée
42 uint8_t KeyReleased : 1; // événement touche relachée
43 uint8_t KeyPrevInputValue : 1; // valeur précédente de la touche
44 uint8_t KeyValue : 1; // valeur finale (image) de la touche
45 } s_bits;
46
47// structure du descripteur
48typedef struct {
49 E_DebouceStates DebounceState; // état de l'antirebond
50 uint8_t DebounceCounter; // compteur
53
55// POUR CHAQUE SWITCH DONT ON VEUT EFFECTUER L'ANTI-REBOND DANS L'APPLICATION.
56// IL FAUDRA DEFINIR UNE VARIABLE DU TYPE S_SwitchDescriptor
58//
59//
60// DoDebounce (S_SwitchDescriptor *Descriptor, boolean InputValue)
61// Routine effectuant la gestion de l'anti-rebond d'un switch
62// dont l'adresse de la structure est passée en paramètre.
63// La valeur du switch lue sur le port est a passer lors de l'appel
64//
65// Entrée: un pointeur sur la structure du switch
66// la valeur du switch lue sur le port
67//
68// Sortie: la structure mise à jour
69// le bit KeyValue qui donne la valeur du switch après anti-rebond
70// le bit KeyPressed qui est mis à 1 dès que l'on presse sur le switch
71// ce bit n'est pas resetté par cette fonction mais doit l'être par l'application
72// si elle l'utilise.
73// le bit KeyReleased qui est mis à 1 dès que l'on relâche sur le switch
74// ce bit n'est pas resetté par cette fonction mais doit l'être par l'application
75// si elle l'utilise
76//
77
78void DoDebounce (S_SwitchDescriptor *Descriptor, bool InputValue);
79
80
81/********************************************************************************************/
82// DebounceInit (S_SwitchDescriptor *pDescriptor) :
83// Routine effectuant l'initialisation de la structure d'un switch
84// dont l'adresse de la structure est passée en paramètre.
85//
86// Entrée: un pointeur sur la structure du switch
87//
88
89void DebounceInit (S_SwitchDescriptor *pDescriptor);
90
91// DebounceGetInput fourni l'état du switch aprés anti-rebond
92bool DebounceGetInput (S_SwitchDescriptor *pDescriptor);
93
94// DebounceIsPressed true indique que l'on vient de presser la touche
95bool DebounceIsPressed (S_SwitchDescriptor *pDescriptor);
96
97// DebounceIsReleased true indique que l'on vient de relacher la touche
98bool DebounceIsReleased (S_SwitchDescriptor *pDescriptor);
99
100// DebounceClearPressed annule indication de pression sur la touche
101void DebounceClearPressed (S_SwitchDescriptor *pDescriptor);
102
103// DebounceClearReleased annule indication de relachement de la touche
104void DebounceClearReleased (S_SwitchDescriptor *pDescriptor);
105
106#endif
void DoDebounce(S_SwitchDescriptor *Descriptor, bool InputValue)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Definition Mc32Debounce.c:55
E_DebouceStates
Definition Mc32Debounce.h:34
@ DebounceWaitStable
Definition Mc32Debounce.h:36
@ DebounceWaitChange
Definition Mc32Debounce.h:35
bool DebounceGetInput(S_SwitchDescriptor *pDescriptor)
Definition Mc32Debounce.c:117
bool DebounceIsPressed(S_SwitchDescriptor *pDescriptor)
Definition Mc32Debounce.c:122
void DebounceClearReleased(S_SwitchDescriptor *pDescriptor)
Definition Mc32Debounce.c:137
void DebounceInit(S_SwitchDescriptor *pDescriptor)
Definition Mc32Debounce.c:107
void DebounceClearPressed(S_SwitchDescriptor *pDescriptor)
Definition Mc32Debounce.c:132
bool DebounceIsReleased(S_SwitchDescriptor *pDescriptor)
Definition Mc32Debounce.c:127
Definition Mc32Debounce.h:48
E_DebouceStates DebounceState
Definition Mc32Debounce.h:49
s_bits bits
Definition Mc32Debounce.h:51
uint8_t DebounceCounter
Definition Mc32Debounce.h:50
Definition Mc32Debounce.h:40
uint8_t KeyPrevInputValue
Definition Mc32Debounce.h:43
uint8_t KeyPressed
Definition Mc32Debounce.h:41
uint8_t KeyReleased
Definition Mc32Debounce.h:42
uint8_t KeyValue
Definition Mc32Debounce.h:44