#include "p33FJ64MC802.h"

void  Init_ADC_TimerIT( 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;		// Conversion déclenchée par timer 3
		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 = 0;		// E/B + conv séquentielle ( autre option 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  = 0;		// Selection des blocs voies: ici CH0
			// BLOC 0
		AD1CON2bits.CSCNA = 0;		// pas descan sur bloc entree CH0
		AD1CHS0bits.CH0SA=0b0010;   // AN2 selctionnée sur CH0

		// RAJOUT DES LIGNES SUIVANTES DEFINITION LES VOIES A SCANNER
		//AD1CSSL: A/D Input Scan Selection Register		
		//AD1CSSLbits.CSS0=1;			// Enable AN0 for channel scan
		//AD1CSSLbits.CSS1=1;			// Enable AN1 for channel scan
		//AD1CSSLbits.CSS2=1;			// Enable AN2 for channel scan
		
				//BLOC 1,2,3
		AD1CHS123bits.CH123SA=1	;  	//CH1 positive input is AN3, CH2 positive input is AN4, CH3 positive input is AN5
		//AD1CHS123bits.CH123SB=x; 	// utile en mode alterné SampleA/SampleB
		
		AD1CON2bits.ALTS=0;		// pas de mode alterne
		////////////////////////////////////////////////////////
		
		
		//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= 8; 		// Tacq=SAMC * TAD = TEMPS DE SAMPLING =8 * 250ns=2us

		//Config IT
		//AD1CON2bits.SMPI= xxx ; SANS EFFET
		// ATTENTION: le reference manual ne s'applique pas pour SMPI ( priorité datasheet)
		// a été testé: AD1CON2bits.SMPI= (4-1) et SMPI=0;  observation: IT ADC tjrs au ryhtme du timer3 = 0.4s!
		// conclusion: ne signifie PAS 4 samples puis IT!
		// ne s'applique PAS: Table 16-9: Samples Per Interrupt in Alternate Sampling Mode
		// PRIORITE DATASHEET
		IFS0bits.AD1IF = 0; 		// Clear the A/D interrupt flag bit
		IEC0bits.AD1IE = 1; 		// ON VALIDE LES IT



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


}