Hi,
In my realtime system, the C6746 DSP is loaded 60% consistently (3ms out of 5). Therefore, I would like to power down the megamodule the remaining 2ms for current drain reasons. I am trying to use the C674X Megamodule power down instructions described in 9.2.5 in sprufk5a.pdf, but it is not working. In order to do this, I am running the following lines in the background task (no RTOS) whenever the mainloop waits for an interrupt to occur with new data to start processing:
HWREG(PDCCMD_REGS) |= 0x00010000; //PDCCMD_REGS defined as 0x01810000
asm("IDLE");
There are 2 interrupts in the system that are enabled at power up and never again disabled or enabled. I want the DSP to wake up if any of the 2 interrupts fires off. That is the reason why the interrupts are not enabled again before the asm instruction.
HWREG(PDCCMD_REGS) is set to 0 in the context of any of the 2 interrupts to disable the power down feature.
My questions are:
1- Is there any step that I am missing here.
2- The document mentions that to change PDCCMD_REGS, the processor has to be in "Supervisor mode". How do I put the C6746 in Supervisor mode?
3- The document mentions that this mechanism should be used only for "longer periods of time". Is 2ms considered a long period of time?
4- Are there any examples on how to do this (in Starterware for example)?