Bonjour RSDIFFUSION,
Non ça marche pas comme ça.
La majorité des puces (comme l'horloge temps reel DS1307) qui communique en I2C on
une seule adresse fixe.
Dans cette
DataSheet à la page 13 on peut voir que l'adresse esclave I2C =
1101000 en binaire =
0x68 en Hexadécimale.
Et pour l'EEProm 24LC64 on peut avoir j'usqu'à
8 adresse différente.
Dans cette
DataSheet à la page 5 on peut voir que l'adresse esclave I2C peut être modifié selon le voltage appliqué sur les broches A0, A1 et A2.
Voici les 8 adresse possible.
1010000 en binaire =
0x50 en Hexadécimale1010001 en binaire =
0x51 en Hexadécimale1010010 en binaire =
0x52 en Hexadécimale1010011 en binaire =
0x53 en Hexadécimale1010100 en binaire =
0x54 en Hexadécimale1010101 en binaire =
0x55 en Hexadécimale1010110 en binaire =
0x56 en Hexadécimale1010111 en binaire =
0x57 en HexadécimaleAlors dans ton projet tu as:
-1 ATMega1280
-8 ATMega328
-8 horloge temps reel DS1307
-8 EEProm 24LC64
Si chaqu'un des 8 ATMega328 est relié à une
horloge temps reel DS1307 et une
EEProm 24LC64 sur le bus I2C.
Tu vas devoir faire attention au collision de donné sur le bus I2C.
Alors en premier pour la communication entre l'
ATMega1280 et les 8
ATMega328.
Pour l'
ATMega1280 tu utilise le code en tant que maître.
Pour les 8
ATMega328 tu utilise le code en tant que qu'esclave.
Et en deuxième pour la communication de chaque
ATMega328 avec son DS1307 et son 24LC64.
tu dois changer le code des 8
ATMega328 en tant que maître pour qu'il puisse communiquer avec leur 2 puces.
Voici un exemple de code pour l'horloge temps reel DS1307:
http://www.ladyada.net/learn/breakoutplus/ds1307rtc.htmlVoici un exemple de code pour l'EEProm 24LC64:
http://www.arduino.cc/playground/Code/I2CEEPROM