0% encontró este documento útil (0 votos)
24 vistas9 páginas

Ejercicios de GPIO en Microprocesadores

Cargado por

Jhony Lopez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Temas abordados

  • Interrupciones,
  • Frecuencia,
  • Control de dispositivos,
  • GPIO,
  • Estructura de control,
  • Proyectos de automatización,
  • Entradas y salidas,
  • Documentación,
  • Interacción usuario-dispositiv…,
  • Simulación
0% encontró este documento útil (0 votos)
24 vistas9 páginas

Ejercicios de GPIO en Microprocesadores

Cargado por

Jhony Lopez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Temas abordados

  • Interrupciones,
  • Frecuencia,
  • Control de dispositivos,
  • GPIO,
  • Estructura de control,
  • Proyectos de automatización,
  • Entradas y salidas,
  • Documentación,
  • Interacción usuario-dispositiv…,
  • Simulación

Microprocesadores I

2-631 - Automatización y Robótica

TP N° 1
GPIO - Interrupciones
Profesor: Marcelo Vieytes
Ayte. TP: Prof. Ariel Acuña

Alumnos: Barreiros, Gabriela Ayelen

Fecha de presentación: 03 /10 /2023

Calificación: ________________ Fecha: __ /__ /____

Firma del docente: __________________


TP N°1 – GPIO
2-631 Microprocesadores I – Prof. Marcelo Vieytes – Prof. Ariel Acuña

Materiales
Para todos los ejercicios se usarán, además de la placa de desarrollo, dos LED, dos pulsadores,
resistencias necesarias y un protoboard donde conectar todo.

Informe
Para la entrega del informe (en formato electrónico) se pide:
 Archivo editado con la carátula debidamente completada con los integrantes del grupo.
 Foto o escaneo de esta hoja firmada con el visto del docente cuando corrobora que lo
implementado funciona como se pidió.
 Un diagrama o circuito eléctrico del armado donde se especifiquen valores de componentes y
terminales utilizados de la placa de desarrollo.
 El código implementado para la solución y una breve descripción de lo que hace cada parte.

Enunciados
Cada uno de los siguientes puntos debe estar resuelto aplicando interrupciones de GPIO, demora anti-
rebote por software y utilizando el systick para medir los tiempos necesarios. Es conveniente armar el
sistema completo (los dos pulsadores y los dos LEDs) para luego poder desarrollar los puntos pedidos.
1. Se pide implementar lo necesario para que, cada vez que se presiona el pulsador 1, el LED 1
cambia de estado (si está apagado se enciende y si está encendido se apaga). El estado inicial del
LED es apagado.

Visto: __________________

2. Se pide programar lo necesario para que, cada vez que se presiona el pulsador 2, el LED 2
comience a parpadear con una frecuencia de 1Hz (500mS encendido y 500mS apagado) si
estuviese apagado o que se apague si estuviese parpadeando.

Visto: __________________

3. Se pide combinar ambos ejercicios de modo tal que, cuando se presiona el pulsador 1 el LED 1 se
encienda o apague y si se presiona el pulsador 2, el LED 2 parpadee (a la misma frecuencia que
antes) o se apague.

Visto: __________________
4. Implementar el código necesario para logra que el LED 1 se mantenga encendido por el tiempo
que permanece en nivel bajo el pulsador 1 y luego inicie un parpadeo a la frecuencia determinada
por ese tiempo, es decir, si se mantiene presionado el pulsador 1 por 750mS, el LED encenderá
750mS y se apagará por un tiempo igual en forma continua (Ayudín en gel para no salpicar:
considerar interrumpir por ambos flancos para medir tiempo). Si se vuelve a presionar el pulsador
1 se renueva el tiempo. Se debe apagar el LED 1 cuando se presiona el pulsador 2, cuya acción se
debe indicar por un pequeño destello (de 200mS) del LED 2.

Visto: __________________

2 de 9
TP N°1 – GPIO
2-631 Microprocesadores I – Prof. Marcelo Vieytes – Prof. Ariel Acuña

Circuito eléctrico

CONEXIONES

RASPBERRY PI PICO W RASPBERRY PI PICO


