Other Parts Discussed in Thread: AMC3306EVM
你好,我使用了贵公司的F280049C控制板,调制器用的AMC3306EVM,我想使用其中的SDFM同步功能,程序模板为sdfm_ex4_pwm_sync_cpuread.c。实际使用中,我能够采集到和输入一致的波形,并且能够在PWM1A(GPIO0)引脚上抓到PWM波形,但是我想问一下,这个同步体现在哪里?按照手册上的说明,PWM event能够复位DOSR counter。为了验证确实能够复位DOSR counter,我在sdfmDR1ISR中翻了个IO,按照我的理解,当GPIO0引脚上PWM反转时,中断中IO的反转周期或者占空比会因为DOSR counter的复位而产生变化,但是无论我怎么操作,进入中断的时间从来就没发生变化,或者说感觉DOST counter从来就没有复位过,请问是我的理解或操作有问题吗?麻烦解答,谢谢!
__interrupt void sdfmDR1ISR(void)
{
GPIO_togglePin(12);
static uint16_t loopCounter1 = 0,times = 0;
SDFM_setOutputDataFormat(SDFM1_BASE, SDFM_FILTER_1,
SDFM_DATA_FORMAT_16_BIT);
//
// Read SDFM flag register (SDIFLG)
//
if(loopCounter1 >= MAX_SAMPLES)
{
loopCounter1 = 0;
times++;
}
while((HWREG(SDFM1_BASE + SDFM_O_SDIFLG) & 0xF000U) != 0xF000U)
{
}
filter1Result[loopCounter1] =
(int16_t)(SDFM_getFilterData(SDFM1_BASE, SDFM_FILTER_1) >> 16U);
filter2Result[loopCounter1] =
(int16_t)(SDFM_getFilterData(SDFM1_BASE, SDFM_FILTER_2) >> 16U);
filter3Result[loopCounter1] =
(int16_t)(SDFM_getFilterData(SDFM1_BASE, SDFM_FILTER_3) >> 16U);
filter4Result[loopCounter1++] =
(int16_t)(SDFM_getFilterData(SDFM1_BASE, SDFM_FILTER_4) >> 16U);
//
// Clear SDFM flag register (SDIFLG)
//
SDFM_clearInterruptFlag(SDFM1_BASE, SDFM_MASTER_INTERRUPT_FLAG |
SDFM_FILTER_1_NEW_DATA_FLAG |
SDFM_FILTER_2_NEW_DATA_FLAG |
SDFM_FILTER_3_NEW_DATA_FLAG |
SDFM_FILTER_4_NEW_DATA_FLAG);
//
// Acknowledge this interrupt to receive more interrupts from group 5
//
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP5);
}
