-
Notifications
You must be signed in to change notification settings - Fork 0
/
PR_debounce.c
106 lines (88 loc) · 4.49 KB
/
PR_debounce.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
* debounce.c
*
* Created on: Jul 4, 2017
* Author: USER
*/
/*******************************************************************************************************************************//**
*
* @file Template.c
* @brief Breve descripción del objetivo del Módulo
* @date Fecha de creacion del archivo XX/XX/XXXX
* @author Nombre, Apellido
*
**********************************************************************************************************************************/
/***********************************************************************************************************************************
*** INCLUDES
**********************************************************************************************************************************/
#include <PR_debounce.h>
#include"DR_Infotronic.h"
#include"DR_tipos.h"
#include"DR_gpio.h"
/***********************************************************************************************************************************
*** DEFINES PRIVADOS AL MODULO
**********************************************************************************************************************************/
#define CANT_ENTRADAS 5
#define ACEPTAR_ESTADO 8
/***********************************************************************************************************************************
*** MACROS PRIVADAS AL MODULO
**********************************************************************************************************************************/
/***********************************************************************************************************************************
*** TIPOS DE DATOS PRIVADOS AL MODULO
**********************************************************************************************************************************/
/***********************************************************************************************************************************
*** TABLAS PRIVADAS AL MODULO
**********************************************************************************************************************************/
/***********************************************************************************************************************************
*** VARIABLES GLOBALES PUBLICAS
**********************************************************************************************************************************/
__RW uint8_t BufferEntradas=0;
/***********************************************************************************************************************************
*** VARIABLES GLOBALES PRIVADAS AL MODULO
**********************************************************************************************************************************/
__RW static uint8_t Contador_Estados[CANT_ENTRADAS];
/***********************************************************************************************************************************
*** PROTOTIPO DE FUNCIONES PRIVADAS AL MODULO
**********************************************************************************************************************************/
/***********************************************************************************************************************************
*** FUNCIONES PRIVADAS AL MODULO
**********************************************************************************************************************************/
/***********************************************************************************************************************************
*** FUNCIONES GLOBALES AL MODULO
**********************************************************************************************************************************/
/**
\fn void Debounce (void)
\brief funcion principal
\param void
\return void
*/
void Debounce(void)
{
uint8_t i,lectura=0,cambios;
if (GetPIN ( SW1,BAJO)) lectura|=0x04;
if (GetPIN ( SW2,BAJO)) lectura|=0x08;
if (GetPIN ( SW3,BAJO)) lectura|=0x10;
cambios= BufferEntradas ^ lectura;
if (cambios)
{
for(i=0;i< CANT_ENTRADAS;i++)
{
if (cambios & (0x01 << i))
{
Contador_Estados[i]++;
if (Contador_Estados[i]== ACEPTAR_ESTADO)
{
BufferEntradas= BufferEntradas ^ (0x01 << i);
Contador_Estados[i]=0;
}
}
else
Contador_Estados[i]=0;
}
}
else
for(i=0;i< CANT_ENTRADAS;i++)
{
Contador_Estados[i]=0;
}
}