Dialogo i2C

Ciao, penso sia piu' in tema qui, provo... vorrei riparare un tv lcd ma c'e' un (per ora) problema grosso, il chip guasto al 98% (di probabilita') e' un multibuffer programmabile, ora non ho mai programmato simile chip e mi chiedevo, seguendo le istruzioni del datasheet (mi sembrano chiare) posso programmare il chip collegandolo all'interfaccia minima che gia' ho per pc, con una routine in semplice Qbasic per IBM compat. non compilata? Voglio dire il chip e' in grado di funzionare a diverse frequenze di bus, esattamente espresse cosi:

"The two-wire bus operates in one of three speed modes:

clock frequency of up to 3.4MHz. "

La hispeed va abilitata e la lasciamo stare, per me puo' metterci anche 2 minuti.. ma per il resto ci vuole una velocita' costante? Quindi un clock a frequenza fissa? E quale? Si parla di bus I2C...

Reply to
Dav.P
Loading thread data ...

Il 16/09/2016 14:46, Dav.P ha scritto:

Come da specifiche i2c, il pin di clock deve ricevere adeguata onda quadra dal master e a dire la verita', non e' poi nemmeno cosi' importante il duty e che sia a velocita' costante e ... Insomma, il bus I2c, se rispetti le specifiche di base, e' molto robusto, quindi non dovresti avere grandi difficolta'. Ciao Angelo

Reply to
Deh!

Il 16/09/2016 14:46, Dav.P ha scritto:

Sono tutti degli "up to": fino a un massimo di.

Per quanto ne so si puo` benissimo lavorare a velocita` drasticamente inferiori e senza alcun vincolo di durata dei bit e dei singoli impulsi di clock (e` il vantaggio della comunicazione sincrona), il problema di solito e` non eccedere le velocita` massime.

Tra l'altro andando molto piu` lenti ci si puo` evitare del tutto il controllo sull'eventuale clock stretching attuato dallo slave.

Reply to
Claudio_F

grazie a entrambi, un ulteriore domanda prima di cimentarmi, lo schema che uso per l'interfaccia e' quello sotto, limitatamente ai pin 4,7,8 quindi le 2 resistenze e basta, perche' il resto serve solo ad alimentare il chip sotto cura ma io lo alimento con una piu' stabile batteriola da 3,6v litio, eccolo:

formatting link

ma se il il chip che devo trattare ha una Vmax sui pin digitali ovvero SCL,SDA di

6v e la rs232 del pc usa tensioni di 12v, non si incorre in un guasto? occorre traslatore di livelli come max232a? Finora l'ho utilizzata per quello per cui era prevista ovvero programmare eeprom seriali e quelle anche hanno una Vmax di 6,5v e non si sono mai guastate, vado tranquillo senza niente?

Ciao...

Reply to
Dav.P

ntrollo sull'eventuale clock stretching attuato dallo

e uso

resistenze e

lo alimento

dipipo_sch.jpg

L,SDA di

corre

cui era prevista

non

con le tensioni su RS232 bruci tutto. sul bus I2C (sia su SDA che SCL) devono essere presenti delle res di pullup

la tua interfaccia inoltre non mi sembra adatta a dialogare su I2C.

re.

matteo

Reply to
Matteo

Il 16/09/2016 17:44, Dav.P ha scritto:

Io credo possa funzionare, in scrittura il PC utilizza il pin 4 e si affida alla suddetta + diodi di clamp che presumo siano contenuti internamente al tuo chip per limitare l'escursione della tensione, in

Certo, ho delle riserve sul fatto che la seriale possa discriminare

P.S. : Suppongo che RB5 sia SCK e RB6 SDA.

Ciao, Pier.

formatting link

Reply to
Pier GSi

Grazie del supporto, non ho linkato la pagina che pubblica questo schema che e':

formatting link
come si vede c'e' un secondo chip nello schema perche' con lo stesso circuito si puo' programmare un pic, che non conosco ma mi viene da pensare il pin 8 che e' in entrata serva solo per quel tipo di chip, per leggere i dati , anche se la descrizione dice diversamente che e' il pin per il clock...

suddetta R da 2k2 presumo..

perfetto...

?? speriamo..

Si RB5 e' il clock secondo piedinatura standard delle eprom..

Reply to
Dav.P

scusa non avevo letto tutto il tuo post, serve anche per le eeprom ok...

qui si ha sbagliato...

Reply to
Dav.P

Il 16/09/2016 19:18, Dav.P ha scritto:

Personalmente non spererei... Gia` ci sara` il suo da fare per gestire l'aggeggio (e non sappiamo se intendi usare librerie apposite o riscrivere la gestione i2c a mano), ma se parti anche con il livello 1 totalmente fuori parametri poi come si fa a capire cosa debuggare?

Reply to
Claudio_F

Il 16/09/16 19:18, Dav.P ha scritto:

I circuiti integrati con ingressi a 3.3V non hanno i diodi di clamp come i ttl normali. Ho potuto verificarlo ad esempio con i 74HCT14 (con diodi) e i 74LVC14 (senza diodi). Utilizzando un segnale a 5V e mettendo una resistenza da 10K di caduta in serie con l'ingresso si vede che la tensione sul pin di ingresso dell'HCT resta a 3.3V=Vcc mentre LVC14 va a 5Volt e dopo un po' si spacca la porta.

Bisogna quindi prevederli esternamente al chip.

Restano i dubbi sull'ingresso RS232 e non capisco, ma non centra con il discorso, sul circuito indicato come faccia ad accendersi il led (per me e' rovescio) e questo la dice lunga su quanto sia stato provato e controllato il progetto.

Ciao

Reply to
Giuseppe³

E` sbagliato il disegno, e` sbagliata la descrizione, ed e` un programmatore della serie xpipo... che ha fatto lanciare imprecazioni a generazioni di clonatori di smartcard ;)

