I2C EEPROM Adresserkennung, erstes Byte wird nicht erkannt

Ich bschreibe mit folgendem Sketch meine I2C EEPROMs
...
Würde es überhaupt reichen wenn die Adresse nicht gefunden wird, dass das soviel heißen würde das gar kein EEPROM angschlossen ist?

Ich weiß ich such mir nicht die leichtesten Sachen, aber ich muss das nunmal machen...

Wenn man wüsste, welches EEProm du verwendest, dann könnte man sagen, ob die Funktionen überhaupt geeignet sind.

Sorry, ich benutze den 24LC64.

  1. Bedingung: Erstes Byte muss 1 sein, wie vorher festgelegt. Hier verstehe ich nicht warum das nicht funktioniert.

Ich wette, da kommt 49 raus!
Und das ist voll korrekt.

Übrigens, die Addressierungsmethode in den Funktionen ist wohl für dein EEPROM geeignet.
ungetestet

49? Wie jetzt und warum soll das rauskommen?^^

:wink:
Weil die "1" in der ASCII Tabelle auf Platz 49 steht.
:wink:

Ah ok, jetzt verstehe ich! Werde ich testen.

Die Adressierungserkennung würde aber nicht ausreichen für den Fall das kein EEPROM vorhanden ist und das ganze Programm dann nur noch Quatsch ausgibt?

bool EEPROM_Bereit(byte Adresse )
{
   WIRE.beginTransmission(Adresse); 
   return ! WIRE.endTransmission(); 
}

Beachte die Zwangspausen nach dem Schreiben.
Beachte die Pagegrenzen.
Die Wire Methoden haben Rückgabewerte, an denen kannst du erkennen ob der Transfer erfolgreich war. Werte dieses aus.

Pagegrenzen musste ich mir jetzt erstmal anschauen...
D.h. Alles was über 64 oder eines vielfachen hinaus geht wird dann auf die unteren Bytes der Adresse geschrieben?

Reichen die Pausen nicht die ich habe? Hat bisher funktioniert.

Auf was bezieht sich der Code?

Der Code zeigt dir die Bereitschaft/Vorhandensein deines EEPROMs
Das wolltest du doch....

auf die unteren Bytes der Adresse geschrieben?

auf die unteren Bytes der Page geschrieben!

Danke!
Hatte da eher an was wie 'Wire.available' gedacht, habe dazu aber noch nicht recherchiert.

Dann werd ich morgen mal versuchen das Programm zum Laufen zu bringen.

combie:

bool EEPROM_Bereit(byte Adresse )

{
  WIRE.beginTransmission(Adresse);
  return ! WIRE.endTransmission();
}

Ich tu mich ein wenig schwer damit es zu verstehen und einzufügen, alles andere scheint zu funktionieren. Ist die Seite und die Library nicht auch von dir?
http://combie.de/Arduino/I2C_EEPROM/readme.html
Kann ich meinen EEPROM da einfach mit einfügen?

Diese Lib ist von mir: GitHub - CombiesGit/I2C_EEPROM: Supports a wide range I2C eeproms
Und ja, sie sollte mit deinem EEPROM funktionieren.
Hinzufügen von bisher unbekannten IC2 EEPROMs ist möglich.
(siehe das UserDefinedEEP Beispiel)

Hi!

Ich kann zwar nicht zur Lösung des Problems behilflich sein, bin aber selbst daran Interessiert EEProms zu beschreiben. Mache ich bisher mit einem Raspi! Wärst Du so nett, und teilst Deine Verkabelung mit mir?

mfg

Wärst Du so nett, und teilst Deine Verkabelung mit mir?

Da können sich die EEProms und auch Arduinos durchaus unterscheiden.
Das Datenblatt zu dem jeweiligen Baustein gibt gerne Auskunft.

Mache ich bisher mit einem Raspi!

Dann sollte dir das auch mit einem Arduino gelingen.

Ok, ich gehe einfach mal davon aus, das ich 10/11/12 für SI/SO/CLK nutze und halt die 4 für CS. Und je nach Chip, SPI25 z.b jeweils HOLD+CP mit an VCC anklemme.... Sind noch Widerstände oder sonst was nötig?

Oh!
Dein tun nennt sich "Thread Hijacking".
Wir sind hier gerade voll auf I2C EEProms.
SPI ist ein ganz anderes Thema.

Tipp:
Mache dazu einen eigenen Thread auf.

Danke! Funktioniert!

Fein!