| | #27 (permalink) Top | |
| User Data registr.: 19-01-2007 Residenza: Dintorni di mestre (DINTORNI)
Messaggi: 2.589
| Citazione:
Per il collegamento I2C servono minimo 3 fili: GND, SDA, SCL... GND, ovvero la massa di riferimento SCL, ovvero il clock generato dal master e serve a sicronizzare i trasferimenti dei dati SDA, ovvero la linea dove viaggiano i dati!!! Praticamente dall'arduino partono 3 fili (GND, ANALOG 5 e 4) che devono essere portati alti da una resistenza di PullUp!!! l'unico limite di questa tecnologia è che la capacità della linea non superi i 100 pF!!! Comunque sia, per la comunicazione I2C, generalmente si usa un sistema di questo tipo: Il Master trasmette all'indirizzo xx (dove xx è un numero a 7 bit) il codice di quello che voglio!!! Il slave ha ricevuto il comando e prepara per la prossima comunicazione I2C il dato che interessa al master Il Master, questa volta, apre un canale di lettura dove lo Slave precedentemente interrogato, invia il dato!!! In codice arduino, ecco qualche esempio: Configurazione Arduino come master: #include <Wire.h> //Libreria per utilizzare l'I2C void setup() { Wire.begin(); //Questo comando inizializza l'arduino come unità I2C Master } Configurazione Arduino come Slave: #include <Wire.h> //Libreria per utilizzare l'I2C void setup() { Wire.begin(0x04); // Questo comando inizializza l'arduino come unità I2C Slave con indirizzo 0x04 Wire.onReceive(Evento); //Questa riga qua serve a creare un evento per cui, appena il Master prova a inviare un dato, lui esegue la SubRoutine "Evento" } Il master che invia alla periferica I2C 0x04 due byte: void loop() { Wire.beginTransmission(0x04); //Apre il canale di trasmissione con 0X04 Wire.send(Byte1); //Invia il 1° Byte Wire.send(Byte2); //Invia il 2° Byte Wire.endTransmission(); //Chiude il canale di trasmissione Delay (100); } Lo Slave che riceve i due Byte dal master: void Evento(int howmany) //SubRoutine "Evento" Sopra citata { byte Byte1 = Wire.receive();//Riceve il primo Byte byte Byte2 = Wire.receive();//Riceve il secondo Byte } Più semplice di così non si può!!! Ultima modifica di BBC25185 : 11 giugno 10 alle ore 19:50 | |
| | |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| Ho conosciuto il Campione del Mondo di Fritto | Harryflex | Elimodellismo in Generale | 10 | 13 ottobre 09 20:01 |
| ho conosciuto un MODELLISTA.... | losisi | Aeromodellismo Progettazione e Costruzione | 18 | 26 febbraio 08 15:00 |