Problema con indirizzo pcf8574p

ciao a tutti,

ho un problema con due pcf8574p, usando l'i2c scanner (quello compatibile con il MEGA indicato nel playground), tenendo A0, A1 e A2 oscillanti, arduino lo vede. L'indirizzo ovviamente cambia: 0x23 e 0x27.

Se collego questi tre pin a massa e/o a 5v per modificarne e stabilizzarne il valore, l'I2c scanner si blocca. E comunque mi sembra che il pcf non funzioni.

Se ho capito bene hai un Arduino MEGA Dove hai collegato il PCF? Sui pin SCL e SDA o A4,A5 o 20-21?

Ciao Uwe

Credo di aver capito che tu attivi lo scanner con A0, A1 ed A2 floating, cioè non connessi né a massa, né a +5V.

Se è così, l'indirizzo che ottieni è assolutamente aleatorio.

Questa la mappa di indirizzi del PCF8574

ADR  A2  A1  A0
20   L   L   L
21   L   L   H
22   L   H   L
23   L   H   H
24   H   L   L
25   H   L   H
26   H   H   L
27   H   H   H

Ah i pin A0, A1 e A2 del PCF?
Quelli DEVONO essere messi a dei livelli definiti (massa o +5V) senó l’ indirizzo del PCF non é stabile ma dipende dai disturbi che sono in giro.
Ciao Uwe

Hallo paisà :) hai messo le r di pull-up sulle linee I2C?

... e, visto che ne hai due, hai assegnato ad ogni IC [u]un address diverso[/u] ??? :roll_eyes:

Guglielmo

Rispondo io (in ritardo) visto che ero presente agli esperimenti con mastraa ;)

I test son stati fatti su Mega con la linea i2c corretta (pin 20,21), usando un solo pcf per volta. L'unico modo per far vedere il pcf allo scanner ( sketch testato e funzionante con un hmc5883l) era di lasciare i pin indirizzo del pcf flottanti, anche se ovviamente nella pratica risultava inutile perchè l'indirizzo variava ad ogni connessione. Tentando di collegare i pin per definire un indirizzo (in tutte le combinazioni possibili tra gnd e 5v) l'unico risultato era un blocco dello scanner. Resistenze di pull-up a memoria non c'erano, ma arduino non le ha già integrate?? :roll_eyes:

Quelle di Arduino le puoi attivare mettendo i pin in input con l'opzione pullup e comunque hanno un valore elevato. Se non aggiungete 2 r esterne da 2k2 l'i2c non funzionerà mai.

scusate, ero partito per le vacanze e non ho più controllato il forum. Ora leggo bene tutto e vedo di seguire i consigli. Poi vi dirò i risultati!!! Grazie anche a stez90 per aver controllato per me!

Buona giornata a tutti!

Messo il GND in comune con Arduino? Come alimenti il PCF?

Allora tecnicamente ho risolto, nel senso che ora funziona ed è stabile. Servivano i pullup esterni sulle linee i2c.

Il problema, ma suppongo sia più che altro un cambiamento dovuto a una nuova versione del pcf o qualcosa del genere.

Nei vari datasheet trovo che ponendo A0-2 a GND dovrei ottenere come indirizzo 01110000=0x70, in alcune guide online 0x20, il mio è 0x30 (ponendo tutto a 5V 0x3f, e il 'salto' mi sembra corretto). E' normale?

Nei vari datasheet trovo che ponendo A0-2 a GND dovrei ottenere come indirizzo 01110000=0x70, in alcune guide online 0x20, il mio è 0x30 (ponendo tutto a 5V 0x3f, e il ‘salto’ mi sembra corretto). E’ normale?

non tieni conto del bit LSB che e’ il R/W

A6 A5 A$ A3 A2 A1 A0 R/W

Gli Address sono per il
PCF8574 - 0X20 - 0X27
PCF8574A - 0X38 - 0X3F

Ah ok giusto, ottimo grazie ;)

Ho scoperto che in realtà facevo tripla confusione, tra datasheet e il mio pcf effettivamente non consideravo l'ultimo bit r/w, ma ho fatto confusione perché senza accorgermente stavo usando nei vari test due pcf differenti, uno con sigla A e uno AP mi pare...