Protocollo i2c!

9 Anni 10 Mesi fa #1 da MicheleO.
Protocollo i2c! è stato creato da MicheleO.
Salve,
ho un problema nell'utilizzare il protocollo 'i2c' e vorrei alcuni chiarimenti.
Nel Tutorial sul protocollo, sono elencate le otto fasi per avviare e concludere la comunicazione. Tra le fasi, esiste
un lasso di tempo massimo oltre il quale si possono avere dei problemi?
Se, per esempio, le fasi sono interrotte dalla routine 'interrupt', si potrebbe avere una perdita di dati?
Grazie,

Michele.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • MicheleO.
  • Junior Member
  • Junior Member
Di più
9 Anni 10 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Protocollo i2c!
Salve Michele,

in generale se i tempi si dovessero allungare leggermente non e' un problema per il Master, ma se il microcontrollore e' lo slave, ovvero riceve il clock da un master, deve garantire tutte le operazioni prima del nuovo arrivo del clock.
Lo slave si deve adeguare.

Per il master se le interruzioni o altro fanno rallentare il tutto, non e' in generale un problema, visto che lo slave si adegua. Ciononostante ci sono delle condizioni di tempi massimi da rispettare. Per esempio quando generi il fronte del clock c'e' un tempo massimo da rispettare per cambiare la linea dati.
Se usi un modulo I2C hardware questo non e' un problema ma se implementi il protocollo via software le due operazioni per la linea clock e dati sono diverse e un interrupt potrebbe creare problemi se dovesse capitare nel mezzo delle due.
Per evitare problemi in situazioni simili, tali operazioni devono essere eseguite in maniera "atomica" o disabilitare le interruzioni durante le operazioni sensibili.

Per maggiori dettagli sui tempi min e max ti rimando alle specifiche del protocollo I2C, che trovi facilmente su internet visto che sono pubbliche.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
9 Anni 10 Mesi fa #3 da MicheleO.
Risposta da MicheleO. al topic Protocollo i2c!
Mauro, grazie per la risposta!

Io utilizzo il modulo interno al microcontrollore, quindi i problemi non dovrebbero essere scaturiti dall'avviare e concludere la comunicazione.
Non dovrebbero nascere problemi nemmeno se si interrompe lo scambio dati (nella settima fase)? Non sono riuscito a trovare dettagli sui tempi all'interno delle specifiche del protocollo.

Lo slave è un 'PCF8574' tramite il quale comando un display LCD alfanumerico. La comunicazione avviene sempre correttamente, ma ogni tanto il display mostra caratteri strani o fa scorrere il testo velocemente, costringendomi a resettare il programma!

Grazie in anticipo.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • MicheleO.
  • Junior Member
  • Junior Member
Di più
9 Anni 10 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Protocollo i2c!
Il tuo sistema e' gia' piuttosto complicato e la cosa potrebbe essere piu' subdola.

Magari lo schema elettrico e il software potrebbe aiutare, anche se temo che il software e' piuttosto lungo e nessuno avra' voglia di vedere i dettali.
...magari io lo controllo velocemente! :)
ceca di ridurre al minimo il tuo sistema e mantenere il problema visibile. Ti aiutera' nel debug

A che velocita' usi il PCF8574?
Le ISR sono corte?
L'alimentazione del sistema e' "pulita"?

Relativamente alla trasmissione dei bit dati, se usi l'hardware interno, non hai problema, visto che il clock generato soddisfa i requisiti del bus I2C.

Facendo uso del modulo interno I2C, non credo che tu abbia problemi di tempi.
Le specifiche ufficiali I2C sono in un documento che ha delle tabelle dedicate ai tempi.


Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login