PIN CONEXION PIN CONEXION
- SWCLK 4 GPIO_2
- SWD|O 5 GPIO_3
1 GPIO_0 7 GPIO_5
2 GPIO_1 6 GPIO_4
COMPONENTES EXTERNOS
4 GPIO_2 PULSADOR 1
9 GPIO_6 PULSADOR 2
34 GPIO_28 LED1
29 GPIO_22 LED2

3 de 9
TP N°1 – GPIO
2-631 Microprocesadores I – Prof. Marcelo Vieytes – Prof. Ariel Acuña

Enunciados

1. Se pide implementar lo necesario para que, cada vez que se presiona el pulsador 1, el LED 1
cambia de estado (si está apagado se enciende y si está encendido se apaga). El estado inicial del
LED es apagado.
CODIGO:

#include <stdio.h>
#include "pico/stdlib.h"
#include "systick.h"

#define REBOTE 30 //VALOR EN MS DEMORA ANTIRREBOTE


#define PULS1 2 // DEFINO EL PULSADOR 1 EN 2
#define LED1 28 // DEFINO LED 1 EN 28

volatile uint32_t anti; // DECLARO VARIABLE PARA FUNCION ANTIRREBOTE

void gpio_callback(uint gpio, uint32_t evento); //PROTOTIPO DE LA FUNCION CALLBACK QUE ATENDERA LA INTERRUPCION

int main(){
gpio_init(LED1); //HABILITO GPIO DE LED1 (28)
gpio_init(PULS1); //HABILITO GPIO DE PULS1 (2)
gpio_set_dir(LED1, GPIO_OUT); //SETEO LED1 COMO SALIDA
gpio_set_dir(PULS1, GPIO_IN); //SETEO PULS1 COMO ENTRADA
gpio_pull_up(PULS1); //PULS1 CON PULL UP INTERNO
gpio_set_input_hysteresis_enabled(PULS1,true); //PULS1 CON HISTERESIS

gpio_set_irq_enabled_with_callback(PULS1, GPIO_IRQ_EDGE_FALL,true, gpio_callback);


//HABILITO INTERRUPCION PARA PULS1 POR FLANCO DESCENDENTE Y CONFIGURA LA FUNCION DE CALLBACK

stdio_init_all();
init_systick();

while(1){ //BUCLE
if((anti)&&(anti <= get_systick())){ //CONSULTO ANTIRREBOTE
anti=0; //INDICO EN 0 PARA QUE VUELVA A ENTRAR A LA INTERRUPCION
if (gpio_get(PULS1)==0){ //MIENTRAS EL PULS1 ESTE PRESIONADO ESTE INDICARA UN VALOR DE 0
gpio_put(LED1,(!(gpio_get(LED1)))); //CAMBIO EL ESTADO DEL LED AL OPUESTO DEL QUE ESTABA
}
}
}
}

void gpio_callback(uint gpio, uint32_t evento){ //DEFINIMOS LA FUNCION CALLBACK


if((gpio==PULS1)&&(evento==GPIO_IRQ_EDGE_FALL)){ //CONSULTO EL N° DE GPIO Y EL TIPO DE EVENTO
if(anti==0){ //CONSULTO SI ESTA INICIALIZADO EN 0
anti = get_systick() + REBOTE; // CARGO EN LA VARIABLE ANTI EL VALOR DEL ANTIRREBOTE MAS CONTADOR
}
}
}

4 de 9
TP N°1 – GPIO
2-631 Microprocesadores I – Prof. Marcelo Vieytes – Prof. Ariel Acuña
2. Se pide programar lo necesario para que, cada vez que se presiona el pulsador 2, el LED 2
comience a parpadear con una frecuencia de 1Hz (500mS encendido y 500mS apagado) si
estuviese apagado o que se apague si estuviese parpadeando.
CODIGO:

#include <stdio.h>
#include "pico/stdlib.h"
#include "systick.h"

#define REBOTE 30 //VALOR EN MS DEMORA ANTIRREBOTE


#define PULS2 6 // DEFINO EL PULSADOR 2 EN 6
#define LED2 22 // DEFINO LED 2 EN 22

volatile uint32_t anti; // DECLARO VARIABLE PARA FUNCION ANTIRREBOTE


volatile uint32_t inter; // DECLARO VARIABLE PARA TIEMPO DEL PARPADEO
bool flag = false; // DECLARO VARIABLE BOOLEANA COMO FLAG PARA EL PARPADEO, INICIALIZO EN FALSE

