Pages: [1]   Go Down
Author Topic: I2C multi slave  (Read 543 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salve.
sono appena entrato nel mondo Arduino.
Siccome è un po che ho in mente un progettino ho detto perché non provarci e mi sono preso un Arduino Due.
per ora la mia idea era collegare, tramite protocollo I2C, diverse periferiche, sia per capire un po il tutto sia per portare avanti il mio progetto.
le periferiche in questione è un RTC e un MLX90614.
quello che non riesco a comprendere è come riesco a capire, dopo aver eseguito la scansione degli indirizzi validi sulla rete I2C, a quale dispositivo corrisponde un determinato indirizzo.
anche nel caso ad esempio avessi due MLX90614.

ciao
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 83
Posts: 4280
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
quello che non riesco a comprendere è come riesco a capire, dopo aver eseguito la scansione degli indirizzi validi sulla rete I2C, a quale dispositivo corrisponde un determinato indirizzo.
anche nel caso ad esempio avessi due MLX90614.

Ciao,

l'indirizzo è fissato dal produttore del componente I2C ... a volte tale indirizzo è selezionabile (entro certi limiti imposti sempre dal costruttore).
Se il componente che monti NON ha la possibilità di cambiare indirizzo ... bé ... semplicemente NON ne puoi montare due perché risponderebbero contemporaneamente alle richieste smiley-wink

Il MLX90614, ha un registro nella EEPROM (dovrebbe essere quello all'indirizzo di EEPROM 0x0E) dove puoi assegnarli l'indirizzo voluto (0x00 .. 0x7F) e quindi, assegnando a ciascuno un differente indirizzo, puoi averne contemporaneamente fino a 127 smiley

Guglielmo
« Last Edit: August 02, 2013, 07:05:59 am by gpb01 » Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e ok questa mi sembra sensata smiley-grin.
quindi nel caso avessi stessi indirizzi potrei pensare di "accendere/spegnere" il sensore A quando devo leggere il B e viceversa. ma nel caso si hanno due sensori differenti con indirizzi differenti come posso capire a quale sensore corrisponde l'indirizzo X.
spero di non dire cavolate atroci.


ciao
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 83
Posts: 4280
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mmm ... come fai a "spegnere ed accendere" un sensore ? Ti metti a gestire tutta una logica di alimentazione per dargli e toglierli corrente o per separalo fisicamente dal bus ???  smiley-eek

Semplicemente ... NON puoi avere due sensori con lo stesso indirizzo.

L'indirizzo lo trovi nelle caratteristiche del sensore che ti da il costruttore ... leggere e studiare sempre i datasheet !!! smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1722
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

come posso capire a quale sensore corrisponde l'indirizzo X.
Puoi anche usare lo sketch I2C scanner smiley-wink
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Switzerland
Online Online
Faraday Member
**
Karma: 83
Posts: 4280
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
Puoi anche usare lo sketch I2C scanner smiley-wink

Ma quello è uno scan del bus ... ti dice SOLO che c'è un qualche cosa all'indirizzo 0xXX ma ... se hai più sensori, non ti dice a cosa corrisponde ogni indirizzo trovato smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

come posso capire a quale sensore corrisponde l'indirizzo X.
Puoi anche usare lo sketch I2C scanner smiley-wink

dal datasheet si lo so, è che pensavo fosse possibile poterlo sapere anche da protocollo.

comunque ho anche visto che i MLX90614 forniscono la possibilità di cambiare il loro SA. e gia qui non sarebbe male.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

come posso capire a quale sensore corrisponde l'indirizzo X.
Puoi anche usare lo sketch I2C scanner smiley-wink

e infatti....ma come dice gpb01 cosi mi ritrovo gli indirizzi connessi al bus e no a chi corrisponde l'indirizzo.....

quindi ho capito che devo conoscere a priori l'associazione indirizzo e dispositivo. e non puo essere fatta dinamicamente con qualche procedura di scanner.

Logged

Switzerland
Online Online
Faraday Member
**
Karma: 83
Posts: 4280
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
quindi ho capito che devo conoscere a priori l'associazione indirizzo e dispositivo. e non puo essere fatta dinamicamente con qualche procedura di scanner.

Si, esatto, non è normalmente previsto che il modulo risponda fornendo un identificativo del modello del sensore quindi ... lo devi sapere smiley-wink

Come ho già scritto e ribadisco sempre ... bisogna studiare i datasheet !!! smiley

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"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

dal datasheet si lo so, è che pensavo fosse possibile poterlo sapere anche da protocollo.

Alcuni componenti I2C, in particolar modo i sensori, possono fornire su richiesta del master un ID prodotto, in pratica se il componente ha questa funzionalità una volta trovati i vari address I2C è possibile interrogarli per ottenere l'ID, la procedura non è standard quindi tocca prevedere tutte le varie possibilità in base all'hardware che si prevede di collegare.
In tutti i casi è meglio pianificare prima gli address dei device, con relativa mappa in memoria del micro, in modo che semplicemente interrogando l'address è possibile sapere sia se il dispositivo è collegato al bus e di cosa si tratta.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie a tutti ora ho le idee più chiare a riguardo.
Logged

Pages: [1]   Go Up
Jump to: