ciao in merito a SPI credo d 'aver trovato un ottimo riferimento qui, una guida completa che parte dalla teoria e finisce con la pratica :
Using Serial Peripheral Interface (SPI) Master and Slave with Atmel AVR Microcontroller | ermicroblog
In merito al LIS302DL e la lettura dell'accelerometro:
I pin da usare :
SS pin 10 PWM
SDI pin 11 PWM
SDO pin 12 digital pin
SCK pin 13 digital pin
QUINDI PER RICEVERE I DATI DAL DEVICE OCCORRE
digitalWrite(slaveSelectPin,LOW); abbassa l' SS quindi start SCK
byte value_X = SPI.transfer(address); riceve il valore registrato all'indirizzo
digitalWrite(slaveSelectPin,HIGH);
adress [X,X,X,X,X,X,0,0]
byte [0,0,0,0,0,0, 0,1]
adress |= (2 << 0x01);
A
Citazione:
Originalmente inviato da ElNonino @Fausto: il protocollo, sia hw che sw, del bus I2C è nato come single master multi slave, uno comanda gli altri ubbidiscono, in qualche modo è simile al Profi-BUS nativo.
In effetti è possibile connettere anche 2 master fra loro e farli cooperare/dialogare per gestire gli slave, è però una configurazione limite e piuttosto pericolosa come affidabilità, se a questo aggiungi una bassa velocità di comunicazione ed una scarsa efficienza (basso payload) tutto ciò rende il protocollo I2C adatto ad applicazioni con pochi slave, poco rischiose e con latenze lunghe.
Personalmente preferisco operare le comunicazioni in sistemi multi-master e multi slave utilizzando la SPI localmente e protocolli più sofisticati su distanze maggiori (Profi-BUS, CAN-BUS etc.).  |