In general, I'd say it is better to use global interrupt enable/disable than doing this in the VIC. See http://www.arm.com/support/faqip/3677.html IMHO, getting defualt IRQs is a way to clean up/detect spiruous activity rather than the normal way of doiing things. --- In lpc2000@yahoogroups.com, "Curt Powell" <curt.powell@s...> wrote: > Kris, > > I added an assembler harness to accept the default irq, loaded up > VICDefVectAddr with its address, and let it fly. The default handler is > being called periodically (it just prints a diagnostic and returns) so > it appears to be working- I can't give a definitive answer until it runs > for a couple of hours, but so far so good. Thanks so much for your > insight. > > Curt > > -----Original Message----- > From: microbit [mailto:microbit@c...] > Sent: Monday, April 19, 2004 9:28 PM > To: lpc2000@yahoogroups.com > Subject: Re: [lpc2000] Disabling/enabling interrupt causing a data abort > > > > > All, > > > > I have a process receiving data from an rf modem (currently running > > at 4800 baud) using EXTINT2. The data is clocked into a byte and > > complete bytes are placed into a temporary holding buffer. The main > > thread periodically pulls the data from the holding buffer into a > > larger buffer in order to perform operations on it (bit shifts, etc.). > > > I've been receiving data abort exceptions periodically on this > > process. Turns out that I was disabling EXTINT2 prior to pulling data > > > from the temp buffer and reenabling EXTINT2 immediately afterwards. > > This disabling/enabling is what is causing the exception, i.e. if I > > remove the disable/reenable the problem goes away as far as I can > > tell. I am disabling by writing 0x10000 to VICIntEnClr (0xfffff014), > > enabling by writing 0x10000 to VICIntEnable (0xfffff010). > > > > Two questions: > > > > 1. Is this the correct approach for disabling/reenabling EXTINT2? 2. > > > Can anyone venture a guess why disabling/enabling EXTINT2 would cause > > a data abort? > > I had a similar thing happening with circular buffers for UART > operation. When you're enabling/disabling INTs, the VIC apparently can > produce "spurious" INTs, in that an interrupt can occur while it is > being disabled - hence ... Default_IRQ() has to handle it. > > If you don't have a proper vector handler there that handles the > interrupt going thru the default channel, your code might be causing > execution to land in the land of lala, somewhere. (thus the Dabort) My > suggestion (FWIW) : 1. check you have a proper default_IRQ handler > present. 2. put then a breakpoint on it, and see if you're hitting the > default IRQ. 3. Then you can either handle the exception in default_IRQ, > or enable/disable INTs globally to avoid it. > > Try that ? > > Cheers, > Kris > > > > > > Yahoo! Groups Links
Message
Re: Disabling/enabling interrupt causing a data abort
2004-04-20 by embeddedjanitor
Attachments
- No local attachments were found for this message.