1、周波64点连续采样,8通道循环,采用如下方式、、、、
/***************************************************/
//PIT0中断服务程序: 3200Hz 片上ADC采样 每个通道采一次 WSX 2018-12-27
/****************************************************/
static void pit0_kernel_isr(void)
{
_bsp_int_disable(INT_PIT0);
_qpit_clear_int(0, 0);
//反转IO口测量一次转换需要多长时间 =5us
if (_lwadc_wait_next(&handle_Ref125) )
{
_lwadc_read_raw(&handle_Ref125, &raw125);
}
if (_lwadc_wait_next(&handle_ACIa) )
{
_lwadc_read_raw(&handle_ACIa, &raw);
ACSampling_Buff[3][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
}
if (_lwadc_wait_next(&handle_ACIb) )
{
_lwadc_read_raw(&handle_ACIb, &raw);
ACSampling_Buff[4][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
}
if (_lwadc_wait_next(&handle_ACIc) )
{
_lwadc_read_raw(&handle_ACIc, &raw);
ACSampling_Buff[5][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
}
if (_lwadc_wait_next(&handle_ACIz) )
{
_lwadc_read_raw(&handle_ACIz, &raw);
ACSampling_Buff[6][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
}
if (_lwadc_wait_next(&handle_ACUa) )
{
_lwadc_read_raw(&handle_ACUa, &raw);
ACSampling_Buff[0][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
}
if (_lwadc_wait_next(&handle_ACUb) )
{
_lwadc_read_raw(&handle_ACUb, &raw);
ACSampling_Buff[1][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
}
if (_lwadc_wait_next(&handle_ACUc) )
{
_lwadc_read_raw(&handle_ACUc, &raw);
ACSampling_Buff[2][SampleCounter] = SampledRawDataDiffCal(raw,raw125);
}
SampleCounter++;
if(SampleCounter >= (SAMPLING_POINTTS*2))//连续采集64点存储一次
{
SampleCounter = 0;
NewSampData_Flag = 1; //是否还需要?
fnGetFrequency();
//每采一周波重新设定中断频率,由测频得
_qpit_init_freq(0 , 0, /*The Timer, The Channel*/
sFreqency.UpdataIntFrequency, BSP_BUS_CLOCK, FALSE);
}
_bsp_int_enable(INT_PIT0);
_qpit_unmask_int(0, 0);
return;
}
若采用上述方法将无法保证角差的稳定性,即校准后也无法稳定,原因在于转换时间无法保证(_lwadc_wait_next)。
2、改良后采集方法
首先用一个PIT保证采样频率,该服务函数内仅启动采样不读取数据,另一个PIT给转换时间留有一定余量,判COCO标志后直接读取数值,这样可以保证每个通道的采样间隔相同,即相角差稳定,可以校准使其归一。
另外,PDB的BacktoBack方式,在本质上也不能保证转换时间的稳定,它在上一个转换结束后立刻启动下一个,不能解决。
总结一下,在电能质量采集方面,需要保证相角的稳定性,不能容许ADC采样转换时间不稳,所以必须有稳定的触发信号,稳定的对各个通道进行触发,不能依赖转换时间的结束。这个触发可以是中断,可以是其它外部触发。