protocollo I2C

« Older   Newer »
  Share  
view post Posted on 27/1/2011, 08:55
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


CITAZIONE
Microchip sta cambiando tutti gli emulatori/debugger), onde ovviare al fatto che usare 2-3 pin per l'emulatore limiterebbe il numero di I/O disponibili, viene usato un modulo da inserire al posto del chip vero e proprio, su cui é montato lo stesso chip ma con più pin (es. nel caso del PIC16F716, che é un 18 pin, sul modulo di emulazione è montato un PIC16F716-ICD che é un 16F716 a 28 pin in cui alcuni dei 10 pin aggiuntivi sono usati proprio per l'emulazione).

Questo sistema mi piace di più. Anche se è un bel sistema quello di fare la programmazione con il chip inserito sulla scheda finale. Non potrebbe essere un problema se nella scheda già fosse montato dell'hardware che usa i pin di programmazione?
Passi per il reset, ma se si usa con output un pin che poi viene impiegato dal programmatore come input, il segnale del programmatore potrebbe andare a finire nel resto del circuito fino ad attivare l'output e quindi dovrebbe in qualche modo essere disattivato, limitando molto le prove, ed il bello di questo è proprio il fatto che un PIC da 8 PIN può avere 6 I/O (O 5? Il reset è sempre reset?).
 
Web  Top
view post Posted on 5/6/2011, 10:03
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Rieccomi dopo una lunga pausa su questo argomento, pensavo di poter usare il modulo radar, ma invece non usava il protocollo I2C.

Ora che ho finito quel progetto, vorrei dedicarmi seriamente allo studio di questo protocollo, usando un accelerometro.

ecco il link del mio "aggeggio"

www.futuraelettronica.net/pdf_ita/5300-M-ACC.pdf

Prima però, ho bisogno del vostro consiglio, altrimenti non parto nemmeno: se leggete il pdf, vedrete che dice che il modulo supporta una tensione max di 3.6 volts.

Già qui la cosa è un po' incasinata, perchè non è una tensione molto comune. Ma il mio problema è:
io ho una scheda easy pic, che viene alimentata e programmata dalla usb del pc, quindi 5 volts, e non c'è modo di modificare la tensione.
Il modulo, come abbiamo detto lavora al massimo a 3.6 volts e in più, sempre nel data, si dice che per comunicare correttamente il micro e l'accelerometro, devono avere alimentazioni uguali.

Quindi, sono un po' fregato, dovrei farmi 2 mille fori, o 2 breadboard con le relative alimentazioni e poi inserire e disinserire il micro nella scheda per programmarlo....scomodissimo direi.
A meno che non ci sia la possibilita' via software di fare andare il pic a 3 volts, indipendentemente dalla scheda, e alimentare su una bread board l'accelerometro a soli 3 volts....non so che fare...che dite voi?
 
Top
robo67
view post Posted on 7/6/2011, 22:01




Dunque.....
Il bus I2C è dotato di 2 linee: SCL (clock) e SDA (data).
Nell'architettura più semplice (un master, 1 o più slave) SCL viene generato dal master e sincronizza la scrittura verso gli slave e la lettura da essi.
SDA può essere generato alternativamente dal master o dallo slave in quel momento attivo (da master a slave durante la scrittura e da slave a master durante la lettura).

Le linee sono entrambe open-drain (o open collector), quindi possono lavorare fra livello logico 0 (quando il transistor/mosfet che pilota la linea SCL/SDA è chiuso/on) oppure in tristate (quindi ad alta impedenza, quando il transistor/mosfet è aperto/off).
Nel bus I2C non c'è quindi nessun chip in grado di fornire un livello logico 1, che è invece garantito da 2 resistenze di pull-up collegate fra SCL e positivo d'alimentazione e SDA e positivo d'alimentazione.

