Loading...
Pages: [1]   Go Down
Author Topic: Modifica per libreria Wire: attivazione pull-up I2C su richiesta  (Read 226 times)
0 Members and 1 Guest are viewing this topic.
Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16448
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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).
« Last Edit: April 29, 2012, 04:13:52 am by leo72 » Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 161
Posts: 15680
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16448
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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".
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Pages: [1]   Go Up
Print
 
Jump to: