Good day Sirs, I need your help on setting up SHARC (ADSP-21160M) DMA chaining for interrupting the DSP core when a whole block of data has arrrived, not only sample based. I use a AD1881 AC'97 CODEC attached to SPORT1. BTW, ADDS-21160M EzKit Lite (the old one by SpectrumSignal). I have the system set up in such a way that although it already fires an interrupt when 5 TDM timeslots arrive from the CODEC, I need it to fire the interrupt every 5*BLOCKSIZE TDM timeslots arrive. It's because the AC'97 codec sends also some side information wich actually doesn't contain any audio information. So, what I want to do is to get the 5*BLOCKSIZE timeslots in the DMA receive buffer, and once this buffer is full, fire up a DMA interrupt and move the valid audio data (slot 3 for left channel and slot 4 for right channel) to other buffers to start processing my blocks if audio data. What I did was changing the DMA receive buffer from length 5 to length 5*BLOCKSIZE, as well as the counter parameter in the TCB, within a routine which fired up the interrupt everytime the 5 timeslots buffer was ready (3 first slots are useless side info, the other two are the left and right channel audio info). It was supposed to work (my "reconfiguration") and it almost did, but I found that say every 10 - 12 audio samples I get ALWAYS zero valued samples, which is absolutely wrong. What else should I take care of? Am I missing something else? Still better, I would thank well commented "drivers" for performing block processing in either C or ASM language on SHARCS using this kind of CODECs: AD1819 and AD1881 families. I've already had a look to Mr. Tomorakos docs on interfacing SHARCs (both ADSP-21165L and ADSP-21161N) to this kind of CODECs, but from what I read my approach should work. So, if have other resources to point to, better for me. Thanks a lot in advance, JaaC |