Other Parts Discussed in Thread: TMS320F28035, C2000WARE
Tool/software:
Hello,
I’m trying to configure the ADC on the TMS320F28035 to achieve continuous ADC conversions using internal triggering, without involving the CPU interrupt or ISR.
My goal is:
- Use ADCINT1 to internally retrigger SOC3 after every conversion.
- Avoid firing an ADC interrupt (no ISR handling).
- Collect AdcResult.ADCRESULT3 manually in a different function.
Below is the configuration I am using:
// Configure SOC3 for ADCINA3 (Current Sense IPM ADC)
AdcRegs.ADCSOC3CTL.bit.ACQPS = 6; // Set sample-and-hold(S/H) duration to 6 cycles
AdcRegs.ADCSOC3CTL.bit.CHSEL = 3; // Select channel ADCINA3
AdcRegs.ADCINTSOCSEL1.bit.SOC3 = 1; // Trigger SOC3 from ADCINT1
AdcRegs.INTSEL1N2.bit.INT1SEL = 3; // EOC3 is trigger for ADCINT1
AdcRegs.INTSEL1N2.bit.INT1E = 0; // Disable CPU interrupt ,only use internal trigger
AdcRegs.INTSEL1N2.bit.INT1CONT = 1; // Allow ADCINT1 to retrigger continuously without waiting for flag clear
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //Clear interrupt flag
AdcRegs.ADCSOCFRC1.bit.SOC3 = 1; // Start the continuous trigger by forcing SOC3 manually once
This works correctly for the initial conversion on power-up (via forced SOC3), and I get a valid result. However, subsequent conversions are not happening automatically when I change the input voltage. It seems the internal trigger from ADCINT1 to SOC3 isn’t firing again.
I also tried the following configuration (thinking interrupt needs to be enabled to function):
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; // Set interrupt pulse position to EOC result latch
AdcRegs.INTSEL1N2.bit.INT1E = 1; // Enable ADCINT1
AdcRegs.INTSEL1N2.bit.INT1CONT = 1; // Continuous mode
But this caused an illegal ISR trap, likely because I wasn’t handling the ADCINT1 interrupt in PIE (as I don’t want to use an ISR).
Questions:
- What is the correct configuration to allow ADCINT1 to continuously trigger SOC3, without requiring a CPU interrupt or ISR?
- Does INT1E need to be enabled for the internal trigger to work?
- Is INTPULSEPOS = 1 necessary in this scenario?
- Are there any known limitations or timing requirements I might be missing?
Thanks in advance for your help!


