Technical discussions related to Analog Devices DSPs (including Blackfin, TigerSHARC, SHARC and ADSP-21xx DSPs).
Hello,
I'm having trouble implementing a DPI interrupt.
I already have P14I (the default DPI interrupt) allocated to something else. I want an EXT_MISC
signal to interrupt.
I've got the following code to enable the interrupts in the direct method:
bit set mode1 IRPTEN; //enable global interrupts
bit set imask P13I;
ustat1 = EXT_MISC_1_INT;
dm(DPI_IRPTL_RE) = ustat1;
The SRU has already been set up. I have the following in the IVT:
__P13I :
jump myISR; jump (pc,0); jump (pc,0); jump (pc,0);
This does not seem to work, as the EXT_MISC signal seems to have no "coded
relationship" to the P13I mask.
I've also tried using the indirect method. This in the main program:
ustat1 = dm(PICR2);
bit clr ustat1 MASKP13; //Apply settings
bit set ustat1 DPIINT;
dm(PICR2) = ustat1;
bit set IMASK P13I;
This also does not work. However, it seems to have a relationship between the DPI interrupt and
the PICR process (which handles the P13I interrupt).
However, this has no coded relationship between the EXT_MISC signal and the DPI interrupt (how
does the program know which of the interrupt vectors to jump to?)
Anyone have any clue what to do?
Thanks,
David
On Sat, 6 Oct 2007 g...@hotmail.com wrote: > Hello, > I'm having trouble implementing a DPI interrupt. > > I already have P14I (the default DPI interrupt) allocated to something else. I want an EXT_MISC signal to interrupt. > > I've got the following code to enable the interrupts in the direct method: > > bit set mode1 IRPTEN; //enable global interrupts > > bit set imask P13I; > ustat1 = EXT_MISC_1_INT; > dm(DPI_IRPTL_RE) = ustat1; > > The SRU has already been set up. I have the following in the IVT: > __P13I : > jump myISR; jump (pc,0); jump (pc,0); jump (pc,0); > > This does not seem to work, as the EXT_MISC signal seems to have no "coded relationship" to the P13I mask. I'm not familiar enough with this processor's guts, but there must be some way to relate EXT_MISC_1_INT to P13I. There has to be some other register which creates the connection. > I've also tried using the indirect method. This in the main program: > > ustat1 = dm(PICR2); > bit clr ustat1 MASKP13; //Apply settings > bit set ustat1 DPIINT; > dm(PICR2) = ustat1; > > bit set IMASK P13I; > > This also does not work. However, it seems to have a relationship between the DPI interrupt and the PICR process (which handles the P13I interrupt). > However, this has no coded relationship between the EXT_MISC signal and the DPI interrupt (how does the program know which of the interrupt vectors to jump to?) > > Anyone have any clue what to do? Same thing, there needs to be a way to connect the P13 registers to the DPIINT registers. There must be a way to allow level indirection, i.e. P0 -> P15 always have priority 0->15 and you can attach any interrupt to any level. I don't have a clue what they would be called, but there must be a whole suite of registers that tell the process which interrupt goes to what priority level. And I could be totally wrong too :-) It's just a guess and fun on a saturday afternoon while I wait for laundry.... Patience, persistence, truth, Dr. mike