void gpio_callback(uint gpio, uint32_t evento); //PROTOTIPO DE LA FUNCION CALLBACK QUE ATENDERA LA INTERRUPCION

int main(){

gpio_init(LED2); //HABILITO GPIO DE LED2 (22)


gpio_init(PULS2); //HABILITO GPIO DE PULS2 (6)
gpio_set_dir(LED2, GPIO_OUT); //SETEO LED2 COMO SALIDA
gpio_set_dir(PULS2, GPIO_IN); //SETEO PULS2 COMO ENTRADA
gpio_pull_up(PULS2); //PULS2 CON PULL UP INTERNO
gpio_set_input_hysteresis_enabled(PULS2,true); //PULS2 CON HISTERESIS

gpio_set_irq_enabled_with_callback(PULS1, GPIO_IRQ_EDGE_FALL,true, gpio_callback);


//HABILITO INTERRUPCION PARA PULS1 POR FLANCO DESCENDENTE Y CONFIGURA LA FUNCION DE CALLBACK

stdio_init_all();
init_systick();

while(1){ //BUCLE
if((anti)&&(anti <= get_systick())){ //CONSULTO ANTIRREBOTE
anti=0; //INDICO EN 0 PARA QUE VUELVA A ENTRAR A LA INTERRUPCION
if (gpio_get(PULS2)==0){ //MIENTRAS EL PULS2 ESTE PRESIONADO ESTE INDICARA UN VALOR DE 0
flag=(!flag); //CAMBIO EL VALOR DE FLAG POR EL OPUESTO
}
}
if (flag==true){ //CONSULTO SI LA FLAG ES TRUE PARA EL PARPADEO
if((inter <= get_systick())){ //CONSULTO SI PASO EL TIEMPO ENTRE EL CAMBIO DE ESTADO DEL LED
gpio_put(LED2,(!gpio_get(LED2))); //CAMBIO DE ESTADO DEL LED
inter = get_systick() + TIEMPO; // LE SUMO AL CONTADOR EL TIEMPO DEL PARPADEO
}
}
else gpio_put(LED2,false); //SI LA FLAG NO ES TRUE, ES FALSE Y APAGARA EL LED2
}
}

5 de 9
TP N°1 – GPIO
2-631 Microprocesadores I – Prof. Marcelo Vieytes – Prof. Ariel Acuña
void gpio_callback(uint gpio, uint32_t evento){ //DEFINIMOS LA FUNCION CALLBACK
if((gpio==PULS1)&&(evento==GPIO_IRQ_EDGE_FALL)){ //CONSULTO EL N° DE GPIO Y EL TIPO DE EVENTO
if(anti==0){ //CONSULTO SI ESTA INICIALIZADO EN 0
anti = get_systick() + REBOTE; // CARGO EN LA VARIABLE ANTI EL VALOR DEL ANTIRREBOTE MAS CONTADOR
}
}
}

3. Se pide combinar ambos ejercicios de modo tal que, cuando se presiona el pulsador 1 el LED 1
se encienda o apague y si se presiona el pulsador 2, el LED 2 parpadee (a la misma frecuencia
que antes) o se apague.
CODIGO:

#include <stdio.h>
#include "pico/stdlib.h"
#include "systick.h"

#define REBOTE 30 //VALOR EN MS DEMORA ANTIRREBOTE


#define TIEMPO 500 //VALOR EN MS DEMORA DEL PARPADEO
#define PULS1 2 // DEFINO EL PULSADOR 1 EN 2
#define LED1 28 // DEFINO LED 1 EN 28
#define PULS2 6 // DEFINO EL PULSADOR 2 EN 6
#define LED2 22 // DEFINO LED 2 EN 22

volatile uint32_t anti; // DECLARO VARIABLE PARA FUNCION ANTIRREBOTE


volatile uint32_t inter; // DECLARO VARIABLE PARA TIEMPO DEL PARPADEO
bool flag = false; // DECLARO VARIABLE BOOLEANA COMO FLAG PARA EL PARPADEO, INICIALIZO EN FALSE

void gpio_callback(uint gpio, uint32_t evento); /PROTOTIPO DE LA FUNCION CALLBACK QUE ATENDERA LA INTERRUPCION

