Part Number: TMS320F28377S
Hi,
Sysclk = 50 MHz used, Vref = 3 V
//-------------------------------------------ADC configuration:-------------------------------------------------------------------
EALLOW;
AdcaRegs.ADCCTL2.bit.PRESCALE = 1
AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
DELAY_US(1000);
EDIS;
acqps = 30;
EALLOW;
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 2;
AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC1CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;
AdcaRegs.ADCSOC2CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC3CTL.bit.CHSEL = 2;
AdcaRegs.ADCSOC3CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC4CTL.bit.CHSEL = 2;
AdcaRegs.ADCSOC4CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC5CTL.bit.CHSEL = 2;
AdcaRegs.ADCSOC5CTL.bit.ACQPS = acqps;
AdcaRegs.ADCSOC6CTL.bit.CHSEL = 2;
AdcaRegs.ADCSOC6CTL.bit.ACQPS = acqps;
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 6;
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
EDIS;
//--------------------------------------------------------------------------------------------------------------
Uint16 adc_count = 0, main_count=0;
Main for(;;) loop:
{
// when ADC voltage > 1 V at ADC pin is given, below condition executed once using flag variable:
{
main_count = 0;
GpioDataRegs.GPCSET.bit.GPIO67 = 1;
}
main_count++;
ADC_read();
if(adc_count > 1100)
{
GpioDataRegs.GPCCLEAR.bit.GPIO67 = 1;
// Observed main_count using breakpoint; value found to be 29
}
}
Uint16 ADC_read()
{
EALLOW;
AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 0x01;
EDIS;
AdcaRegs.ADCSOCFRC1.all = 0x007F;
DELAY_US(10);
if(AdcaRegs.ADCINTFLG.bit.ADCINT1 == 1)
{
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
adc_count = ADC_Result();
}
}
Uint16 ADC_Result()
{
// average of ADCa result 0 to 6
}
//------------------ questions ----------------
1. Pin toggled when ADC voltage changed from 0 to 3 V takes 800 us (on to off pulse duration). Why so much time and how to reduce this.
2. ADC_read() executes twice before observing ADC result matching to given voltage. why is there delay? why ADC result not fetched on first event.
Please guide