Help me deal with work of the ADC and the digital comparator.
I want to receive an interrupt from ADC at the end of Sequence and Digital comparator.
As soon as I turn on the COPM0. ADC does not work.
Thanks.
Andrew
karu2003/Power_Monitor (github.com)
void ADCInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3 | GPIO_PIN_2);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
GPIOPinTypeADC(GPIO_PORTD_BASE, GPIO_PIN_3);
// ADCHardwareOversampleConfigure(ADC0_BASE, 64);
ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_TIMER, 0);
// ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_CH0 | ADC_CTL_D);
// ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_CH2 | ADC_CTL_D); //ADC_CTL_CMP0
ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_CH0 | ADC_CTL_D);
ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_CH2 | ADC_CTL_IE | ADC_CTL_END); //| ADC_CTL_CMP0
IntEnable(INT_ADC0SS1);
ADCSequenceEnable(ADC0_BASE, 1);
ADCIntClear(ADC0_BASE, 1);
ADCComparatorConfigure(ADC0_BASE, 0, ADC_COMP_TRIG_NONE | ADC_COMP_INT_HIGH_HONCE);
ADCComparatorRegionSet(ADC0_BASE, 0, 2048, 3000);
ADCComparatorReset(ADC0_BASE, 0, true, true);
ADCComparatorIntEnable(ADC0_BASE, 1);
}
void ADC0SS1IntHandler(void)
{
// TimerDisable(TIMER5_BASE, TIMER_A);
uint32_t s = ADCComparatorIntStatus(ADC0_BASE);
if (s)
{
ADCComparatorIntClear(ADC0_BASE, 0xffff);
Test = "Test CCOPM0";
}
ADCIntClear(ADC0_BASE, 1);
uiCount++;
ADCSequenceDataGet(ADC0_BASE, 1, pui32ADC0Value);
CosVoltage = (pui32ADC0Value[0] * (2 * Vref / 4096)) - Vref;
SinVoltage = (pui32ADC0Value[1] * Vref / 4096);
// Voltage = (*pui32ADC0Value * (2 * Vref / 4096)) - Vref;
// Voltage = Voltage / denominator;
// Amps = ((Voltage - ACSoffset) / mVperAmp);
// TimerEnable(TIMER5_BASE, TIMER_A);
}
