Thank you for your replies. I realize 7 PICs is a lot but this is what my system requires so please listen. Here's the situation: There is a Master PIC. It communicates with a computer through the RS232 port to receive all orders for the sub-systems. It also returns feedback information to the computer from the sub-systems. Now there are 3 I2C slave PICs connected to this Master: the speed control PIC, the Orientation PIC, and the steering control PIC. The speed control slave PIC receives the desired speed of the car and sends orders to 2 different PICs; each controlling the motor pressing each pedal of the car. The Orientation PIC communicates with an electronic compass through the RS232 protocol, calculates the heading and distance travelled by the car, and sends it back to the I2C master upon request. The last slave, the steering control slave, receives the desired steering from the I2C master and controls the h-bridge driving the steering motor while getting feedback information through A-to-D from a potentiometer at RA0. Now that makes 6 PICs. The seventh is one that continuously calculates the speed of the car by counting the pulses of an optical encoder attached to the car's wheel. It then provides speed and relative displacement information to the speed control and orientation slaves in a parallel data manner.
Now each system has to be doing its job and calculations at all times and this is why the I2C is implemented in interrupt mode in the 3 slaves. I don't think that I can reduce the number of PICs used. Even the pedal controllers (having nothing to do with the I2C bus) have to be devoted for the sequence of the (stepper) motors.
Now there are 3 slaves and one master involved in the I2C on the new PCB. The largest distance between any slave and the master in terms of track length is about 30 cm (total length with bends). The other 2 slaves are much closer to the master, and the complete PCB is a bit less than an A4 sheet in size. Now I can redraw a huge part of the PCB to make that slave closer to the master. These distances are MUCH better than the way the boards used to be. Each slave was connected through wires (around 40 cm in length) to the bus. Now it's just tracks and the SDA and SCL lines are pulled high through 2K resistors.
The reason I chose the I2C is that it was perfect for the arrangement. Each slave has to be dedicated to a certain task for real-time control, and each one provides feedback to the master upon request. With this new PCB, I have also introduced proper opto-isolation between the motor-drive PICs and the high-current parts to avoid VCC spikes that can affect the I2C. If you say the crystals aren't an issue, don't you think this new design will be better than the first one? The project is approaching the deadline and it really wouldn't be easy to change the whole thing. Sorry for the long reply. Your assistance is always appreciated.
Nichola V Abdo