display 16x2 I2C

4 Anni 8 Mesi fa #11 da Mauro Laurenti
Risposta da Mauro Laurenti al topic display 16x2 I2C
prova a fare il Debug del sistema ed eseguire il programma passo passo.

Probabilmente si blocca all'interno delle routine I2C.
Se si blocca dopo aver inviato l'indirizzo e si mette in attesa dell'ACK, vuol dire che il modulo LCD non risponde e probabilmente l'indirizzo è errato.
Se le librerie I2C non si bloccano potrebbe ancora essere che l'assegnazione dei pin del PCF8574 e il modulo LCD non sia come la libreria.

Un oscilloscopio con cui analizzare il bus I2C aiuterebbe il debug.

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
4 Anni 8 Mesi fa #12 da x206
Risposta da x206 al topic display 16x2 I2C
Salve,

ho provato il debug, si blocca sulla seconda riga della funzione main ovvero su LCD_initialize

per la precisione se non ero sulla condizione di start SDA, qundi il bus risulta libero?



mi scuso ma non avendo un oscilloscopio non posso essere di molto aiuto...
Allegati:

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

  • x206
  • Avatar di x206
  • Junior Member
  • Junior Member
Di più
4 Anni 8 Mesi fa #13 da Mauro Laurenti
Risposta da Mauro Laurenti al topic display 16x2 I2C
Bene,
allora non è problema di indirizzo.
Infatti si blocca quando deve inviare lo start, ma prima di fare questo controlla le linee.

Se si blocca sul controllo dell'idle mi fa pensare:

1) Le linee per il modulo I2C che stai usando non sono corrette.
2) non hai i resistori di pull-up.

Se controlli con un multimetro le linee SDL e SCL devono avere un valore pari a Vcc.

Ricontrolla poi l'indirizzo...
se l'indirizzo è errato ma lo invia non si blocca su idle...

Saluti,

Mauro

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
4 Anni 8 Mesi fa - 4 Anni 8 Mesi fa #14 da x206
Risposta da x206 al topic display 16x2 I2C
Salve Mauro,

finalmente dopo infiniti tentativi funziona!!! In pratica all'interno della libreria

"LCD_44780_I2C.c" c'è la funzione LCD_initialize, il DEVICE_ADDRESS era impostato su L quindi mi

prendeva l'indirizzo sbagliato che di default sta a 0x00, ho semplicemente sostituito

DEVICE_ADDRESS_L con DEVICE_ADDRESS_H e tutto funziona, credo di aver fatto bene, ho comparato anche la vecchia libreria dove li è in H.


Ho provato con il multimetro prima della modifica, la linea SDA era poco inferiore a Vcc mentre

SCL era a zero, ho abilitato i resistori di pull-up nel main, non ho capito bene se con queste

librerie vengono abilitate in automatico.

Saluti

Luca
Allegati:
Ultima Modifica 4 Anni 8 Mesi fa da x206.

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

  • x206
  • Avatar di x206
  • Junior Member
  • Junior Member
Di più
4 Anni 7 Mesi fa #15 da Mauro Laurenti
Risposta da Mauro Laurenti al topic display 16x2 I2C
Salve Luca,

bene che funziona il tutto.

...ma qualche cosa non mi torna.
Che valori di indirizzo sono scritti nella libreria PCF8574?
Nella libreria LCD_44780_I2C che valori hanno DEVICE_ADDRESS_L con DEVICE_ADDRESS_H ?

Le due librerie sono tra loro legate e questo cambio che funziona potrebbe essere legato alle configurazioni di entrambe le librerie.

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 LaurentiPinnaStefAMatteo Garia

Registrati al sito

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

Registrati al sito LaurTec.

Login