/*
 * adc.h
 *
 * Created: 25/09/2016 12:51:33
 *  Author: Ledo
 */ 


#ifndef ADC_H_
#define ADC_H_

#include <asf.h>
#include <avr32/io.h>
#include <stdbool.h>
//#include "adcifa.h"
#include "gpio.h"
#include "sysclk.h"
#include "delay.h"
#include "globales.h"

/* Conexión del canal de señal */
#  define V_CHANNEL     0
#  define V_INP         AVR32_ADCIFA_INP_ADCIN0
#  define V_INN         AVR32_ADCIFA_INN_GNDANA
//#  define V_INN         AVR32_ADCIFA_INN_DAC1_INT
#  define V_PIN         AVR32_ADCIN0_PIN
#  define V_FUNCTION    AVR32_ADCIN0_FUNCTION

/* Conexión del canal de corriente del mosfet */
#  define I_CHANNEL           1
#  define I_INP         AVR32_ADCIFA_INP_ADCIN1
#  define I_INN         AVR32_ADCIFA_INN_GNDANA
#  define I_PIN         AVR32_ADCIN1_PIN
#  define I_FUNCTION    AVR32_ADCIN1_FUNCTION

/* Conexion de la NTC */
#  define NTC_CHANNEL   2
#  define NTC_INP         AVR32_ADCIFA_INP_ADCIN2
#  define NTC_INN         AVR32_ADCIFA_INN_GNDANA
#  define NTC_PIN         AVR32_ADCIN2_PIN
#  define NTC_FUNCTION    AVR32_ADCIN2_FUNCTION


#define NUMBER_OF_SEQUENCE     3

//int16_t adc_values[NUMBER_OF_SEQUENCE];
adcifa_sequencer_opt_t adcifa_sequence_opt ;
adcifa_sequencer_conversion_opt_t
adcifa_sequence_conversion_opt[NUMBER_OF_SEQUENCE];

adcifa_opt_t adc_config_t ;

/** GPIO pin/adc-function map. */
const gpio_map_t ADC_GPIO_MAP = {

    {AVR32_ADCREF0_PIN    , AVR32_ADCREF0_FUNCTION    },
    {AVR32_ADCREFP_PIN    , AVR32_ADCREFP_FUNCTION    },
    {AVR32_ADCREFN_PIN    , AVR32_ADCREFN_FUNCTION    },	
	{V_PIN, V_FUNCTION},
	{I_PIN, I_FUNCTION},
	{NTC_PIN, NTC_FUNCTION},

};




void adc_init(uint8_t gain);
void Read_adc_values(int16_t * adc_values[]);
int8_t adc_offset(void);

#endif /* ADC_H_ */