ADAU1761 - Microcontroller integration, Help needed!
Hi,
I have some weird problems reading some outputs using DSP readback or Level detectors after I export my SStudio files for my microcontroller to bootup the DSPs.
When I compare the outputs of my Level detectors of the DSP programmed with SStudio vs programmed with the uC both look fine when I have my schematic pretty much completely stripped. Then I add a block and then another to complete my algorithm, then the behavior of the output is no longer the same whether the DSP is programmed with SStudio (correct) vs uC (bad)...
For example, I have this specific problem:
When I add a "General 2nd order Index Selectable" filter, the Level output read with a Level Detector is not the same whether I am programming the DSP with SStudio vs the uC. Then when I flip a software Switch in my sstudio schematic (after programming with the uC) the Level output is completely saturated, which is even a worse problem and not normal because this switch as nothing to do with the output Level and also I really don't have this behavior when my DSP is programmed using SStudio.
I looked at the log of my uC messages to see if there is a bug during the default_download procedure and everything seems fine...
My hypothesis are:
1- Some SStudio blocks take some memory space which may overlap with some other memory space when programmed in the uC
2- I have reached the maximum memory space of my uC? (which doesn't seem to be the case when I look at the uC used ressources, 31% RAM and 55% flash memory used)
3- There is some kind of address conflict of the sstudio blocks, when they are programmed with the uC
4- Specific SStudio blocks are not exported correctly when using the Export System Files in SStudio...
5- I2C messages send from uC to DSP are not the same or too fast compared with SStudio and the USBi programmer. (I don't get any buffer overflow when sending my I2C messages which are seperated in chunks already to eliminate some problems).
I am pretty exhausted of debugging this, I have spent several months trying to fix this problem. I don't know where to look and what to do anymore.
Thanks for your help
Vincent
Audio Signal Processors
adau17xx
micro controller
sigmastudio
SigmaDSP Audio Processors
adau1761
SigmaDSP
Show More
Hi again,
Since nobody answered and I found some kind of specific list of blocks that are problematic either used on their own or with other blocks in the schematic for uC integration:
- Gain enveloppe
- Volume controls if slider is set between 0dB and 20dB on initialization
- General 2nd order Index Selectable filter (which I really need!)
- Division blocks (which when I replace with 1/x * y with a mult doesn't calculate as fast?!? because of the small value of 1/x?)
- Feedback blocks
Right now I am trying to use the State Q/F filter to replace the General 2nd order Index Selectable filter which I need.
I simply want to reject 2 very high intensity pure tones and keep 1 very small pure tone and nothing else... I tried using the State Q/F filter in Notch configuration to reject 1 of the pure tones and 1 Bandpass filter to remove the rest of this pure tone and the second one and everything else. For now it is not sufficient so I need an additional filter stage, but then my output becomes noisier and the pure tones are boosted instead of decreasing...
I want to have some kind of response like this, but being able to change the center frequency of each filter with an index:
Hello Vincent,
Sorry this went unanswered. I just ran across this post. Looking at the time you posted this I think it hit us during a transition. Anyhow.
I would like to comment about a couple of things. The volume cell issue is strange. I do not know of any issues now or then with a volume control. It must have been a detail with how it was being used but I would need to see the project.
Your comment about dividing 1/x * y. There is no way the program can be slower with a divide then a multiply with the exception of MIPS used. In that way it is slower but the SigmaDSP architecture is such that all the code is executed during every frame. If it overruns then something does not work properly depending on the processor. So as long as the number of instructions do not exceed the number of instructions it can calculate in one sample period then it will all run at the same speed. That said, a DSP does two things very well, multiply and add. It does not do subtraction and division very easily. Subtraction is a little easier to deal with but division should be avoided when ever possible to save on MIPS. It also is a good idea since you also will avoid any division by zero situations.
The index selectable filters should have worked. The common issue with using anything selected with an index is the number format. It is an unsigned integer not a fix point number. So usually some sort of translation is required. I would have had to see your code to see what was wrong. It was most likely something simple.
Anyhow, I hope you are doing well and have completed your studies at the university.
BR
Dave T
Thanks for your answer Dave.
It has been 3 years since my post. I have migrated to another platform since then.
I was able to make the project work with SigmaStudio, so I made it work for my experiment and then moved on.
Thanks again,
Vincent
This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.
Thank you,
EZ Admin
Please log in to reply.



