This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C5515 ezDSP audio example interrupt mask



Setup: C5515 eZdsp USB stick v2, CCS v4.1.3.00034

I am using the AIC3204 example code from Spectrum Digital for the C5515 eZdsp board (http://support.spectrumdigital.com/boards/usbstk5515/reva/files/usbstk5515_BSL_RevA.zip), and have found an error that results in interrupts being generated twice as fast as expected.  Near the end of the two audio tests, the interrupt mask register is set illegally to enable both mono and stereo RX/TX interrupts.  This is forbidden in the C5515 documentation for the I2S module (SPRUFX4a).

usbstk5515_BSL_v2_RevA.zip/usbstk5515_v1/tests/aic3204/aic3204_loop_stereo_in1.c

usbstk5515_BSL_v2_RevA.zip/usbstk5515_v1/tests/aic3204/aic3204_tone_headphone.c

    //WRONG!! I2S0_ICMR = 0x3f;    // Enable interrupts
    //SPRUFX4A warns of undefined behavior if both stereo and mono interrupts are enabled!
    I2S0_ICMR = 0x0028;    // Enable interrupts for stereo TX and RX

With the mask register set properly, I can verify with a general-purpose timer that I get one interrupt every ~ 2040 cycles (timer value is ~1022 at lowest SYSCLK divider of 2 at 100 MHz => about 2044 cycles; ideal is 2083.3 cycles, which leaves around 40 cycles overhead for my hackish clock()-like function).