Part Number:TMS320F28035
在10us周期的中断中,对一个50Hz周期的正弦波采样,计算有效值,但是加了下面的采样代码,就有莫名其妙的问题,比如影响通信等;这些代码有问题吗?
interrupt void isr()
{//10US
EPwm6Regs.ETCLR.bit.INT = 1; // Clear INT flag for this timer
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; // Acknowledge this int to receive more int from group 3
if(bACSamplyFinish == 0)
{//10us
TimCount200us++;
if(TimCount200us >= 20)
{//200us
TimCount200us = 0;
u16AcIbAdc = AdcMirror.ADCRESULT3;
u16AcIcAdc = AdcMirror.ADCRESULT4;
g_u32AcIbAdc[ACSamplyCount] = u16AcIbAdc ;
g_u32AcIbAdc[ACSamplyCount] =u16AcIcAdc ;
ACSamplyCount++;
if(ACSamplyCount >= 100)
{//20ms
bACSamplyFinish = 1;
ACSamplyCount = 0;
}
}
}
Barbecue:
代码中并没有耗时的操作,问题似乎不在这里。
注释掉下面这行试试看问题有没有改善
bACSamplyFinish = 1;
,
zhou harry:
这行是为了采样一个周期就开始计算有效值;我刚才用示波器抓过,加了这段代码,至少需要0.65us的时间
,
Ben Qin:
zhou harry 说:但是加了下面的采样代码,
这里指的是哪一部分?
,
zhou harry:
整个
if(bACSamplyFinish == 0){//10us
………………….
}
,
Ben Qin:
AdcMirror.ADCRESULT3这个参数是什么?