SPI Comm issue
I have an issue between an ethernet device and three LS7633R Quadrater encoder counter chips. If I use both of the devices on the SPI network together only the ethernet device works. The LS7633R chips do not communicate the encoder pulses. Disconnecting the ethernet device then the counter chips communication works. So my question is does the SPI mode of the ethernet device is different than the LS7633R chip? if so can the SPI modes be changed on the fly?
The libraries used are:SPI.h, Ethernet.h. For the LS7633R chips I used code, aa sample of the intalization code is supplied.
digitalWrite(selEncodery, HIGH);
digitalWrite(selEncoderz, HIGH);
digitalWrite(selEncoderx, LOW); // Begin SPI conversation
SPI.transfer(0x90); //was 88 // Write to MDR1
SPI.transfer(0x00); //was 03 // Configure to 4 byte mode
digitalWrite(selEncoderx, HIGH); // Terminate SPI conversation
delayMicroseconds(100); //
digitalWrite(selEncoderx, LOW); // Begin SPI conversation
SPI.transfer(0x88); //was 88 // Write to MDR0
SPI.transfer(0x83); //was 03 4 pulses // Configure
digitalWrite(selEncoderx, HIGH);
digitalWrite(enablePoscountx, HIGH);
}
void initEncoderY() {
digitalWrite(selEncoderx, HIGH);
digitalWrite(selEncoderz, HIGH);
digitalWrite(selEncodery, LOW); // Begin SPI conversation
SPI.transfer(0x90); //was 88 // Write to MDR1
SPI.transfer(0x00); //was 03 // Configure to 4 byte mode
digitalWrite(selEncodery, HIGH); // Terminate SPI conversation
delayMicroseconds(100);
digitalWrite(selEncodery, LOW); // Begin SPI conversation
SPI.transfer(0x88); //was 88 // Write to MDR0
SPI.transfer(0x83); //was 03 4 pulses // Configure
digitalWrite(selEncodery, HIGH);
digitalWrite(enablePoscounty, HIGH);
}
void initEncoderZ() {
digitalWrite(selEncodery, HIGH);
digitalWrite(selEncoderx, HIGH);
digitalWrite(selEncoderz, LOW); // Begin SPI conversation
SPI.transfer(0x90); //was 88 // Write to MDR1
SPI.transfer(0x00); //was 03 // Configure to 4 byte mode
digitalWrite(selEncoderz, HIGH); // Terminate SPI conversation
delayMicroseconds(100);
digitalWrite(selEncoderz, LOW); // Begin SPI conversation
SPI.transfer(0x88); //was 88 // Write to MDR0
SPI.transfer(0x83); //was 03 4 pulses // Configure
digitalWrite(selEncoderz, HIGH);
digitalWrite(enablePoscountz, HIGH);
}