Reply to
Claudio_F

Il 17/09/2016 14:19, Dav.P ha scritto:

Se qualcosa non va, avere tra le scatole *anche* il dubbio che la porta seriale non riconosca giusti i livelli di tensione e` una complicazione aggiuniva.

Per il resto: la trama sincrona i2c (che non e` il protocollo asincrono start/stop della seriale standard) come la generi?

Reply to
Claudio_F

appunto questo chiedevo, non potendo eseguire due istruzioni contemporanee ma solo successive non posso fare che un fronte di discesa di clock sia contemporaneo a quello del data, ma dal diagramma del datasheet vedo che non deve nemmeno essere cosi' quindi per quello forse mi salvo, per il resto sarebbe tutto un discorso di routine che fanno conversione decimale binario al momento del passaggio dati presumo, ma non ho affrontato la questione, sono anche digiuno di programmazione. Concettualmente mi sembra passabile, e' che devo riportare i comandi e protocollo del datasheet, non e' un lavoro di un'ora ma posso provare, i comandi sono pochi, i registri da scrivere pure. Alternativa rompere i marroni a un centro assistenza che mi dia una scheda guasta magari in qualcosaltro e rubargli il chip ma non credo gli interessino 10 euro..

Intanto la butto li poi mi leggo tutto il pdf, avevo pensato a mettere due zener sulle linee sda,scl, ma poi non capivo come faceva con le tensioni negative, al limite aggiungendo pure un diodo in serie anodo verso il pc, ma poi ho trovato questo doc. :

formatting link
al quale toglierei sempre il 7805 perche' alimento con la litio.. ma poco importa. va bene?

Reply to
Dav.P

Il 17/09/2016 19:40, Dav.P ha scritto:

Infatti, anzi, nell' i2c base (quello da 100kbit/s massimi) vanno lasciati passare almeno 4.5 us tra i vari fronti per cui la non contemporaneita` va benissimo.

Prima sono da scrivere le funzioni elementari per controllare i pin:

SET_CLK RES_CLK SET_SDA RES_SDA READ_SDA

Poi sono da scrivere le funzioni base del bus i2c (che usano le precedenti):

START STOP RESTART WRITE READ_WITH_ACK READ_WITCH_NACK

Ed infine usando queste funzioni si puo` dialogare con lo slave secondo i comandi riportati sul datasheet.

Non saprei, dipende sempre dalla porta seriale in questione, se accetta anche il livello 0V o vuole per forza un valore di tensione anche negativo in ingresso. In fondo le specifiche per la seriale parlano di

+/-3V come valori minimi e +/-15V come massimi, lo zero non sarebbe contemplato (anche se molte porte sembrano funzionare lo stesso).

Da tenere conto anche che sulla seriale il livello logico 0 corrisponde a tensione positiva, mentre il livello 1 a tensione negativa (cioe` livelli logici invertiti rispetto al bus i2c).

Reply to
Claudio_F

ah! per l'inversione ci devo pensare io allora dal software...! Per la lettura mi sembra un bell'ostacolo gli 0v... pero' potrei provare il circuito con una inutile eeprom da 2kbit recuperata.. provo riprovo per vedere se si spacca. Ciao grazie.

Reply to
Dav.P

Il 17/09/2016 21:35, Dav.P ha scritto:

Puoi anche scrivere una routine di test per verificare che il livello

tentativo fallisse, una soluzione per aggirare il problema potrebbe essere rappresentata da una resistenza tra il pin che utilizzi per la lettura ed un pin tenuto forzato a tensione negativa. Un PNP con emitter a +3.6V permetterebbe un'escursione probabilmente sufficiente (andresti da -10V, o quel che la seriale fornisce, fino a circa +3.0V).

Ma visto che devi comunque fare tutto da zero, non ti converrebbe utlizzare la porta parallela e VB6 come linguaggio ?

Ciao, Pier.

formatting link

Reply to
Pier GSi

Ho gia' scritto il grosso della routine, poche righe, devo solo fare qualche modifica e inserire l'istruzione per la lettura scrittura da seriale che devo capire meglio qual'e'.

avevo pensato a questo,

+3,6v perche'? e gli altri 2 pin? Non capisco l'utilita'..

No, non ho e non conosco VB6 e non so come pilotare la parallela ma questa parte puo' starci vedremo...

provo a vedere se trovo gli indirizzi per pilotare la parallela e spero di avere il connettore, c'e' pero' un problema, quello penso di averlo, ma sfilarlo e' dura senza guscio...

GRAZIE...

Reply to
Dav.P

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.