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


Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



