/* 
 * File:  IO.h 
 * Author: Christian Mares
 * 
 * Created on 13 de diciembre de 2017, 18:25
 */

#ifndef IO_H
#define IO_H

#define TRIS_LED_D3     _TRISA0
#define TRIS_LED_D4     _TRISA1
#define TRIS_LED_D5     _TRISA2
#define TRIS_LED_D6     _TRISA3
#define TRIS_LED_D7     _TRISA4
#define TRIS_LED_D8     _TRISA5
#define TRIS_LED_D9     _TRISA6
#define TRIS_LED_D10    _TRISA7 // En la explorer16 cuando este pin se pone en salida controla el LED D10. Cuando se pon en entrada es controlado pr el pulsado S5

#define LED_D3      _LATA0
#define LED_D4      _LATA1
#define LED_D5      _LATA2
#define LED_D6      _LATA3
#define LED_D7      _LATA4
#define LED_D8      _LATA5
#define LED_D9      _LATA6
#define LED_D10     _LATA7


#define TRIS_PULSADOR_S3    _TRISD6
#define PULSADOR_S3         _RD6
#define IE_PULSADOR_S3      _CN15IE

#define TRIS_PULSADOR_S4    _TRISD13
#define PULSADOR_S4         _RD13
#define IE_PULSADOR_S4      _CN19IE

#define TRIS_PULSADOR_S5    TRIS_LED_D10 // = _TRISA7 | En la explorer16 cuando este pin se pone en salida controla el LED D10. Cuando se pon en entrada es controlado pr el pulsado S5
#define PULSADOR_S5         _RA7

#define TRIS_PULSADOR_S6    _TRISD7
#define PULSADOR_S6         _RD7
#define IE_PULSADOR_S6      _CN16IE

#define debounce_T 4

extern volatile char debounce_S3;
extern volatile char debounce_S6;
extern volatile char debounce_S5;
extern volatile char debounce_S4;

void Inic_IO(void);

/**
 * <p><b>Descripcion: Inicializar LEDs de la Explorer16.</b></p>
 */
void Inic_Leds_Ex16 (void);

/**
 * <p><b>Descripcion: Inicializar pulsadores de la Explorer16.</b></p>
 * <p><b>Parametros: char P_S5 =1 -> Utilizar Pulsador S5</p>
 *                             =0 -> Utilizar Led D10</b></p>
 */
void Inic_Pulsadores_Ex16 (void);

void Inic_Pins_PIC24(void);

#endif