AnsweredAssumed Answered

Issues implementing a Reverb in C on 21369 EZKIT

Question asked by horst on Jul 26, 2017
Latest reply on Oct 17, 2017 by Jithul_Janardhanan

Hi everybody,
For a university project I am currently trying to implement the famous Dattorro plate reverb (see additional info below) in C on a ADSP-21369 EZKit board.
So I started with the instructions from the EZKit manual to write the code in CCES, based on the block-based Talkthrough example code from the Board support package.


I have shared the code with you in the attachment. Please take a look at it.
(Please note that 1) I am a newcomer to DSP programming and 2) the code is not optimized in its current state.
So here and there are variables, which are not necessarily needed for the signal process, but they make it a lot easier for me to analyze in debug mode.)


I have written all the code in the files with the "_DSP"-prefix myself.
And some small edits in main.c, ADDS_21369_EzKit.h and blockProcess.c.
Everything else remains unchanged from the block based talktrough example.


Now let's get to the problem:
Like in the block based talkthrough, the basic signal processing is happening inside blockProcess.c
The function processBlock() again calls functions from the DSP_reverb.c file, where the initialization of all the filter modules and the signal processing in detail takes place and so on.
When building and debugging the program in its current state (as attached), the Debug mode seems to be working fine.
Once I comment out the remaining struct-inits inside DSP_init(), the Debug mode prevents me from stepping through breakpoints like before and randomly gives me error messages like:
"Core Hang detected on Device 0: CORE Access to a SPORT/LINK Port is hung at PC.0x090183"

Only by resetting the DSP, CrossCore is letting me into Debug mode again.


As the filter modules worked fine for me before (by having a look at several variables inside the "Expressions" view), I currently guess this is some memory-related issue.
I have activated the "External Memory" setting inside system.svc, but still there is no improvement.
Besides, the board is not putting out any sound signal on DAC4 anymore after the memory change in the svc-file.
Do you have an idea, how this could be solved?


Thank you and BR,

Additional Info:
You can find the paper of J. Dattorro here:
(the schematic for the block signal chain can be seen on page 3)