E qui sta il trucco che ti permetterà di gestire l'accelerometro.
-Innanzi tutto dovrai alimentare l'accelerometro a 3/3,6V, prelevando tale tensione o da un apposito alimentatore a parte oppure ricavandola dai 5V della scheda Easy-pic.
-Collegherai poi le resistenze di pull-up al +3/3,6V che alimenta anche l'accelerometro.
-Dovrai infine collegare le masse della scheda Easy-pic con quella dell'alimentazione dell'accelerometro (sempre che tu non abbia ricavato tale tensione dai +5V della Easy-pic, in questo caso il collegamento fra le 2 masse c'è già).

In questo modo avrai che SCL e SDA varieranno fra 0V (livello logico 0) e +3/3,6V (livello logico 1 fornito dalle resistenze di pull-up).
Il pic montato sulla Easy-pic vedrà la tensione di 3-3,6V come livello logico 1 anche se è alimentato a 5V (i 2 livelli sono compatibili), mentre quando piloterà la linea non creerà danni perché lavorerà appunto fra 0 e tristate (che porterà la tensione della corrispondente linea SCL e/o SDA a salire fino ai 3/3,6V che alimentano le resistenze di pull-up).

Se hai bisogno di qualche chiarimento sai dove trovarmi (non garantisco però una risposta lampo, visto che sono decisamente tempo-libero-carente).
 
Top
view post Posted on 7/6/2011, 22:40
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Molte, molte grazie Robo, devo assimilare bene il concetto e poi provo....
 
Top
view post Posted on 17/6/2011, 14:24
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


CITAZIONE
-Innanzi tutto dovrai alimentare l'accelerometro a 3/3,6V, prelevando tale tensione o da un apposito alimentatore a parte oppure ricavandola dai 5V della scheda Easy-pic.

Una tensione di 3 volts direttamente ricavata da due pile stilo, è sufficente? Oppure va stabilizzta con gli LMxxxx ? Logicamente se stabilizzo dovrò avere a monte una tensione maggiore di 3 volts. Ma sarebbe comodo e sbrigativo, anche se penso che la tensione delle pile sia molto pulita, cioè CC al 100%, ma non certo stabilizzata.


CITAZIONE
Collegherai poi le resistenze di pull-up al +3/3,6V che alimenta anche l'accelerometro.

Quelle che nel datasheet sopra sono indicate come R1 e R2 alle linee clock e data vero?

Ma i pin adibiti al clock e al data del pic, anche loro vanno "pull-appati" alla tensione di 3/ 3.6 dell'accelerometro?
Non credo, dal momento che lo sono già quelli dello slave, giusto?

 
Top
view post Posted on 21/6/2011, 09:15
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


CITAZIONE
Ma i pin adibiti al clock e al data del pic, anche loro vanno "pull-appati" alla tensione di 3/ 3.6 dell'accelerometro?
Non credo, dal momento che lo sono già quelli dello slave, giusto?

rileggendo i post precedenti, credo di aver sbagliato, vanno messe le resistenze di pull-up anche sul master....o si potrebbero creare danni fisici.

Devo rileggere tutto ancora...e ancora

P.S. ho dato uno sguardo al data dell'accelerometro.....AIIIUTOOOOO!!!! non so se mai ne verrò fuori.
Io ci provo, visto che se si riesce a far funzionare, ci si può davvero divertire, magari fare dei rudimentali giochi tipo wi,o cose ancora più utili
e interessanti. Una volta capito il meccanismo, le idee arrivano da se....ma sta volta la vedo davvero dura :(
 
Top
robo67
view post Posted on 21/6/2011, 22:06




CITAZIONE
Una tensione di 3 volts direttamente ricavata da due pile stilo, è sufficente? Oppure va stabilizzta con gli LMxxxx ? Logicamente se stabilizzo dovrò avere a monte una tensione maggiore di 3 volts. Ma sarebbe comodo e sbrigativo, anche se penso che la tensione delle pile sia molto pulita, cioè CC al 100%, ma non certo stabilizzata.

Se vuoi fare le cose comode e sbrigative.........beh, vai al mare e lascia stare tutto,altrimenti perdi tempo e poi rischi seriamente di fare dei danni.
La tensione per l'accelerometro falla con un regolatore degno di tal nome e lascia stare le pile che magari non ti fanno funzionare nulla solo perché sono mezze scariche.
Se fai un alimentatore partendo dalla tensione di 5V (o anche di più, così sei più sicuro di avere una stabilizzazione degna di tal nome,come ad esempio la tensione che alimenta la Easy-pic) non correrai il rischio di rincorrere i "fantasmi", domandandoti come mai quello che hai fatto non funziona, cercando bug nel software per giorni, per poi accorgerti magari che l'hardware è sottoalimentato.
Come mai stai consigliando a giovi27 di ricorrere ad un programmatore già fatto invece di autocostruirselo, raffazzonando a destra e a sinistra?
Semplicemente perché se le cose le fai bene e parti con qualche certezza puoi sperare di ottenere qualcosa, altrimenti rischi di brancolare nel buio.

CITAZIONE
Quelle che nel datasheet sopra sono indicate come R1 e R2 alle linee clock e data vero?

Se non so quale data sheet stai guardando potrei dirti "No, le resistenze di pull-up non sono R1 e R2, ma R127 e R1592 :P
A parte gli scherzi le resistenze sono quelle che collegano SDA e SCL al positivo di alimentazione del/dei chip che pilotano la linea I2C.
Alla fine il positivo che deve essere utilizzato è quello più basso fra tutti quelli che alimentano i chip collegati al bus. Nel tuo caso hai un pic alimentato a 5V e l'accelerometro a 3V, quindi devi "pulluppare" a 3V, altrimenti l'accelerometro, quando la linea SCL e/o SDA si porta a 5V, rischia seriamente di .... :angry: :angry: :angry:

CITAZIONE
ho dato uno sguardo al data dell'accelerometro.....AIIIUTOOOOO!!!! non so se mai ne verrò fuori.

Consiglio: inizia con un dispositivo più semplice di un accelerometro, ad esempio con un PCF8574 su cui puoi collegare 8 led (attenzione che il PCF8574 può fornire una corrente decente sul livello logico 0, mentre il livello logico 1 fa ....... :sick: e quindi non riuscirebbe ad accendere i led i modo decente se li pilotassi tramite l'anodo invece che il catodo).

Praticamente se tu riuscirai ad accendere i led del PCF8574 tramite il bus I2C saprai che le routine di lettura/scrittura funzionano bene e potrai passare a qualcosa di più complesso (accelerometro compreso).

Se proverai a fare funzionare direttamente l'accelerometro farai probabilmente un buco nell'acqua.
Sei così sicuro di riuscire a fornire un'accelerazione costante all'accelerometro mentre provi a leggerlo col pic e verifichi che tutto funzioni regolarmente?

L'accelerazione è un parametro fisico non proprio banale da riprodurre in modo controllato, quindi sviluppare un software su un qualcosa di già concettualmente difficoltoso da usare (e da simulare) porta facilmente ad una sconfitta.
ma questo è solo un mio parere, non la legge (non per niente faccio parte dei noobs).

 
Top
view post Posted on 22/6/2011, 09:16
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


CITAZIONE

CITAZIONE
Se vuoi fare le cose comode e sbrigative.........beh, vai al mare e lascia stare tutto,altrimenti perdi tempo e poi rischi seriamente di fare dei danni.

No,no, non era quello il senso Robo. Poi ad ogni modo, ho trovato un alimentatore stabilizzato da 3.3 volts, quindi ci dovremmo essere almeno lì.

CITAZIONE
Se non so quale data sheet stai guardando potrei dirti "No, le resistenze di pull-up non sono R1 e R2, ma R127 e R1592

Al data dell'accelerometro del post sopra:

www.futuraelettronica.net/pdf_ita/5300-M-ACC.pdf


da come ho capito, e non vorrei spararle grosse, perchè mi sto ancora documentando, ma dovrei mettere le resistenze di pull-up tra il dispositivo e il 3.3 volts, sia dell'accelerometro sia del pic
Sulla scheda poi di easy pic, ho una sezione con tutte le uscite relative alle porte, tramite un selettore , posso decidere se il pin desiderato, va "pull-uppato" a massa o al positivo.

Ma se io metto al positivo, agirei forzando il pin a 5 volts (tensione di riferimento/alimentazione) della scheda, e non andrebbe bene. Quindi credo che vada lasciato libero quel selettore,
come si dice in gergo, flottante e collegare io delle resistenze che da il clock e il data del pic, mi vanno al 3.3 volt no?

CITAZIONE
Consiglio: inizia con un dispositivo più semplice di un accelerometro, ad esempio con un PCF8574 su cui puoi collegare 8 led (

Hai STRAragione, mi chi andava a pensare fosse così complesso? Io l'ho visto a soli 10 € e mi ha fatto gola.....:)
l'integrato che dici, cioè il PCF8574, lo dovrei comprare, appena faccio un ordine lo infilo dentro.

Al limite non potrei per farmi le ossa usare due pic? Un master e uno slave? Fargli fare cose banali...leggi il registro dello lave e stampalo o cose del genere?


Intanto metto il link di una guida che ho trovato sull'i2c, sembra fatta bene, non le solite bufale, me lo sono stampato per bene e lo sto leggendo...magari se avete voglia
leggete un pezzo a caso, chi è del mestiere capisce subito se è valido o meno...ecco il link


www.laurtec.it/italiano/tutorial/il...tocollo_i2c.pdf
 
Top
robo67
view post Posted on 22/6/2011, 12:59




Il modulo accelerometro ha già R1 e R2 come pull-up, quindi i 2 pin del pic che userai come SCL e SDA dovranno essere flottanti.
Quando scriverai il software dovrai fare in modo che i 2 pin passino da una condizione di tristate (=pin flottante =pin settato come ingresso ) ad una di livello logico 0. Il livello logico 1 non dovrà mai uscire dal pin del PIC, altrimenti l'accelerometro rischierà di guastarsi a causa dei 5V forniti dal PIC stesso.
Quando il PIC dovrà fornire uno 0 su una delle 2 linee il corrispondente pin dovrà essere settato come uscita. Quando invece il PIC dovrà fornire uno 1 su una delle 2 linee il corrispondente pin dovrà essere settato come ingresso, in modo tale da avere l'1 logico assicurato dalla resistenza di pull-up.
Ammettendo di volere usare RB0 come SCL e RB1 come SDA dovrai quindi settare il PIC come segue:
- Porti a 0 i bit 0 e 1 del registro PORTB (corrispondente a RB0 e RB1).
- Porti a 1 i bit 0 e 1 del registro TRISB: a questo punto SCL e SDA si porteranno entrambe a 1 grazie al pull-up
Quando dovrai portare SCL o SDA a 0 dovrai portare a 1 il bit corrispondente di TRISB: in questo modo il PIC piloterà la linea col valore impostato nel corrispondente bit del PORTB, quindi uno 0 (dato che precedentemente era stato posto a 0).

CITAZIONE
Al limite non potrei per farmi le ossa usare due pic? Un master e uno slave? Fargli fare cose banali...leggi il registro dello lave e stampalo o cose del genere?

Far fare ad un pic una cosa banale tramite l'I2C non è banale (scusa il gioco di parole): quando hai capito come funziona il tutto banale lo diventa (o quasi), ma quando stai provando è decisamente indigesto, anche perchè se la comunicazione non dovesse funzionare a chi daresti la colpa, al master o allo slave?
 
Top
view post Posted on 22/6/2011, 22:58
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Ah, ma tu stai parlando di fare tutto via software, senza usare il modulo MSSPI ? Mazza, credo che sia davvero una belle lotta....


CITAZIONE
Ammettendo di volere usare RB0 come SCL e RB1 come SDA dovrai quindi settare il PIC come segue:
- Porti a 0 i bit 0 e 1 del registro PORTB (corrispondente a RB0 e RB1).
- Porti a 1 i bit 0 e 1 del registro TRISB: a questo punto SCL e SDA si porteranno entrambe a 1 grazie al pull-up
Quando dovrai portare SCL o SDA a 0 dovrai portare a 1 il bit corrispondente di TRISB: in questo modo il PIC piloterà la linea col valore impostato nel corrispondente bit del PORTB, quindi uno 0 (dato che precedentemente era stato posto a 0).

Quindi, spengo i bit 0 e 1 di PORTB (bcf per intenderci)
Porto a 1 i bit 0 e 1 di TRISB (quindi settati come ingressi)...ma ingressi? Per permettere alle pul-up di agire giusto? cioè di far fluire corrente sui pin e quindi forzarle no?

Se le settassi come uscite e le collegassi alla VCC e malauguratamente scrivessi nel software bsf (accendi) potrei anche fare danni fisici, giusti i ragionamenti?


Devo veramente studiarci su bene e non avere fretta, sembra davvero interessante l'I2c, anche se per ora ho le idee vaghe e confuse su molte cose.


CITAZIONE
Far fare ad un pic una cosa banale tramite l'I2C non è banale (scusa il gioco di parole): quando hai capito come funziona il tutto banale lo diventa (o quasi), ma quando stai provando è decisamente indigesto, anche perchè se la comunicazione non dovesse funzionare a chi daresti la colpa, al master o allo slave?

Ecco...e io che credevo fosse la cosa più semplice di sto mondo :)

Per ora mi basterebbe e avenzerebbe avere una conferma di ACK da parte dello slave...tutto il resto, verrebbe poi....intanto grazie, ci macino un po' sopra.... ;)
 
Top
view post Posted on 23/6/2011, 11:46
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Credo che il collegamento sia così, scusate se il disegno è un po' alla buona, l'ho fatto con Paint giusto per far capire.

Non dovrei compromettere nulla a livello fisico, cablando così.

Se è corretto, vedo di procedere col software, almeno iniziare con la sequenza di START, STOP, indirizzamento dello slave e ACK

Attached Image: I2C

I2C

 
Top
robo67
view post Posted on 23/6/2011, 21:19




CITAZIONE
Ah, ma tu stai parlando di fare tutto via software, senza usare il modulo MSSPI ? Mazza, credo che sia davvero una belle lotta....

Inizialmente sì, ma è quello che ti fa capire meglio come funziona il bus I2C, con in più il vantaggio di potere usare qualsiasi pin invece di doverti limitare all'impiego di RB3 e RB4 dell'MSSPI.
Certo, la gestione software ti consuma memoria e risorse del PIC, ma se è ottimizzata decentemente il discorso non è per nulla drammatico.
In qualche applicazione ho anche gestito 2 bus 2C con un unico PIC (non sto a spiegarti come mai me ne servissero 2 perché è un discorso lungo).

CITAZIONE
Quindi, spengo i bit 0 e 1 di PORTB (bcf per intenderci)
Porto a 1 i bit 0 e 1 di TRISB (quindi settati come ingressi)...ma ingressi? Per permettere alle pul-up di agire giusto? cioè di far fluire corrente sui pin e quindi forzarle no?

Proprio così ;)

CITAZIONE
Se le settassi come uscite e le collegassi alla VCC e malauguratamente scrivessi nel software bsf (accendi) potrei anche fare danni fisici, giusti i ragionamenti?

giusto anche questo ;)

CITAZIONE
Devo veramente studiarci su bene e non avere fretta, sembra davvero interessante l'I2c, anche se per ora ho le idee vaghe e confuse su molte cose.

Non sembra, è interessante, tant'è che, pur non essendo velocissimo come bus, è usatissimo ed esistono tantissimi chip che hanno questo tipo di bus, sia digitali che mixed (bus digitale + sezione analogica); tanto per dire esistono anche integrati audio (controlli di volume, di tono e mi sembra anche equalizzatori) pilotati tramite l'I2C (pare che esistano anche degli accelerometri :D ).

CITAZIONE
Ecco...e io che credevo fosse la cosa più semplice di sto mondo

Se voglio fare qualcosa di semplice preferisco optare per un circuito come led+resistenza :lol:

------------------------------------------------------------------------------------------------------------

Il circuito che hai disegnato (con paint :sick: :sick: voto:0 per lo strumento utilizzato, 6-- per il risultato, 10 per l'impegno, 10++ per la pazienza :lol: ) è quello giusto, quindi puoi procedere con gli esperimenti.
 
Top
view post Posted on 23/6/2011, 22:41
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


CITAZIONE
Il circuito che hai disegnato (con paint :sick: :sick: voto:0 per lo strumento utilizzato, 6-- per il risultato, 10 per l'impegno, 10++ per la pazienza :lol: ) è quello giusto, quindi puoi procedere con gli esperimenti.

Lo so,lo so, non infierire....fa pena...ma era solo per intenderci :)

Comunque, se è giusto lo schema, procedo, mi guardo per bene la sequenza e di start e stop e i relativi tempi che occorrono, mando l'indirizzo dello slave ( devo capire come) e cerco di ricevere e leggere l'ACK. Dal canto suo però lo slave, credo che sia già programmato internamente dalla casa madre a capire il protocollo I2C, giusto?

Forse è per quello che mi sconsigli di fare pic-pic, lo slave andrebbe istruito, giusto?
Appena ho un po' di tempo che non sia giusto il tempo di accendere il pc, mi metto di lena e provo...speriamo
 
Top
view post Posted on 24/6/2011, 10:17
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:





CITAZIONE
Quando tu devi generare il bit di start (che implica che SDA passi da 1 a 0 mentre SCL è a 1) dovrai scrivere:

CITAZIONE
1) BSF SDA ;SDA = open-drain = linea a livello logico 1 dato che SCL e SDA hanno le resistenze di pull-up
pausa 10uS ;La durata è poco importante.Dipende dalla velocità del dispositivo,ma se non si ha bisogno di velocità elevate si possono usare 10uS
2) BCF SCL ;SCL = 0
pausa >0,6uS
3) BCF SDA ;SDA = 0
pausa >0,6uS
4) BSF SCL ;SCL = 1
pausa >1,3uS

Ma scusa Robo il punto 2, non dovrebbe essere BSF SCL? e il 4 BCF?

Poi pensavo: ho detto che andrei a testare il bit relativo ad ACK nel registro opportuno, m come faccio? Il registro, funzionerebbe solo se io uso i pin adibiti al modulo hardware relativo all'I2C, no?

Come può capire se uso pin diversi?
 
Top
robo67
view post Posted on 24/6/2011, 18:30




CITAZIONE
Dal canto suo però lo slave, credo che sia già programmato internamente dalla casa madre a capire il protocollo I2C, giusto?

Forse è per quello che mi sconsigli di fare pic-pic, lo slave andrebbe istruito, giusto?

Hai capito perfettamente come stanno le cose: chip come il PCF8574 sono già pronti per comunicare col primo master che li chiama in causa con lo slave address giusto, senza dovere fare altro.

Il PIC no. Come qualsiasi cosa che vuoi far fare a lui o a qualsiasi altro microprocessore/microcontrollore bisogna scrivere il programma relativo, altrimenti...........nulla.
Che tu faccia accendere un led, fare un calcolo complesso o usare una periferica hardware, tutto passa da un programma più o meno lungo.
Per farti un esempio, quando tu hai scritto il programma del metro a ultrasuoni hai dovuto scrivere anche la parte per inviare i dati su porta seriale oppure no?
Tu l'hai dovuta scrivere, anche se il PIC ha già la UART a bordo che gli permette di comunicare in seriale, perchè occorre settare N parametri per inizializzare la porta e leggere/scrivere nei registri per gestire i dati ricevuti/da inviare.
Il MSSPI è molto simile alla UART, anche se è dedicata a comunicazione sincrona (con clock e dato separati), quindi richiede N linee di programma per funzionare correttamente.

CITAZIONE
Ma scusa Robo il punto 2, non dovrebbe essere BSF SCL? e il 4 BCF?

No, Gila, devi portare SCL a 0, infatti in quel modo avrai che la corrispondente linea passare da ingresso a uscita (ti ricordo che SCL e SDA agiscono sul registro TRIS, dove un bit a 1 corrispondente all'ingresso, e quindi ad una linea pulluppata a 1, e un bit a 0 corrispondente all'uscita, e quindi ad una linea pilotata con uno 0).

CITAZIONE
Poi pensavo: ho detto che andrei a testare il bit relativo ad ACK nel registro opportuno, m come faccio? Il registro, funzionerebbe solo se io uso i pin adibiti al modulo hardware relativo all'I2C, no?

Se usi il MSSPI l'ACK e un po' di altri dati li puoi trovare sotto forma di byte o flag nei registri SSPSTAT, SSPCON ecc. Se invece usi routine I2C software puoi sempre effettuare la lettura del pin della linea SDA tramite un BTFSC o BTFSS.


 
Top
118 replies since 5/1/2011, 18:32   3477 views
  Share