
![]() | #1 (permalink) Top |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| accellerometro ST & I2c
salve ho preso un Accelerometro della STMicroelctronics, utilizza un LIS302DL, comunica con un protocollo I2C ecco il datasheet: http://www.st.com/internet/com/TECHN...CD00135460.pdf Con Arduino c'è la libreria Wire che ci permette di leggere comodamente.. mi volgio spingere un po piu a fondo anche per capire meglio questo protocollo e avere le idee piu chiare... Il protocollo seriale I2C con un PIC16F84 - Davide Bucci MI PERMETTO DI COMMENTARE IL CUORE DELLA TRASMISSIONE: LOOP BCF PORTB,0 ; ASSICURA UNO 0 ALLA LINEA CLOCK RLF DATO,F ;PONE IN C DI STATUS IL BIT + SIGNIFICATIVO BCF PORTB,1 ; ASSICURA 0 ALLA LINEA DATI BTFSC STATUS,C ; LEGGE IL BIT + SIGNIFICATIVO BSF PORTB,1 ; se == 1 allora scrive 1 nella SDA CALL DELAY ; altrimenti attesa lascia a zero la SDA BSF PORTB,SCK ; pone a 1 la SCK CALL DELAY DECFSZ TMP,F ; esegui 8 volte dopo di che esci GOTO LOOP return |
![]() | ![]() |
![]() | #2 (permalink) Top |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| c'è qualcosa che non mi convince
salve a tutti, mi rivolgo a chi ha maggiore pazienza !! leggendo il documento seguente: Il protocollo seriale I2C con un PIC16F84 - Davide Bucci trovo qualcosa che nn mi convince, per quando concerne la parte della ricezione, da nessuna parte leggo BSF I2CTRIS, SCL ovvero da nessuna parte pone SCL come input.... chiedo se la mia osservazione è corretta? a presto fausto |
![]() | ![]() |
![]() | #3 (permalink) Top | |
User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
![]() | ![]() |
![]() | #4 (permalink) Top |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| okkio
attenzione mettendo ad (uno) il bit di posto SCL (zero) di I2CPORT non stai settando la porta come input, ma stai mettendo semplicemente valore alto.. bsf I2CPORT, SCL (pone valore alto !) Quindi il dubbio rimane! Adesso sposto l'attenzione all'accelerometro... ..perchè In questo link c'è un esempio di come usare l'accelerometro on Arduino, per il momento ho solo dato una lettura, ancora nn ho provato a metterci le mani. Arduino & LIS302DL dove I2C_ADDRESS dovrebbe essere 28 ..anche se nel codice non c'è la #define, l'autore spiega sopra che l'indirizzo per I2C è proprio 28 qui spiega alcune cose utili specie per la velocità 100 oppure 400 Hz Tripple Axis Accelerometer - LIS302DL - bildr a dopo Ultima modifica di faustog_2 : 13 novembre 12 alle ore 07:08 |
![]() | ![]() |
![]() | #5 (permalink) Top | |
User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
![]() | ![]() |
![]() | #6 (permalink) Top |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| ???
allora c'è qualcosa che mi sfugge.. dunque.... supponendo che ci sia il master (per esempio un Pic16F84 ) ..che decide di comunicare con lo slave il sensore LIS302DL ...dopo aver concordato l'indirizzo SAD e dopo aver preso l'ack ...inizia la vera e propria comunicazione ..che si avvale di due linee.... in cui il Mastrer deve ascoltare x entrambe.. quindi per entrambe deve avere una modalità di lettura Input, quindi mi aspetto anche BSF TRISB, 0 oltre che BSF TRISB,1 invece non c'è! ..non esiste nel codice sorgente! In teoria il master dovrebbe ascoltare su entrambe le linee, quindi modalità Input per entrambe. Appena arriva un fronte di salita sulla SCL ...allora prende per buono il valore :alto, basso che legge nella SDA. ..dalla tua risposta intuisco ...di non aver capito qualcosa da questo protocollo! |
![]() | ![]() |
![]() | #7 (permalink) Top | |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| OKkio
rileggendo il sorgete in ASM e la tua risposta ho dedotto il funzionamento corretto.. dunque Il master legge dalla SDA solo dopo aver scritto sulla SCL un bit Alto (uno) .. come dire.... DAMMI UN BIT DEL BYTE DA RICEVEREEEE ! per cui è essenziale che SCL sia di uscita per il master , mentre l'SDA di ingresso.. in questo modo si spiega il perchè.. spero d'aver centrato il concetto ..purtroppo usando le classi pronte di Arduino queste cose non si imparano, rimangono concetti inesplorati... a dopo fausto Citazione:
Ultima modifica di faustog_2 : 13 novembre 12 alle ore 12:06 | |
![]() | ![]() |
![]() | #8 (permalink) Top |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| LIS302DL & Pic
di seguito c'è la codifica per far comunicare un Pic16F88 con il LIS302DL, ovviamente tale sorgente può essere trasportato su qualunque Pic equivalente. Comuque dal sorgente si possono conoscere i dettagli per la comunicazione con il sensore http://www.sparkfun.com/datasheets/S...2DL-Tester.zip qui c'è il link della sparkfun per LIS302DL: https://www.sparkfun.com/products/8658? Ultima modifica di faustog_2 : 13 novembre 12 alle ore 12:29 |
![]() | ![]() |
![]() | #9 (permalink) Top | |
User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
![]() | ![]() |
![]() | #10 (permalink) Top |
User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| sok
ciao ...ok ho fatto lo studio sul seriale asincrono ho fatto diverse applicazioni, con 14F84, 628, 876 ecc.. non mi sono mai cimentato con I2C.. tranne che su Arduino usando le librerie, avevo dato una lettura superficiale ed erroneamente credevo d'aver letto che x il master in fase di ricezione i due bus fossero di lettura entrambi ..invece ho interpretato male.. tutto qui.. Adesso leggendo il codice sorgente in assembler confrontandomi con te mi sono studiato nei dettagli sto protocollo sincrono .. mi fa piacere aver compreso il codice in assembler punto a punto ...da esso traggo il miglior insegnamento a dopo e grazie per la pazienza |
![]() | ![]() |
![]() |
Bookmarks |
| |
![]() | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
I2C - lezione | faustog_2 | Circuiti Elettronici | 1 | 13 marzo 12 19:36 |
I2C - lezione | faustog_2 | Circuiti Elettronici | 3 | 23 febbraio 12 10:06 |
I2C PIC SLAVE | LeoPG | Circuiti Elettronici | 1 | 17 febbraio 05 18:51 |