24LC256 Serial EEPROM am Arduino wird nicht erkannt

Programmierung und Hardwaredesign mit Arduino, AVR, PIC und Konsorten.

Moderatoren: MaxZ, ebastler, SeriousD

Antworten
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 531
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 23 Mal

24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von L_B_S »

Hallo zusammen,

ich versuche den 24LC256 256K I2C CMOS Serial EEPROM am Arduino zu betreiben. Schaltplan:
Schaltung_2.PNG
Schaltung_2.PNG (5.35 KiB) 5176 mal betrachtet
Wenn ich das Datenblatt richtig deute, ist dieser EEPRON recht identisch mit dem
IC , welcher auf dem FRAM Breakout Board verwendet wird. Daher habe ich auch die Software für dieses
Board mit der Bib. "Adafruit_FRAM_I2C.h" benutzt und etwas abgespeckt um zu prüfen, ob die Adesse erkannt wird:

Code: Alles auswählen

#include <Wire.h> 
#include "Adafruit_FRAM_I2C.h"

/* Example code for the Adafruit I2C FRAM breakout */

/* Connect SCL    to analog 5
   Connect SDA    to analog 4
   Connect VDD    to 5.0V DC
   Connect GROUND to common ground */
   
Adafruit_FRAM_I2C fram     = Adafruit_FRAM_I2C();

void setup(void) {
  Serial.begin(9600);
  
  if (fram.begin(0x50)) {  // I2C Adresse  Standart
    Serial.println("I2C EPROM erkannt");
  } else {
    Serial.println("I2C EPROM nicht erkannt\r\n");
  }
}

void loop() 
{

} 
Ich habe in der Zeile

Code: Alles auswählen

if (fram.begin(0x50)) {  // I2C Adresse 
sämtliche Adressen von 0x50 bis 0x57 probiert. Der IC wird einfach nicht erkannt

Hier das Orginalprog. von Adafruit:

Code: Alles auswählen

#include <Wire.h> 
#include "Adafruit_FRAM_I2C.h"

/* Example code for the Adafruit I2C FRAM breakout */

/* Connect SCL    to analog 5
   Connect SDA    to analog 4
   Connect VDD    to 5.0V DC
   Connect GROUND to common ground */
   
Adafruit_FRAM_I2C fram     = Adafruit_FRAM_I2C();
uint16_t          framAddr = 0;

void setup(void) {
  Serial.begin(9600);
  
  if (fram.begin(0x50)) {  // I2C Adresse 
    Serial.println("Found I2C FRAM");
  } else {
    Serial.println("I2C FRAM not identified ... check your connections?\r\n");
    Serial.println("Will continue in case this processor doesn't support repeated start\r\n");
  }
  
  // Read the first byte
  uint8_t test = fram.read8(0x0);
  Serial.print("Restarted "); Serial.print(test); Serial.println(" times");
  // Test write ++
  fram.write8(0x0, test+1);
  
  // dump the entire 32K of memory!
  uint8_t value;
  for (uint16_t a = 0; a < 32768; a++) {
    value = fram.read8(a);
    if ((a % 32) == 0) {
      Serial.print("\n 0x"); Serial.print(a, HEX); Serial.print(": ");
    }
    Serial.print("0x"); 
    if (value < 0x1) 
      Serial.print('0');
    Serial.print(value, HEX); Serial.print(" ");
  }
}

void loop(void) {

} 
Kann man das so nicht verwenden ?

Gruss
Ludwig
Benutzeravatar

gamerpaddy
Beiträge: 2624
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 33 Mal
Danksagung erhalten: 303 Mal
Kontaktdaten:

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von gamerpaddy »

Um welchen arduino handelt es sich hier? nicht alle haben i2c auf a4 a5
:wurst:
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 531
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 23 Mal

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von L_B_S »

sorry, hatte ich vergessen UNO
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 531
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 23 Mal

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von L_B_S »

Anschluss so wie hier
Anschluss am UNO.jpg
Anschluss am UNO.jpg (142.64 KiB) 5164 mal betrachtet
nur ich verwende den IC (in diesem Fall aber den 24LC256 Serieller EEPROM) direkt ohne Board, wie auf dem Schaltplan oben
Andere Geräte wie zBsp. ein I2C LCD Display funktionieren tadellos am Anschluss A4 und A5 des UNO
Benutzeravatar

Paul
Admin
Beiträge: 3595
Registriert: So 7. Aug 2005, 14:34
Schule/Uni/Arbeit: HW/SW-Entwickler
Wohnort: Braunschweig
Hat sich bedankt: 632 Mal
Danksagung erhalten: 210 Mal
Kontaktdaten:

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von Paul »

Moin L_B_S,

probier doch mal die Adresse 0xA0. :)
Ich glaube, du zählst die Bits aus der falschen Richtung bzw. bist da um ein Bit verrutscht.
Laut Datenblatt ist der "Control Code" ja 1010, dann kommen die Adressbits (alle 0) und zu guter letzt das R/!W-Flag (0), also insgesamt 10100000 = 0xA0.

