Pages: [1]   Go Down
Author Topic: probleme adressage eeprom i2c  (Read 746 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour tout le monde;

Alors voila je suis sur projet dont je parlerai un peut plus tard sur celui-ci il y a un module RTC pour l'heure et une eeprom i2c , mon problème est le suivant :

quand je branche mon eeprom sur mon arduino et que je fait un scan des adresse raccorder en i2c le scan me retourne toute les adresses qu'il est possible de faire avec mon eeprom seulement moi je l'ais mis en 0x51 (pour pas avoir de conflit avec le module RTC)

ref eeprom :
24lc16b

raccordement de l'eeprom :
A0 = VCC
A1 = GND
A2 = GND
A3 = GND
WP = GND
VCC = +5v
SDA ET SCL avec pull-up


Merci d'avance smiley-wink
Rom.
Logged

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2260
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je pense que tu n'as pas bien compris le principe des adresses I2C.
Remarque : il manque la référence de la RTC donc on met en route l'option "boule de cristal".

Eeprom 24LC16  -> adresse I2C = 1010A2A1A0
RTC -> boule de cristal dit que c'est très souvent un DS1307
DS1307             -> adresse I2C = 1101000

Comment cela marche:
L'adresse I2C est sur 8 bits:
- 1 bit sert à définir le sens Ecriture ou lecture
- 7 bits forment l'adresse proprement dite.
Ces 7 bits sont séparés en deux groupes : la partie "Famille" et la partie "adresse individuelle" dans la famille.

Eeprom : toutes les eeproms I2C appartiennent à la même famille quelque soit le fabricant (Microchips, Atmel, etc).
Avec 3 bits pour l'adresse individuelle dans la famille, A2,A1,A0, on peut utiliser simultanément jusqu'à 8 boîtiers.

DS1307: pas de possibilité de changer l'adresse -> il serait idiot d'avoir plusieurs RTC.

La famille "Eeprom" étant différente de la famille "RTC" il n'est pas possible d'avoir un conflit d'adresse entre la RTC et l'eeprom.

PS : donne systématiquement TOUS les renseignements, pas de cachotteries sinon il n'est pas possible d'aider.
Logged

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

tout d’abord merci pour ta reponse

Alors il sagit d'un module tiny RTC  qui comporte le DS1037 en adresse 0x68 et une EEPROM 24c32 en adresse 0x50 que je ne veut pas utiliser donc j'en ajoute une nouvelle sur mon bus I2C une 24LC16 en adresse 0x51 et comme je m'en suis jamais servi j'ai voulu faire des essais avec l'EEPROM seul sur l'arduino j'ai donc raccordé l'EEPROM sur l'arduino comme ceux-ci :
   A0=+5v
   a1=GND
   A2=GND
   GND=GND
   WP=GND
   SDA=SDA
   SCL=SCL
   VCC=+5v



donc normalement je suis en adresse 0x51, suite a sa je me dit je vais verifier si mon adressage est bon, je fais alors un scan de ce qui se trouve sur mon bus I2C et c'est la surprise le scan me resort 0x50 0x51 ... 0x57

« Last Edit: September 09, 2013, 11:53:00 am by romain93 » Logged

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2260
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ton montage :
Qu'elle adresse a tu mis pour A2, A1, A0 ?
A tu ensuite vérifier les tensions sur A2,A1,A0 ?
et sur toutes les autres pins de l'eeprom pour détecter des "éventuelles erreurs de câblage".

Le programme de scan :
Il sort d'où ton scan ?
Parce que sur un montage aussi simple c'est probablement un câblage non conforme ou un programme de scan buggé.

PS: Ce que tu fournis  ce n'est pas un schéma électrique, c'est un schéma d'implantation.
Fritzing peut générer un vrai schéma électrique à partir du schéma d'implantation, c'est celui là qu'il faut nous donner car c'est seulement avec le schéma électrique qu'on peut trouver des erreurs.
Logged

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

comme je le disait plus haut j'ai raccorder les pattes A0 A1 A2 de façon a faire l'adresse 0x51

voici le schemas du cablage de l'eeprom


j'ai aussi verifié les tension au borne de l'eeprom elle sont correct

en ce qui concerne le scan du buc i2c j'ai testé le code sur mon module tyni rtc seul qui comprend pour rappelle une eeprom en 0x50 et le ds1307 en 0x68 et c'est deux adresses sont bien ressorti au scan seul et donc je considère le code du scan comme bon

ci-dessous le code m'ayant servi au scan si sa peut servir

Code:
#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }   
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}
Logged

France
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3547
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je t'engage à lire la doc de la mémoire que tu utilises: http://ww1.microchip.com/downloads/en/DeviceDoc/21703L.pdf
A0, A1 et A2 ne sont pas connectés en interne de la mémoire.
Pins A0, A1 and A2 are not used by the 24XX16 (no internal connections)

L'ID de la mémoire est 1010b et les 3 bits suivants sélectionnent un bloc mémoire de 256 octets
For the 24XX16, this is set as ‘1010’ binary for read
and write operations. The next three bits of the control
byte are the block-select bits (B2, B1, B0). They are
used by the master device to select which of the eight
256 word-blocks of memory are to be accessed.

Donc c'est normal que la mémoire réponde à toutes ces adresses.
« Last Edit: September 10, 2013, 01:38:47 am by fdufnews » Logged

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

Un grand merci pour ton aide j'avais simplement la doc d'une 24c16 alors je ne trouvai pourquoi j'arrivais pas adresser , c'est idiot et je me suis bien pris la tête avec sa

Encore merci !
Logged

Pages: [1]   Go Up
Jump to: