This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Problem to load my program in flash

Other Parts Discussed in Thread: TMS320F28335

Hi everyone 

I work with the dsp TMS320F28335, my program samples a signal and for that i use the ADC. My program works when i load in ram but when i wish to load in flash, there is a bug. I use differents features in my program such as SPI, UART, GPIO ... and these features work when i load it in flash but when i add the adc block my program doesn't work. Have you an idea to resolve my problem ?  I use on chip flash programmer to load in flash and i think that my parameters are good because the SPI, UART and GPIO work.

EALLOW;
#if (CPU_FRQ_150MHZ) // Default - 150 MHz SYSCLKOUT
#define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25.0 MHz
#endif
#if (CPU_FRQ_100MHZ)
#define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2) = 25.0 MHz
#endif
EDIS;

EALLOW;
SysCtrlRegs.HISPCP.all = ADC_MODCLK;
EDIS;

InitAdc();

// Enable ADCINT in PIE
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
IER |= M_INT1; // Enable CPU Interrupt 1
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM

This is my code to initialize the ADC block:

// Configure ADC
AdcRegs.ADCREFSEL.bit.REF_SEL=0x0; // valeur de référence par défaut
AdcRegs.ADCTRL1.bit.ACQ_PS = 0x0;
AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x0;
AdcRegs.ADCTRL1.bit.CPS=0;
AdcRegs.ADCMAXCONV.all = 0x0000; // Setup 1 conv's on SEQ1

AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0000; // Setup ADCINA0 as 1st SEQ1 conv.
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;// Enable SOCA from ePWM to start SEQ1
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS)
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit

// Assumes ePWM1 clock is already enabled in InitSysCtrl();
EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Enable SOC on A group
EPwm1Regs.ETSEL.bit.SOCASEL = 4; // Select SOC from from CPMA on upcount
EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Generate pulse on 1st event
EPwm1Regs.CMPA.half.CMPA = (Ttbclk/Fe) - 1;
EPwm1Regs.TBPRD = (Ttbclk/Fe) - 1;
//EPwm1Regs.TBPRD = (1/Fe) / 75000000 - 1; // Set period for ePWM1
EPwm1Regs.TBCTL.bit.CTRMODE = 0; // count up and start
EPwm1Regs.TBCTL.bit.CLKDIV=0x000; // TBCLK = SYSCLKOUT / ( 1 * 1 ) = 150Mhz
EPwm1Regs.TBCTL.bit.HSPCLKDIV=0x000;