I have five MC68376 systems communicating with a host PC via CAN using a proprietary protocol. We're running at 125Kbaud. One channel is Rx, one channel is Tx. The Tx we more or less use in a syncronous (polled) mode, with the Tx interrupt basically just clearing the IFLAG register. The Rx is normal interrupt driven. For the most part everything is running smoothly. Most of the CAN traffic occurs in bursts separated by several seconds, which all five systems weather without incident. However, the host (Dell XP system) needs to poll one system at a rate of about 10 hz, and every 100 seconds or so I'll get the Rx Buffer overrun error on that system. I instrumented the ISRs to toggle an I/O pin and found that the Rx ISR is 500 usec. The Rx ISR where the error is dectected doesn't seem to occur in heavy traffic; typically the prior ISR occurs a few msec before - definately no overlap with prior Rx or Tx ISRs. To help debug this I moved all other ISRs to a lower priority INT, including the heartbeat PIT, with no noticeable effect. My past experience suggests to me I'm not locking-reading-clearing the buffers and registers correctly, but I've reread the manual about n hundred times and can't see where I'm going wrong. Is there some subtlety about reading the TouCAN registers and buffers that isn't in the manual? --John
Message
TouCAN Dropping Messages
2003-10-23 by agawam1964
Attachments
- No local attachments were found for this message.