Bonjour,

Comme le titre peut vous le faire sous entendre, je viens vers vous car je cherche à utiliser le DMA avec l'ADC1 du dsPIC.
Pour résumer mon affaire, je cherche à échantillonner AN3, AN4, AN5, AN8 et AN9 pour les stocker successivement dans un tableau. Cependant je suis un peu bloqué pour la configuration du DMA.

Voilà ce que j'ai fais pour le moment :

Code:
void Init_Adc2_Dma(void){
    
    PMD3bits.AD2MD = 0;		// Active l'ADC 2
    DMA4CONbits.CHEN = 0; 	// Enable DMA4
    
	Delay(1);

	AD1CON1 = 0;	

    PIN_PT1_TR_AMPLI_ANA_DIR = INPUT;
    PIN_PT2_TR_AMPLI_ANA_DIR = INPUT;
    PIN_VHF_TR_AMPLI_ANA_DIR = INPUT;
    PIN_TENSION_RADAR_ANA_DIR = INPUT;
    PIN_TENSION_HF_ANA_DIR = INPUT;
    
    ANSELBbits.ANSB3 = 1;   // PIN 13 (VHF_Tr_Ampli) en Analogique
    ANSELBbits.ANSB4 = 1;   // PIN 12 (PT2_Tr_Ampli) en Analogique
    ANSELBbits.ANSB5 = 1;   // PIN 11 (PT1_Tr_Ampli) en Analogique
    ANSELBbits.ANSB8 = 1;   // PIN 21 (tension_Radar) en Analogique
    ANSELBbits.ANSB9 = 1;   // PIN 22 (tension_HF) en Analogique
    
    
	AD2CON1bits.ADSIDL = 0;	//Continue operation in Idle mode
    AD2CON1bits.SIMSAM = 0; //sample in sequence    
	AD2CON1bits.FORM = 1;	//signed integer Dout=ssss sddd dddd dddd
	AD2CON1bits.SSRCG = 0;	//Internal counter ends sampling and starts conversion (auto-convert)
	AD2CON1bits.SSRC = 4;	//2: timer 3  4: timer 5  7:auto-convertInternal counter ends sampling and starts conversion (auto-convert)
	AD2CON1bits.ASAM = 1;	//Sampling begins immediately after last conversion. SAMP bit is auto-set
	AD2CON1bits.SAMP = 0;	//ADC sample/hold amplifiers are holding

	AD2CON2bits.VCFG = 0;	// Vref = AVdd-AVss 
	AD2CON2bits.CSCNA = 1;	// scan inputs during Sample A bit
	AD2CON2bits.CHPS = 0;	// sample ch0
	AD2CON2bits.BUFM = 0;	// Always starts filling buffer from the beginning
	AD2CON2bits.ALTS = 0;	// Do not Alternate with sample A and B
	AD2CON2bits.SMPI = 0;	// Interruption à chaque conversion

	AD2CON3bits.ADRC = 0;	//FCY
	AD2CON3bits.SAMC = 2;  	//Tsample;	//3 TAD  Not used with Timer 3
	AD2CON3bits.ADCS = 3;   //ADCSconf12bits;	//Conversion Clock	(voir define en haut)
	
	AD2CHS0bits.CH0NA = 0;	
	AD2CHS0bits.CH0NB = 0;	
	AD2CHS0bits.CH0SA = 0;	
	AD2CHS0bits.CH0SB = 0;

	             
	AD2CSSL = 0;              //Pas de scan
    AD2CSSLbits.CSS3 = 1;   // Scan AN3
    AD2CSSLbits.CSS4 = 1;   // Scan AN4
    AD2CSSLbits.CSS5 = 1;   // Scan AN5
    AD2CSSLbits.CSS8 = 1;   // Scan AN8
    AD2CSSLbits.CSS9 = 1;   // Scan AN9
  
    
	// reset ADC interrupt flag 
	IFS0bits.AD1IF = 0;           
	IPC3bits.AD1IP=7;

	
	
	AD2CON1bits.ADDMABM =0;     // Don't Care: ADC address generation is ignored by DMA
	
	AD2CON2bits.SMPI = 5;    	// Nombre de signaux à échantillonner
	AD2CON4bits.DMABL = 5;      // Nombre de signaux à échantillonner
	AD2CON4bits.ADDMAEN = 0;
    AD2CON1bits.ADON = 1; 
}



Merci d'avance !

Dylan