No debería ser un problema. El Chipselect del acelerómetro es el pin 10, y la de la tarjeta SD shield es 7.
Lo que significa que usted puede utilizar una tabla en un momento, como establece su chipselect de ALTA una vez que haya terminado con él.
Básicamente, el código usual para el acceso al acelerómetro es como este (a partir de aquí, sólo las partes relevantes):
int CSa=10; //Chipselect for accelerometer
void writeRegister(char registerAddress, char value){
//Set Chip Select pin low to signal the beginning of an SPI packet.
digitalWrite(CSa, LOW);
//Transfer the register address over SPI.
SPI.transfer(registerAddress);
//Transfer the desired register value over SPI.
SPI.transfer(value);
//Set the Chip Select pin high to signal the end of an SPI packet.
digitalWrite(CSa, HIGH);
}
//This function will read a certain number of registers starting from a specified address and store their values in a buffer.
//Parameters:
// char registerAddress - The register addresse to start the read sequence from.
// int numBytes - The number of registers that should be read.
// char * values - A pointer to a buffer where the results of the operation should be stored.
void readRegister(char registerAddress, int numBytes, char * values){
//Since we're performing a read operation, the most significant bit of the register address should be set.
char address = 0x80 | registerAddress;
//If we're doing a multi-byte read, bit 6 needs to be set as well.
if(numBytes > 1)address = address | 0x40;
//Set the Chip select pin low to start an SPI packet.
digitalWrite(CSa, LOW);
//Transfer the starting register address that needs to be read.
SPI.transfer(address);
//Continue to read registers until we've read the number specified, storing the results to the input buffer.
for(int SPI.transfer(0x00);
}
//Set the Chips Select pin high to end the SPI packet.
digitalWrite(CSa, HIGH);
}
Tenga en cuenta que el CSa pin está hecha de BAJA antes de la lectura o la escritura, y se establece en ALTO una vez que haya terminado con él.
Asegúrese de que usted haga lo mismo para el chipselect para la tarjeta SD shield -- mantener su chipselect en lo ALTO cuando no está en uso, y en BAJA sólo para la duración de tiempo cuando usted desea comunicarse con ella.