在线时间6 小时
UID3509576
注册时间2018-9-26
NXP金币0
该用户从未签到
新手上路
- 积分
- 42
- 最后登录
- 2019-1-9
|
问题描述:开PIT定时中断(312.5us一次,3200Hz),中断内部对7个通道进行等待和读取采样值操作,总超时(>312.5us)无法跳出中断执行其他程序。 配置的采样频率是总线频率(60MHz/8),不应该用这么长时间的。 求大神指点一二,谢谢~!代码:
static void pit0_kernel_isr(void)
{
pit0_kernel = 0;
_bsp_int_disable(INT_PIT0);
_qpit_clear_int(0, 0);
if (_lwadc_wait_next(&handle_ACIa) )
{
_lwadc_read(&handle_ACIa, &raw);
ACSampling_Buff[0][SamplePoints] = raw;
}
if (_lwadc_wait_next(&handle_ACIb) )
{
_lwadc_read(&handle_ACIb, &raw);
ACSampling_Buff[1][SamplePoints] = raw;
}
if (_lwadc_wait_next(&handle_ACIc) )
{
_lwadc_read(&handle_ACIc, &raw);
ACSampling_Buff[2][SamplePoints] = raw;
}
if (_lwadc_wait_next(&handle_ACIz) )
{
_lwadc_read(&handle_ACIz, &raw);
ACSampling_Buff[3][SamplePoints] = raw;
}
if (_lwadc_wait_next(&handle_ACUa) )
{
_lwadc_read(&handle_ACUa, &raw);
ACSampling_Buff[4][SamplePoints] = raw;
}
if (_lwadc_wait_next(&handle_ACUb) )
{
_lwadc_read(&handle_ACUb, &raw);
ACSampling_Buff[5][SamplePoints] = raw;
}
if (_lwadc_wait_next(&handle_ACUc) )
{
_lwadc_read(&handle_ACUc, &raw);
ACSampling_Buff[6][SamplePoints] = raw;
}
SamplePoints++;
if(SamplePoints == 64)//连续采集64点存储一次
{
SamplePoints = 0;
for(int i = 0;i < 7;i++)
{
for(int j = 0;j < 64;j++)
{
ACSampling_Save[i][j*2+1] = 0.0;
ACSampling_Save[i][j*2] = (float)(ACSampling_Buff[i][j])-1.250/1000.0;//还需按照实部,虚部,实部,虚部.....的顺序存储数据才能进行FFT
//1250为理想基准值,提高精度可尝试实时测量
}
}
}
//---
_bsp_int_enable(INT_PIT0);
_qpit_unmask_int(0, 0);
pit0_kernel = 1;
return;
}
|
|