ADXL345 SPI
Salve a tutti,
Sto provando a collegare la scheda ADXL345(accelerometro) con il PIC18F4550.
I collegamenti sono MOSI -> RD7, MISO -> RB0, SCK -> RB1, SS -> RB2.
Entrambe le schede sono alimentate a 3,3v per cui come valori di segnali in uscita dovrebbero essere perfettamente compatibili(correggetemi se sbaglio). Il PIC lavora come Master mentre L'ADXL è lo Slave.
Il codice sembra non funzionare in nella comunicazione SPI in generale, il codice per scrivere un dato e ottenere una risposta è il seguente:
l'inizializzazione invece è
Purtroppo ricevo sempre 0x00 quindi credo non funzioni...voi vedete qualche errore che non ho notato?
Grazie per l'aiuto
Sto provando a collegare la scheda ADXL345(accelerometro) con il PIC18F4550.
I collegamenti sono MOSI -> RD7, MISO -> RB0, SCK -> RB1, SS -> RB2.
Entrambe le schede sono alimentate a 3,3v per cui come valori di segnali in uscita dovrebbero essere perfettamente compatibili(correggetemi se sbaglio). Il PIC lavora come Master mentre L'ADXL è lo Slave.
Il codice sembra non funzionare in nella comunicazione SPI in generale, il codice per scrivere un dato e ottenere una risposta è il seguente:
- Codice: Seleziona tutto
unsigned char ID = 0;
//ADXL_Init();
SS = 0;
SSPBUF = 0x00; //scrivo l'adress
while(!PIR1bits.SSPIF); //aspetto la fine della trasmissione
SSPIF = 0; //azzero il flag
SSPBUF = 0x00; //scrivo dati a caso per ottenere la risposta con lo shifting del reg
while(!PIR1bits.SSPIF); //aspetto
SSPIF = 0; //azzero
ID = SSPBUF;
SS = 1;
l'inizializzazione invece è
- Codice: Seleziona tutto
SSPSTATbits.SMP = 0; //data sampled at middle of clock
SSPSTATbits.CKE = 0; //idle to active clock state
SSPCON1bits.WCOL = 0; //no collision
SSPCON1bits.SSPEN = 1; //enable spi
MOSI = 0; //output
MISO = 1; //input
SCK = 0; //output
SS = 0; //output
SSPCON1bits.CKP = 0; //idle state is low
/*FOSC/4*/
SSPCON1bits.SSPM0 = 0;
SSPCON1bits.SSPM1 = 0;
SSPCON1bits.SSPM3 = 0;
Purtroppo ricevo sempre 0x00 quindi credo non funzioni...voi vedete qualche errore che non ho notato?
Grazie per l'aiuto