Viele Grüße
Paul!
“With great power come great heat sinks.”
paulwilhelm.de -- mosfetkiller.de
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 531
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 23 Mal

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von L_B_S »

Ja Paul,
daran hatte ich auch schon gedacht. Eigentlich müsste es so sein aber schau dir mal die Rückseite von dem Adafruit -Board an
Board.jpg
dort wird auch angegeben "Addr: 1010 + A2 + A1 +A0" aber die 'Default' Adresse ist "Default 0x50"
Dort ist zwar ein MB85RC256V drauf aber die Adressierung usw. ist das Gleiche
Zwischenablage02.png
Zwischenablage02.png (3.48 KiB) 5139 mal betrachtet
Deshalb bin ich davon ausgegangen, dass es mit der Adafruit-Software gehen müsste. Tut es aber nicht, bin ratlos :cry:

Gruss
Ludwig
Benutzeravatar

stoppi
Beiträge: 1475
Registriert: Mo 29. Mär 2010, 21:39
Danksagung erhalten: 289 Mal
Kontaktdaten:

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von stoppi »

Probiere doch einen i²C-Scanner, wie z.B. http://henrysbench.capnfatz.com/henrys- ... c-address/
Benutzeravatar

Paul
Admin
Beiträge: 3595
Registriert: So 7. Aug 2005, 14:34
Schule/Uni/Arbeit: HW/SW-Entwickler
Wohnort: Braunschweig
Hat sich bedankt: 632 Mal
Danksagung erhalten: 210 Mal
Kontaktdaten:

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von Paul »

L_B_S hat geschrieben:daran hatte ich auch schon gedacht. Eigentlich müsste es so sein aber schau dir mal die Rückseite von dem Adafruit -Board an
Hmm, ich würde da eher dem Datenblatt vertrauen, als irgendeinem Adapterboard. :mrgreen:
Aber ich nehme mal an, du hast es auch schon mit 0xA0 probiert?

Achja, du benutzt den Adapter ja garnicht!
Falls du dich auf internen PullUps des Arduino verlässt (wo schaltest du die eigentlich ein?!), würde ich es lieber mal mit externen PullUps (4k7 oder so) an SDA, SCL versuchen.

Und muss man im Arduino-Code noch irgendwie den Clock-Pin als Output setzen oder sowas in der Richtung, oder macht die Library das?
Ansonsten fällt mir gerade auch nix ein...
“With great power come great heat sinks.”
paulwilhelm.de -- mosfetkiller.de
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 531
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 23 Mal

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von L_B_S »

@Paul
Falls du dich auf internen PullUps des Arduino verlässt (wo schaltest du die eigentlich ein?!), würde ich es lieber mal mit externen PullUps (4k7 oder so) an SDA, SCL versuchen.
siehe meine Schaltung gleich am Anfang des Treats, da sind je 10K auf VCC
Und den Rest sollte eigentlich die Library erledigen. Ob da Signale an SCL und SDA kommen, das könnte ich nochmals mit dem Skope kontrollieren. Aber wie schon erwähnt, mit einem LCD-Display an diesen Anschlüssen, zwar mit einer anderen Library, klappte das.
Also wo liegt der Fehler ?
- Die Beschaltung IC am UNO geht nicht anders, habe ich auch mehrmals kontrolliert.

- Ob die "Adafruit_FRAM_I2C.h" fehlerhaft arbeitet ?
Das ist eher unwarscheinlich, denn dann müsste mit dem Board das auch nicht funktionieren.

- Die Adresse des IC's ( 0x50 bis 0x57 ) ist falsch ?
Kann ich nicht kontrollieren. Im Datenblatt kann ich nichts finden oder ich übersehe es.

Ich habe zwar hier ein Programmcode von einem "I2C_bus_scanner_for_Arduino", der kommt mir aber suspekt vor wegen dieser Zeile: #include <avr/io.h> . Schrägstrich im Dateinamen??? Da meckert das BS. Beim Compilieren gibst auch ne Fehlermeldung. Wenn gewünscht, kann ich den Code auch mal posten.

Guter Rat ist teuer :|

Gruss
Ludwig
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 531
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 23 Mal

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von L_B_S »

Ups, hätte ich glatt übersehen...
@ stoppi
Ich probiere den Scanner mal... Danke
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 531
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 23 Mal

Re: 24LC256 Serial EEPROM am Arduino wird nicht erkannt

Beitrag von L_B_S »

Habs gleich probiert....
der Scanner findet das Gerät auf Adresse 80 (0x50)....schon mal ein Fortschritt 8)
Ein grosses DANKE an stoppi

Kann mir aber nicht erklären , warum es mit der "Adafruit_FRAM_I2C.h" und zugehörigen fram.begin(0x50) nicht funkt...
Antworten