Go Down

Topic: Modifica per libreria Wire: attivazione pull-up I2C su richiesta (Read 519 times) previous topic - next topic

leo72

Siccome non avevo molto da fare, mi è tornata a mente una discussione di ieri in cui si parlava delle resistenze di pull-up attivate in automatico dalla libreria Wire quando si usa il bus I2C.
Mi sono messo a "sbirciare" la libreria ed ho perciò pensato di inserire un modo per poter attivare le resistenze di pull-up solo quando richiesto. Questo mi pare utile nel caso si usino delle R esterne e non si voglia l'attivazione di quelle interne.

Ho aggiunto 3 nuovi metodi:
Code: [Select]
Wire.beginNoPullup()
Wire.beginNoPullup(indirizzo_byte)
Wire.beginNoPullup(indirizzo_int)

Sono equivalenti ai metodi standard della libreria. Il primo aggancia l'Arduino come MASTER, gli altri agganciano l'Arduino come SLAVE con l'indirizzo specificato.

Allegati gli zip delle versioni per l'IDE 002x e 1.0. Basta scompattare l'archivio e sostituire la cartella Wire a quella contenuta in /arduino/libraries.

Siccome non ho materialmente un Arduino con me, ho provato solo la compilazione e va tutto bene. Verificate se funziona anche  :smiley-sweat: (basta collegare un LED ad uno dei pin A4/A5), caricare un esempio di Wire e vedere se il led si illumina con una luce fioca oppure no.

EDIT:
ho aggiornato i file. Adesso i nuovi metodi sono evidenziati dall'IDE in fase di scrittura (mi ero dimenticato).

uwefed

Carino. Grazie del bel laboro.
Leo, mi consci che sono come tommaso incredulo.
Per cosa serve il "Wire.beginNoPullup(indirizzo_int)" se l' indirizzo va da 1 a 127?
Ciao Uwe

leo72


Carino. Grazie del bel laboro.
Leo, mi consci che sono come tommaso incredulo.
Per cosa serve il "Wire.beginNoPullup(indirizzo_int)" se l' indirizzo va da 1 a 127?
Ciao Uwe

Secondo anche il mio pensiero non serve assolutamente a nulla ma ho notato che sia nella versione 002x che nella versione 1.0 della libreria esiste la possibilità di passare un parametro int. Parametro che poi viene riconvertito a byte!  :smiley-yell:

Sicuramente serve per retrocompatibilità con vecchie versioni della liberia o forse per accettare anche parametri passati da utenti poco attenti.

Quindi l'ho rimesso anch'io, giusto per essere allineato con i metodi "standard".

astrobeed


Secondo anche il mio pensiero non serve assolutamente a nulla ma ho notato che sia nella versione 002x che nella versione 1.0 della libreria esiste la


Un motivo ci sarebbe, esiste anche l'I2C extended address che lavora a 10 bit, due byte invece di uno solo, permettendo di indirizzare fino a 1024 device.
Ho dato uno sguardo alla libreria e il metodo con intero non fa altro che richiamare il metodo con l'address a 8 bit, penso l'abbiano inserito in previsione di una futura implementazione dell'address a 10 bit.

Go Up