int main(){

gpio_init(LED1); //HABILITO GPIO DE LED1 (28)


gpio_init(PULS1); //HABILITO GPIO DE PULS1 (2)
gpio_set_dir(LED1, GPIO_OUT); //SETEO LED1 COMO SALIDA
gpio_set_dir(PULS1, GPIO_IN); //SETEO PULS1 COMO ENTRADA
gpio_pull_up(PULS1); //PULS1 CON PULL UP INTERNO
gpio_set_input_hysteresis_enabled(PULS1,true); //PULS1 CON HISTERESIS
gpio_init(LED2); //HABILITO GPIO DE LED2 (22)
gpio_init(PULS2); //HABILITO GPIO DE PULS2 (6)
gpio_set_dir(LED2, GPIO_OUT); //SETEO LED2 COMO SALIDA
gpio_set_dir(PULS2, GPIO_IN); //SETEO PULS2 COMO ENTRADA
gpio_pull_up(PULS2); //PULS2 CON PULL UP INTERNO
gpio_set_input_hysteresis_enabled(PULS2,true); //PULS2 CON HISTERESIS

gpio_set_irq_enabled_with_callback(PULS2, GPIO_IRQ_EDGE_FALL,true, gpio_callback);


gpio_set_irq_enabled_with_callback(PULS1, GPIO_IRQ_EDGE_FALL,true, gpio_callback);
//HABILITO INTERRUPCION PARA PULS1 Y PULS2 POR FLANCO DESCENDENTE Y CONFIGURAN LA FUNCION DE CALLBACK

stdio_init_all();
init_systick();

6 de 9
TP N°1 – GPIO
2-631 Microprocesadores I – Prof. Marcelo Vieytes – Prof. Ariel Acuña
while(1){ //BUCLE
if((anti)&&(anti <= get_systick())){ //CONSULTO ANTIRREBOTE
anti=0; //INDICO EN 0 PARA QUE VUELVA A ENTRAR A LA INTERRUPCION
if (gpio_get(PULS2)==0){ //MIENTRAS EL PULS2 ESTE PRESIONADO ESTE INDICARA UN VALOR DE 0
flag=(!flag); //CAMBIO EL VALOR DE FLAG POR EL OPUESTO
}
if (gpio_get(PULS1)==0){ //MIENTRAS EL PULS1 ESTE PRESIONADO ESTE INDICARA UN VALOR DE 0
gpio_put(LED1,(!(gpio_get(LED1)))); //CAMBIO EL VALOR DEL LED1 POR EL OPUESTO
}
}
if (flag==true){ //CONSULTO SI LA FLAG ES TRUE PARA EL PARPADEO
if((inter <= get_systick())){ //CONSULTO SI PASO EL TIEMPO ENTRE EL CAMBIO DE ESTADO DEL LED
gpio_put(LED2,(!gpio_get(LED2))); //CAMBIO DE ESTADO DEL LED
inter = get_systick() + TIEMPO; // LE SUMO AL CONTADOR EL TIEMPO DEL PARPADEO
}
}
else gpio_put(LED2,false); //SI LA FLAG NO ES TRUE, ES FALSE Y APAGARA EL LED2
}
}

void gpio_callback(uint gpio, uint32_t evento){ /DEFINIMOS LA FUNCION CALLBACK


if(((gpio==PULS2)||(gpio==PULS1))&&(evento==GPIO_IRQ_EDGE_FALL)){ /CONSULTO EL N° DE GPIO Y EL TIPO DE EVENTO
if(anti==0){ //CONSULTO SI ESTA INICIALIZADO EN 0
anti = get_systick() + REBOTE; // CARGO EN LA VARIABLE ANTI EL VALOR DEL ANTIRREBOTE MAS CONTADOR
}
}
}

4. Implementar el código necesario para logra que el LED 1 se mantenga encendido por el tiempo
que permanece en nivel bajo el pulsador 1 y luego inicie un parpadeo a la frecuencia determinada
por ese tiempo, es decir, si se mantiene presionado el pulsador 1 por 750mS, el LED encenderá
750mS y se apagará por un tiempo igual en forma continua (Ayudín en gel para no salpicar:
considerar interrumpir por ambos flancos para medir tiempo). Si se vuelve a presionar el pulsador
1 se renueva el tiempo. Se debe apagar el LED 1 cuando se presiona el pulsador 2, cuya acción se
debe indicar por un pequeño destello (de 200mS) del LED 2.
CODIGO:

#include <stdio.h>
#include <stdbool.h>
#include "pico/stdlib.h"
#include "systick.h"

#define REBOTE 30 //VALOR EN MS DEMORA ANTIRREBOTE


#define TIEMPO ntiempo //VALOR EN MS DEMORA DEL PARPADEO
#define TEMPO 200 //VALOR EN MS DEMORA DEL LED2
#define PULS1 2 // DEFINO EL PULSADOR 1 EN 2
#define LED1 28 // DEFINO LED 1 EN 28
#define PULS2 6 // DEFINO EL PULSADOR 2 EN 6
#define LED2 22 // DEFINO LED 2 EN 22

7 de 9
TP N°1 – GPIO
2-631 Microprocesadores I – Prof. Marcelo Vieytes – Prof. Ariel Acuña
volatile uint32_t anti; // DECLARO VARIABLE PARA FUNCION ANTIRREBOTE
volatile uint32_t ntiempo; // DECLARO VARIABLE DEMORA DEL PARPADEO
volatile uint32_t inter; // DECLARO VARIABLE PARA TIEMPO DEL PARPADEO
volatile uint32_t cled2=0; // DECLARO VARIABLE PARA TIEMPO DEL LED2
volatile uint32_t cled1=0; // DECLARO VARIABLE PARA TIEMPO INCIAL DEL LED1 ANTES DE PARPADEAR
bool cpuls = false; // DECLARO VARIABLE BOOLEANA COMO FLAG A INDICAR QUE PULSADOR FUE PRESIONADO
bool blink = false; // DECLARO VARIABLE BOOLEANA COMO FLAG A INDICAR SI EL PARPADEO ESTA PRENDIDO

void gpio_callback(uint gpio, uint32_t evento); /PROTOTIPO DE LA FUNCION CALLBACK QUE ATENDERA LA INTERRUPCION

int main(){

gpio_init(LED1); //HABILITO GPIO DE LED1 (28)


gpio_init(PULS1); //HABILITO GPIO DE PULS1 (2)
gpio_set_dir(LED1, GPIO_OUT); //SETEO LED1 COMO SALIDA
gpio_set_dir(PULS1, GPIO_IN); //SETEO PULS1 COMO ENTRADA
gpio_pull_up(PULS1); //PULS1 CON PULL UP INTERNO
gpio_set_input_hysteresis_enabled(PULS1,true); //PULS1 CON HISTERESIS
gpio_init(LED2); //HABILITO GPIO DE LED2 (22)
gpio_init(PULS2); //HABILITO GPIO DE PULS2 (6)
gpio_set_dir(LED2, GPIO_OUT); //SETEO LED2 COMO SALIDA
gpio_set_dir(PULS2, GPIO_IN); //SETEO PULS2 COMO ENTRADA
gpio_pull_up(PULS2); //PULS2 CON PULL UP INTERNO
gpio_set_input_hysteresis_enabled(PULS2,true); //PULS2 CON HISTERESIS

gpio_set_irq_enabled_with_callback(PULS2, GPIO_IRQ_EDGE_FALL,true, gpio_callback);


gpio_set_irq_enabled(PULS1,(GPIO_IRQ_EDGE_FALL | GPIO_IRQ_EDGE_RISE),true);
//HABILITO INTERRUPCION PARA PULS2 POR FLANCO DESCENDENTE, PULS1 PARA FLANCO ASCENDENTE Y DESCENDENTE Y
CONFIGURAN LA FUNCION DE CALLBACK
stdio_init_all();
init_systick();

while(1){
if((anti)&&(anti <= get_systick())){ //CONSULTO ANTIRREBOTE
anti=0; //INDICO EN 0 PARA QUE VUELVA A ENTRAR A LA INTERRUPCION

if(cpuls == true){ //CONSULTO SI ENTRO A LA FUNCION DE INTERUPCION POR FLANCO DESCENDENTE DEL PULS2
if (gpio_get(PULS2)==0){ //MIENTRAS EL PULS2 ESTE PRESIONADO ESTE INDICARA UN VALOR DE 0
gpio_put(LED2,true); // INDICO LED2 PRENDIDO
cled2 = get_systick() + TEMPO; //CARGO EL TIEMPO DE ENCENDIDO DEL LED2
gpio_put(LED1,false); // APAGO LED1
blink = false; // INDICO TERMINAR EL PARPADEO
}
}
else {//SI NO ENTRO A PULS2, LA INTERRUPCION DEBERIA DARSE POR PULS1 POR FLANCO ASCENDENTE O
DESCENDENTE
if (gpio_get(PULS1)==0){ //MIENTRAS EL PULS1 ESTE PRESIONADO ESTE INDICARA UN VALOR DE 0
blink = false; // INDICO TERMINAR EL PARPADEO
gpio_put(LED1,(true)); // INDICO LED1 PRENDIDO
ntiempo=0; // INICIALIZO EL TIEMPO DE PARPADEO EN 0
ntiempo = get_systick(); // COMIENZA A CONTAR EL VALOR EN MS DEL PARPADEO

8 de 9
TP N°1 – GPIO
2-631 Microprocesadores I – Prof. Marcelo Vieytes – Prof. Ariel Acuña
}
if (gpio_get(PULS1)==1){ // MIENTRAS EL PULS1 NO ESTE PRESIONADO ESTE INDICARA UN VALOR DE 1
ntiempo = get_systick()-ntiempo; // CALCULO Y GUARDO EL TIEMPO DEL PARPADEO
blink = true; // INDICO COMENZAR EL PARPADEO
cled1 = get_systick() + ntiempo; // CARGO TIEMPO DEL LED1 ANTES DE COMENZAR PARPADEO
if((cled1)&&(cled1 <= get_systick())){ // CONSULTO SI PASO EL TIEMPO
gpio_put(LED1,(false)); //APAGO EL LED1
cled1 = 0; //INICIALIZO EN 0 EL TIEMPO
}
}
}
}
if((cled2)&&(cled2 <= get_systick())){ //CONSULTO SI PASO EL TIEMPO DE ENCENDIDO DEL LED2
gpio_put(LED2,false); //APAGO EL LED 2
cled2 = 0; //INICIALIZO EN 0 EL TIEMPO
}
if(blink==true){ //CONSULTO SI ES TRUE PARA EL PARPADEO
if((inter <= get_systick())){ //CONSULTO SI PASO EL TIEMPO ENTRE EL CAMBIO DE ESTADO DEL LED
gpio_put(LED1,(!gpio_get(LED1))); //CAMBIO DE ESTADO DEL LED
inter = get_systick() + TIEMPO; // LE SUMO AL CONTADOR EL TIEMPO DEL PARPADEO
}
}
}
}

void gpio_callback(uint gpio, uint32_t evento){ //DEFINIMOS LA FUNCION CALLBACK


if((gpio==PULS2)&&(evento==GPIO_IRQ_EDGE_FALL)){ //CONSULTO EL N° DE GPIO Y EL TIPO DE EVENTO
if(anti==0){ //CONSULTO SI ESTA INICIALIZADO EN 0
anti = get_systick() + REBOTE; // CARGO EN LA VARIABLE ANTI EL VALOR DEL ANTIRREBOTE MAS CONTADOR
cpuls = true; // VARIABLE PARA INDICAR QUE LA INTERRUPCION ES PORQUE PULS2 FUE PULSADO
}
}
if((gpio==PULS1)&&(evento==GPIO_IRQ_EDGE_FALL)){ //CONSULTO EL N° DE GPIO Y EL TIPO DE EVENTO
if(anti==0){ //CONSULTO SI ESTA INICIALIZADO EN 0
anti = get_systick() + REBOTE; // CARGO EN LA VARIABLE ANTI EL VALOR DEL ANTIRREBOTE MAS CONTADOR
cpuls = false; // VARIABLE PARA INDICAR QUE LA INTERRUPCION ES PORQUE PULS1 FUE PULSADO

}
}
if((gpio==PULS1)&&(evento==GPIO_IRQ_EDGE_RISE)){ //CONSULTO EL N° DE GPIO Y EL TIPO DE EVENTO
if(anti==0){ //CONSULTO SI ESTA INICIALIZADO EN 0
anti = get_systick() + REBOTE; // CARGO EN LA VARIABLE ANTI EL VALOR DEL ANTIRREBOTE MAS CONTADOR
cpuls = false; // VARIABLE PARA INDICAR QUE LA INTERRUPCION ES PORQUE PULS1 FUE PULSADO
}
}
}

9 de 9

También podría gustarte