ΣSigmaStudio Ask AI Русский Log in

glitches occurs after re-enable the sport interrupt

Processors & DSP kweiwen Aug 23, 2021 00:00 6 replies Original on forum ↗
Subscribe
kweiwen Question
Aug 23, 2021 00:00

hi adi admins,

here's my design trying to do:

1. initialisation

2. generate waveform at audio callback process

3. stop audio callback process, disable interrupt

4. do something takes a mount of time

5. re-enable interrupt and back to 2.

would you gave some suggestions about how to do this correctly? there's continuous glitches after step 5.

(glitches, not happened every time but most of time)

(normal waveform)

reinstall-codec.rar

typo

[edited by: kweiwen at 4:05 AM (GMT -4) on 23 Aug 2021]

DS1Z_QuickPrint1.png
DS1Z_QuickPrint1.png
DS1Z_QuickPrint2.png
DS1Z_QuickPrint2.png
Anand Selvaraj Reply
Oct 12, 2021 00:00

Hi Kweiwen,

Apologies for the delay. Were you able to get going. Let me know if you are still facing any issues.

1) Is it possible for you to share the SPORT status register values.
2) Do you have any external hardware?
3) Can you explain the setup?
4) Is it possible for you to share a simple block diagram?

Regards,
Anand Selvaraj.

kweiwen Reply
Oct 14, 2021 00:00

Hi Anand,

I took DAI_PB19 to stop audio callback process and disable interrupt, the hardware is ADSP21479 EZ-KIT.

reinstall-codec.zip

regards,

k

Anand Selvaraj Reply
Dec 3, 2021 00:00

Hi Kweiwen,

Apologies for the delay.

Can you please confirm which signal you have probed and you shared to us. Please let me know whether any error bit is enabled on SPORT Error Status Register (SPERRSTAT) while you are getting glitches.

Regards,
Anand Selvaraj.

kweiwen Reply
Jan 30, 2022 00:00

hi Anand, SPERRSTAT is not enabled when i get glitches. would you share a correct way to stop sport interrupt?

kweiwen Reply
Jan 30, 2022 00:00

/* while loop */
while(1)
{
if(inputReady)
{
count++;
handleCodecData(buffer_cntr);
}
volatile int dai_value = ((*pDAI_PIN_STAT)& DAI_PB19);
if(dai_value == 0x40000)
{
adi_int_EnableInt(ADI_CID_P3I, false);
isProcessing = 0;
inputReady = 0;

/* clear buffer and chained DMAs */
clear_currentBuffer();
clear_currentDMA();

/* upgrade flag will break the while loop */
break;
}
}

/* out side the while loop */
init_dynamic_memory_here();
adi_int_EnableInt(ADI_CID_P3I, false);
enter_while_loop();

kweiwen Reply
Jan 30, 2022 00:00

what i really what to do is to allocate some object(using malloc) while the real-time processing is stopped.