DSPRelated.com
Forums

RE: Thanks again, Art

Started by Art Johnson October 9, 2002
Actually I just remembered a situation where we have seen this sort of thing (ie
unhandled interrupt) in our systems. It happens if we leave the parallel JTAG
cable connected to the system after the program has been downloaded. Of course,
this is the normal situation when you are debugging.

It looks like leaving the JTAG cable connected creates a path into the chip for
noise glitches to disturb the chip and cause the unhandled interrupts. I had
this happen less than an hour ago, and removing the JTAG connector fixed the
problem.

Another thing that has cropped up recently is program crashes caused by the
Hardware Stack Overflow (Vector number 5, Address X:$000A). This is being
caused by CodeWarrior placing 'do' instructions in the program, despite the fact
that the "Allow DO Instructions" box is unchecked in {Target}->Target Settings
Panels->Code Generation->M56800 Processor. We haven't installed a vector for
this (mainly because there's no way to recover from it anyway), so it gives us
the unhandled interrupt. Our MSCAN software (J1939 task) seems to have a lot of
these 'do' instructions for some reason, and crashes the program about once a
minute. Metrowerks is currently working on a fix for this bug.

I am posting this message to the discussion group because I think it could help
others who might be experiencing these problems.

Regards,

Art Johnson
Senior Systems Analyst
PMC Prime Mover Controls Inc.
3600 Gilmore Way
Burnaby, B.C., Canada
V5G 4R8
Phone: 604 433-4644
FAX: 604 433-5570
Email:
http://www.pmc-controls.com
=============================================================

No, we have not had this type of problem. One of our systems has interrupts
coming from four 115200 baud serial ports (2 internal and 2 external), which
have an interrupt on every character sent or received (ie 11520
interrupts/second from each port). It also has 2 period measurement inputs from
Timers (3000 interrupts/second each), 2 periodic Timer interrupts (1200
interrupts/second total), plus the CAN interrupts at 800 per second.

This is a total of 54080 interrupts/second. We have also enabled nested
interrupts, and have interrupts coming in from all 7 priority levels. This
system has been operating reliably for many months with this setup. The serial
port interrupts are, of course, written in assembler for speed, and they are
"Super Fast" interrupts where the interrupt vector points directly to the ISR,
completely bypassing the SDK Interrupt Dispatcher.

Have you checked your stacks to see if any of them are close to overflowing, or
is it possible you are running out of CPU time? In our systems we are using the
DSPOS RTOS, which has a utility that tells you what percentage of each stack has
been used. We also have a free-running counter in the lowest priority task,
which is read and cleared once per second. From this value we can calculate
what percentage of the total CPU time is still free.

I hope this helps.

Best regards,
Art Johnson
PMC Prime Mover Controls Inc. -----Original Message-----
From: Danknick, Dan [mailto:]
Sent: Wednesday, October 09, 2002 11:19 AM
To: Art Johnson
Subject: Thanks again, Art I appreciate the time you took to answer my MSCAN questions on the Yahoo group.

In our DSP we have 4000 interrupts/second coming in from a D/A converter and
everything works fine. When I then add about 800 more CAN Rx interrupts/sec the
system becomes unstable and usually crashes into the unhandled int function -
originating from vector #2 which is unsupported!

Have you any experience with core instabilities based on high interrupt rate or
high nesting rate?

Best regards,
Dan Danknick
Celerity R&D