Other Parts Discussed in Thread: C2000WARE, TMDSHVMTRINSPIN
Hello,
I'm using "C2000Ware_MotorControl_SDK_2_01_00_00_setup" for my project and in that i'm using the "\ti\c2000\C2000Ware_MotorControl_SDK_2_01_00_00\solutions\tmdshvmtrinspin/is13_fwc_mtpa" folder as a reference.
I have created "TIMER0 ISR" and the "MAIN ISR" function which is already available is been interrupted by the ADC-C1 interrupt.
When i make the change in the "HAL_setupADCs(HAL_Handle handle)" function as per my requirement, then the "MAIN ISR" interrupt is not generated but the "TIMER0 ISR" is genrated.
But when i don't make any change in the "HAL_setupADCs(HAL_Handle handle)" then i able to generate both the interrupt "MAIN ISR and TIMER0 ISR".
For more information, PFD below.
==================================================================================================================
CODE WITH MY CHANGE: [In this only TIMER0 ISR is generated].
================================================================================================================
CODE WITH NO CHANGE: [BOTH ISR are generated].
void HAL_setupADCs(HAL_Handle handle)
{
HAL_Obj *obj = (HAL_Obj *)handle;
SysCtl_delay(100U);
ADC_setVREF(obj->adcHandle[2], ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(obj->adcHandle[1], ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(obj->adcHandle[0], ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
SysCtl_delay(100U);
// Configure internal reference as 1.65*2 = 3.3
ASysCtl_setAnalogReference1P65(ASYSCTL_VREFHIA |
ASYSCTL_VREFHIB |
ASYSCTL_VREFHIC);
// Enable internal voltage reference
ASysCtl_setAnalogReferenceInternal(ASYSCTL_VREFHIA |
ASYSCTL_VREFHIB |
ASYSCTL_VREFHIC);
// Set main clock scaling factor (50MHz max clock for the ADC module)
ADC_setPrescaler(obj->adcHandle[0], ADC_CLK_DIV_2_0);
ADC_setPrescaler(obj->adcHandle[1], ADC_CLK_DIV_2_0);
ADC_setPrescaler(obj->adcHandle[2], ADC_CLK_DIV_2_0);
// set the ADC interrupt pulse generation to end of conversion
ADC_setInterruptPulseMode(obj->adcHandle[0], ADC_PULSE_END_OF_CONV);
ADC_setInterruptPulseMode(obj->adcHandle[1], ADC_PULSE_END_OF_CONV);
ADC_setInterruptPulseMode(obj->adcHandle[2], ADC_PULSE_END_OF_CONV);
// enable the ADCs
ADC_enableConverter(obj->adcHandle[0]);
ADC_enableConverter(obj->adcHandle[1]);
ADC_enableConverter(obj->adcHandle[2]);
// set priority of SOCs
ADC_setSOCPriority(obj->adcHandle[0], ADC_PRI_ALL_HIPRI);
ADC_setSOCPriority(obj->adcHandle[1], ADC_PRI_ALL_HIPRI);
ADC_setSOCPriority(obj->adcHandle[2], ADC_PRI_ALL_HIPRI);
// delay to allow ADCs to power up
SysCtl_delay(1000U);
// configure the interrupt sources
// configure the sample window to 15 system clock cycle wide by assigning 14
// to the ACQPS of ADCSOCxCTL Register.
// RC2/C1
ADC_setInterruptSource(obj->adcHandle[2], ADC_INT_NUMBER1, ADC_SOC_NUMBER2);
// configure the SOCs for hvkit_rev1p1
// IA-FB - B3->RB0
ADC_setupSOC(obj->adcHandle[1], ADC_SOC_NUMBER0, ADC_TRIGGER_EPWM1_SOCA,
ADC_CH_ADCIN3, HAL_ADC_SAMPLE_WINDOW);
// IB-FB - C0->RC0
ADC_setupSOC(obj->adcHandle[2], ADC_SOC_NUMBER0, ADC_TRIGGER_EPWM1_SOCA,
ADC_CH_ADCIN0, HAL_ADC_SAMPLE_WINDOW);
// IC-FB - A3->RA0
ADC_setupSOC(obj->adcHandle[0], ADC_SOC_NUMBER0, ADC_TRIGGER_EPWM1_SOCA,
ADC_CH_ADCIN3, HAL_ADC_SAMPLE_WINDOW);
// ADC-Vhb1 - C2->RC1
ADC_setupSOC(obj->adcHandle[2], ADC_SOC_NUMBER1, ADC_TRIGGER_EPWM1_SOCA,
ADC_CH_ADCIN2, HAL_ADC_SAMPLE_WINDOW);
// ADC-Vhb2 - C1->RC2
ADC_setupSOC(obj->adcHandle[2], ADC_SOC_NUMBER2, ADC_TRIGGER_EPWM1_SOCA,
ADC_CH_ADCIN1, HAL_ADC_SAMPLE_WINDOW);
// ADC-Vhb3 - B4->RB1
ADC_setupSOC(obj->adcHandle[1], ADC_SOC_NUMBER1, ADC_TRIGGER_EPWM1_SOCA,
ADC_CH_ADCIN4, HAL_ADC_SAMPLE_WINDOW);
// VDCBUS - A9->RA1. hvkit board has capacitor on Vbus feedback, so
// the sampling doesn't need to be very long to get an accurate value
ADC_setupSOC(obj->adcHandle[0], ADC_SOC_NUMBER1, ADC_TRIGGER_EPWM1_SOCA,
ADC_CH_ADCIN9, HAL_ADC_SAMPLE_WINDOW);
return;
} // end of HAL_setupADCs() function
================================================================================================================
Regards,
Karthikeyan Ramachandran