/* 
 * File:   DigitalIO_Pinguino.h
 * Author: JF
 *
 * Created on November 24, 2018, 3:20 PM
 */

#ifndef DIGITALIO_PINGUINO_H
#define	DIGITALIO_PINGUINO_H

#ifdef	__cplusplus
extern "C" {
#endif


/* ************************************************************************** */
/* Includes */
#include "define.h"
/* ************************************************************************** */
/* Defines */

#define SYS_FREQ 			(80000000L)		//Clock period = 12.5 ns
#define PERIPHERAL_FREQ		(80000000L)
    
    
    
//Output pins hardware definitions
//
//	#define HEARTBEAT_LED_2_PIN_DIR		TRISGbits.TRISG6
//	#define HEARTBEAT_LED_2_PIN			LATGbits.LATG6
//	#define HEARTBEAT_LED_2_TOGGLE_REG  LATGINV
//	#define HEARTBEAT_LED_2_SET_REG  	LATGSET
//	#define HEARTBEAT_LED_2_CLEAR_REG   LATGCLR
//	#define HEARTBEAT_LED_2_TOGGLE_MASK _LATG_LATG6_MASK
	
	#define HEARTBEAT_LED_1_PIN_DIR		TRISDbits.TRISD1
	#define HEARTBEAT_LED_1_PIN			LATDbits.LATD1
	#define HEARTBEAT_LED_1_TOGGLE_REG  LATDINV
	#define HEARTBEAT_LED_1_SET_REG  	LATDSET
	#define HEARTBEAT_LED_1_CLEAR_REG   LATDCLR
	#define HEARTBEAT_LED_1_TOGGLE_MASK _LATD_LATD1_MASK


//	#define SD_CARD_DETECT_PIN_DIR		TRISDbits.TRISD8
//	#define SD_CARD_DETECT_PIN			LATDbits.LATD8

    //SPI port defs
    #define SPI_SDO_PIN_DIR		TRISGbits.TRISG8
    #define SPI_SDI_PIN_DIR		TRISGbits.TRISG7
    #define SPI_SCK_PIN_DIR		TRISGbits.TRISG6

    //SD Card 
    #define SD_SPI_SS_PIN_DIR		TRISBbits.TRISB13
    #define SD_SPI_SS_PIN   		LATBbits.LATB13

    //Wifi (WINC3400 module)
    #define WIFI_SPI_SS_PIN_DIR		TRISFbits.TRISF1
    #define WIFI_SPI_SS_PIN   		LATFbits.LATF1
    #define WIFI_IRQ_PIN_DIR   		TRISDbits.TRISD0
    #define WIFI_IRQ_PIN       		PORTDbits.RD0
    #define WIFI_WAKE_PIN_DIR   	TRISEbits.TRISE0
    #define WIFI_WAKE_PIN       	LATEbits.LATE0
    #define WIFI_SPI_CFG_PIN_DIR   	TRISEbits.TRISE1
    #define WIFI_SPI_CFG_PIN       	LATEbits.LATE1
    #define WIFI_CHP_EN_PIN_DIR   	TRISEbits.TRISE2
    #define WIFI_CHP_EN_PIN       	LATEbits.LATE2
    #define WIFI_CHP_RST_PIN_DIR   	TRISEbits.TRISE3
    #define WIFI_CHP_RST_PIN       	LATEbits.LATE3

    //Control knob encoder
    #define KNOB_PH_A_PIN_DIR		TRISDbits.TRISD8
    #define KNOB_PH_A_PIN       	PORTDbits.RD8
    #define KNOB_PH_B_PIN_DIR		TRISDbits.TRISD7
    #define KNOB_PH_B_PIN       	PORTDbits.RD7
    #define KNOB_TGLE_BTN_PIN_DIR	TRISDbits.TRISD11
    #define KNOB_TGLE_BTN_PIN       PORTDbits.RD11

    //Led controller PWM
    #define LED_PWM_PIN_DIR		TRISDbits.TRISD2
    #define LED_PWM_PIN       	LATDbits.LATD2
    #define LED_PWM_VAL_REG     OC3RS

    
    //Misc CPU or board related defines
    #define PWM_RANGE_MAX 16000

    #define GP_DEBUG_1_PIN_DIR  TRISEbits.TRISE5
    #define GP_DEBUG_1_PIN      LATEbits.LATE5
    #define GP_DEBUG_2_PIN_DIR  TRISEbits.TRISE6
    #define GP_DEBUG_2_PIN      LATEbits.LATE6



/* ************************************************************************** */
/* Prototypes */
void InitDigitalIO(void);


#ifdef	__cplusplus
}
#endif

#endif	/* DIGITALIO_PINGUINO_H */

