Piu schede "identiche" sul bus i2c

volevo sapere se è possibile (o ci sono problemi) a usare piu schedine i2c che hanno la possibilita
di cambiare indirizzo mettendo a massa o al + un piedino,
intendo esempio: metto 3 schedine i2c identiche con 3 uscite di arduino tengo sempre alto il pin che gli fa selezionare l'indirizzo,
quando devo accedere a una scheda abbasso in pin della scheda che mi serve e poi lo porto di nuovo alto
un po come se fosse l'interfaccia spi le tre schedine sono MCP4725
vorrei evitare di usare un'altra scheda aggiuntiva per variare gli indirizzi i2c

Guarda un esempio per due, lo stesso per più schede con lo stesso indirizzo I2C

Saluti.

1 Like

non l'ho mica capita :face_with_raised_eyebrow:

In questo montaggio, mettendo i pin 8 e 9, (0,1) o (1,0) si accede a un dispositivo o all'altro.
Per tre dispositivi devi aggiungere un altro pin con la sua resistenza e diodo poiché questi due sono collegati.

A me sembra un ottimo metodo per ottenere il risultato voluto.

si immaginavo dovrebbe funzionare perche finche tutti i pin di selezione indirizzo sono alti hanno tutti lo stesso indirizzo qiello che lo ha basso lo cambierà
ovviamente non funziona su i dispositivi che hanno solo un idirizzo non modificabile
ma l'MCP4725 E CONFIGURABILE,

ok quindi devi andare a "disturbare " il pin scl dei dispositivi che non vuoi utilizzare :face_with_raised_eyebrow:

strano pero che scl non e "disturbato" anche nel livello logico opposto....
misteri dell'elettronica
oracolo

Sarebbe da provare. Non vorrei che i vari dispositivi leggano l'indirizzo solo all'accensione.
Per Elrospo: se provi ci fai sapere?

Non sembra, anzi, dovrebbe venir letto proprio al momento dell'indirizzamento.

Dal datasheet, paragrafo 7.2:

A0 bit is determined by the logic state of A0 pin. The A0 pin can be tied to VDD or VSS, or can be actively driven by digital logic levels. Thea dvantage of using the A0 pin is that the users
can control the A0 bit on their application PCB circuit and also two identical MCP4725 devices
can be used on the same bus line.

When the device receives an address byte, it compares the logic state of the A0 pin with the A0 address bit received before responding with the acknowledge bit. The logic state of the A0 pin needs to be set prior to the interface communication.

Guglielmo

Potrebbe non funzionare con periferiche i2c che applicano il clock stretching.

Grazie

OK ALLORA ... si puo fare ! :slightly_smiling_face: