I'm using an 18F87J50 to communicate with another processor at 115K. Most of the time the communication works fine but sometimes it gets stuck and when it gets stuck it's stuck permanently. I'm fairly certain the other processor locks up because I see my data going out but nothing comes back.

Anyhow, never had a chance to really look into the problem until today and I'm left with two questions. What exactly does this mean and how do I fix it?

Every time the processors talk to each other, I had the 87J50 print out TXTSTA1/2 and RCSTA1/2. The data sheet seems to indicate an overrun error on RCSTA1. While it's not frequent, this does appear to be causing some problems. In laymans terms, does the overrun error (bit1) simply mean that the RX1 port can't handle the data quick enough? The part that confuses me is that when the most amount of data is coming in, the RX1 port is disabled. I only look for a few bits in a packet of 10 bytes or so.

If the overrun is the issue, how can I solve it? Will lowering the baud rate do the trick or do I have to implement flow control? Any other options available?

Here is a few loops from the communication:

Code:
1:

RX2: 10010000
TX2: 00100110
RX1: 10010010
TX1: 00100100

2:

RX2: 10010000
TX2: 00100110
RX1: 10010010
TX1: 00100100


3: Watchdog reset on remote processor

RX2: 10010000
TX2: 00100110
RX1: 10010000
TX1: 00100100

4:

RX2: 10010000
TX2: 00100110
RX1: 10010010
TX1: 00100100

5:

RX2: 10010000
TX2: 00100110
RX1: 10010010
TX1: 00100100

6: Watchdog reset on remote processor

RX2: 10010000
TX2: 00100110
RX1: 10010000
TX1: 00100100

7: 

RX2: 10010000
TX2: 00100110
RX1: 10010000
TX1: 00100100