Hi all,
I am new with the dsp's. I am trying to setup the adc of the Piccolo 28027. I want to convert the channels in simultaneous mode.
My first step has been trying to modify the example called lab3 but it doesn't work.
My code is the following:
void InitAdc(void)
{
asm("EALLOW"); //Enable EALLOW protected register access
AdcRegs.ADCCTL1.bit.RESET=1; //Reset the ADC module
//Must wait 2 ADCCLK periods for the reset to take effect.
//Note that ADCCLK=SYSCLKOUT for F2802x/F2803x devices.
//Power-up and configure the ADC
AdcRegs.ADCCTL1.all= 0x00E4;
DelayUs(1000); //Wait 1ms after power-up before using the ADC.
//**************************************************************************************
//SOCx configuration
//AdcRegs.ADCSAMPLEMODE.all=0x00FF;
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN0=1; // the following instructions mean
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN2=1;// in simultaneous sample mode (vs. single sample mode)
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN4=1;
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN6=1;
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN8=1;
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN10=1;
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN12=1;
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN14=1;
//**************************************************************************************
// AdcRegs.ADCSOCxCTL.bit.TRIGSEL=7; //Trigger using ePWM2-ADCSOCA
AdcRegs.ADCSOC0CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC1CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC2CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC3CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC4CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC5CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC6CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC7CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC8CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC9CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC10CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC11CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC12CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC13CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC14CTL.bit.TRIGSEL=7;
AdcRegs.ADCSOC15CTL.bit.TRIGSEL=7;
//****************************************************************************************
// AdcRegs.ADCSOCxCTL.bit.CHSEL=0 //Ver tabla 17 para otras configuraciones.
// SOCx channel select. Selects the channel to be converted when SOCx is received by the ADC.
// The following instructions are for Simulatenous Sampling Mode/SIMULENx=1)
AdcRegs.ADCSOC0CTL.bit.CHSEL=0; // seleccion de canal
AdcRegs.ADCSOC2CTL.bit.CHSEL=1; // seleccion de canal
AdcRegs.ADCSOC4CTL.bit.CHSEL=2; // seleccion de canal
AdcRegs.ADCSOC6CTL.bit.CHSEL=3; // seleccion de canal
AdcRegs.ADCSOC8CTL.bit.CHSEL=4; // seleccion de canal
AdcRegs.ADCSOC10CTL.bit.CHSEL=5; // seleccion de canal
AdcRegs.ADCSOC12CTL.bit.CHSEL=6; // seleccion de canal
AdcRegs.ADCSOC14CTL.bit.CHSEL=7; // seleccion de canal
//*******************************************************************************************
//AdcRegs.ADCSOCxCTL.bit.ACQPS=6;// Sampling Windows is 7 cycles long(6+1 clock cycles).
//The quickest sampling window.
AdcRegs.ADCSOC0CTL.bit.ACQPS=6;
AdcRegs.ADCSOC1CTL.bit.ACQPS=6;
AdcRegs.ADCSOC2CTL.bit.ACQPS=6;
AdcRegs.ADCSOC3CTL.bit.ACQPS=6;
AdcRegs.ADCSOC4CTL.bit.ACQPS=6;
AdcRegs.ADCSOC5CTL.bit.ACQPS=6;
AdcRegs.ADCSOC6CTL.bit.ACQPS=6;
AdcRegs.ADCSOC7CTL.bit.ACQPS=6;
AdcRegs.ADCSOC8CTL.bit.ACQPS=6;
AdcRegs.ADCSOC9CTL.bit.ACQPS=6;
AdcRegs.ADCSOC10CTL.bit.ACQPS=6;
AdcRegs.ADCSOC11CTL.bit.ACQPS=6;
AdcRegs.ADCSOC12CTL.bit.ACQPS=6;
AdcRegs.ADCSOC13CTL.bit.ACQPS=6;
AdcRegs.ADCSOC14CTL.bit.ACQPS=6;
AdcRegs.ADCSOC15CTL.bit.ACQPS=6;
//**********************************************************************************************
//AdcRegs.ADCINTSOCSELy.bit.SOCx=0; //ADC Interrupt Trigger selection.
//In this case, 0 means that NO ADC INT will trigger SOCx.
AdcRegs.ADCINTSOCSEL1.all = 0x0000;
AdcRegs.ADCINTSOCSEL2.all = 0x0000;
//AdcRegs.ADCINTSOCSEL1.bit.SOC0=0;
//AdcRegs.ADCINTSOCSEL1.bit.SOC1=0;
//AdcRegs.ADCINTSOCSEL1.bit.SOC2=0;
//AdcRegs.ADCINTSOCSEL1.bit.SOC3=0;
//AdcRegs.ADCINTSOCSEL1.bit.SOC4=0;
//AdcRegs.ADCINTSOCSEL1.bit.SOC5=0;
//AdcRegs.ADCINTSOCSEL1.bit.SOC6=0;
//AdcRegs.ADCINTSOCSEL1.bit.SOC7=0;
//AdcRegs.ADCINTSOCSEL2.bit.SOC8=0;
//AdcRegs.ADCINTSOCSEL2.bit.SOC9=0;
//AdcRegs.ADCINTSOCSEL2.bit.SOC10=0;
//AdcRegs.ADCINTSOCSEL2.bit.SOC11=0;
//AdcRegs.ADCINTSOCSEL2.bit.SOC12=0;
//AdcRegs.ADCINTSOCSEL2.bit.SOC13=0;
//AdcRegs.ADCINTSOCSEL2.bit.SOC14=0;
//AdcRegs.ADCINTSOCSEL2.bit.SOC15=0;
//***************************************************************************************
//AdcRegs.SOCPRICTL.bit.SOCPRIORITY=0; // All SOC's handled in round-robin mode.
AdcRegs.SOCPRICTL.bit.SOCPRIORITY=1;
//***************************************************************************************
AdcRegs.INTSEL1N2.bit.INT1CONT=0; // ADCINT0 pulses generated only when ADCINT0 flag is clear
AdcRegs.INTSEL1N2.bit.INT1E=1; // Enable ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=0; // EOC0 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=1; // EOC1 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=2; // EOC2 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=3; // EOC3 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=4; // EOC4 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=5; // EOC5 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=6; // EOC6 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=7; // EOC7 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=8; // EOC8 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=9; // EOC9 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=0xA; // EOC10 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=0xB; // EOC11 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=0xC; // EOC12 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=0xD; // EOC13 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=0xE; // EOC14 triggers ADCINT0
AdcRegs.INTSEL1N2.bit.INT1SEL=0xF; // EOC15 triggers ADCINT0
PieCtrlRegs.PIEIER1.bit.INTx1=1; //Enable ADCINT0 in IER to enable PIE Group
IER|= 0x0001;
AdcRegs.ADCCTL1.bit.ADCENABLE=1;
asm("EDIS");
} //end InitAdc()
Can anybody tell what is wrong? Or correct?
Thank you