#include "p33FJ64MC802.h"

// 4 capteurs à convertir:
// AN4 sur CH0,AN0 sur CH1,AN1 sur CH2,AN2 sur sur CH3
// scénario: automatic sample , trigger timer (declenchement auto des convertions sur IT timer)
// overflow timer => 4 conv séquentielles des voies
// IT ADC qd les 4 conv ont été réalisés

void  Init_ADC_Multivoies (void )
{

		/* config: CH0 , AN2, Tacq=2us Temps Echantillonneur/bloqueur automatique  */ 	
		/* Tad= 250ns */

 	
 		AD1CON1bits.ADON=0; // Eteint ADC avant config

		//Choix mode de conversion :A modifier selon besoin
		AD1CON1bits.SSRC   = 0b010;		// Trigger TIMER 3 CONV
		AD1CON1bits.ASAM   = 1;			// AUTO SAMPLING
		///////////////////////////////////////////////////
		
		// Choix format de conversion:ne PAS MODFIER
		AD1CON1bits.AD12B  = 0;		// 10-bit ADC operation
		AD1CON1bits.FORM   = 0;		// Data Output Format:  unsigned int (DOUT = 0000 00dd dddd dddd)
		////////////////////////////////////////////////////////
		
		
		//CONFIG Tension de référence : NE PAS MODIFIER: 
		AD1CON2bits.VCFG	=0;  	// VREFH=VDD et VREFL=VSS 
		_AD12B=0;			// ADC en 10 bits
		AD1CHS123bits.CH123NB=0; 	//SAMPLE A: CH1, CH2, CH3 negative input is VREF- (pour nous VSS)
		AD1CHS123bits.CH123NA=0;	//SAMPLE B: CH1, CH2, CH3 negative input is VREF- (pour nous VSS)
		AD1CHS0bits.CH0NB=0; 	//SAMPLE A: Channel 0 negative input is VREF-
		AD1CHS0bits.CH0NA=0;	//SAMPLE B:Channel 0 negative input is VREF-
		AD1CON1bits.SIMSAM = 1;		// CHANGEMENT ICI: E/B simultanée sur toutes les voies puis conv séquentielle)
		////////////////////////////////////////////////////////
		
		
		//Choix des voies et scénario de conversioin:A modifier selon besoin
		AD1CON2bits.CHPS  = 0b10;		// Selection des 4 blocs: CH0,CH1,CH2,CH3
			// BLOC 0
		AD1CON2bits.CSCNA = 0;		// pas de scan sur bloc entree CH0
		AD1CHS0bits.CH0SA = 4; 		//MUXA +ve input selection : choix AN4 pour le bloc CH0
			//BLOC 1,2,3
		AD1CHS123bits.CH123SA=0	;  	////CH1 positive input is AN0, CH2 positive input is AN1, CH3 positive input is AN2
		//AD1CHS123bits.CH123SA=1	;  	//CH1 positive input is AN3, CH2 positive input is AN4, CH3 positive input is AN5
	
		
		AD1CON2bits.ALTS=0;		// pas de mode alterne
		//AD1CHS123bits.CH123SB=x; 	// utile en mode alterné SampleA/SampleB
		////////////////////////////////////////////////////////
		
		
		//Choix Tacq Tad: NE PAS MODFIER 
		AD1CON3bits.ADRC = 0;		// ADC Clock is derived from Systems Clock
		AD1CON3bits.ADCS = 9;       // Tad=Tcy*(ADCS+1)= (1/40M)*10 = 250ns (la limite est de 75ns) page 49
		AD1CON3bits.SAMC=15; 		// Tacq=SAMC * TAD = TEMPS DE SAMPLING =8 * 250ns=2us

		//Config IT
		_BUFM=0;
		_AD1IP=7;
		AD1CON2bits.SMPI= (-1);		//ADC interrupt toutes les 4 conversions 
		IFS0bits.AD1IF = 0; 		// Clear the A/D interrupt flag bit
		
		IEC0bits.AD1IE = 1; 		// IT ON
	



	
		AD1CON1bits.ADON = 1; 		// Turn on the A/D converter


}