Ich hätte gerne mehr Infos über EEPROMS

Schönen guten Tag.

Vorwort:
Ich arbeite seit Längerem bereits mit Arduinos, aber mehr so Kruscht und Krempel, nix vernünftiges.

Vor einigen Tagen fing ich jedoch an, etwas "sinnvolles" zu basteln.

Ich habe mir EEPROMS bestellt (24LC256), da ich ein ungeduldiger Mensch bin, wollte ich nicht warten, bis die Ware mit der Post bei mir eintrifft und habe aus einem meiner defekten Monitore einen 8-Beiner rausgelötet, der irgendwie nach EEPROM aussieht (ATMLH208). Es gibt dazu keinerlei technische Daten, hab ihn so angeklemmt, wie einen 24LC256. Es funktioniert auch einwandfrei, ich kann Daten reinschreiben und auch wieder auslesen.

Mein eigentliches Anliegen:
Der 24LC256 hat ja 256Kb (kilo bit). da ein Byte aus 8 Bit besteht, dürften das ja "nur" 32KB Speicherkapazität sein.
Ergo müsste die Adressierung auch bis 32768 gehen oder irre ich mich da?

Ich habe bei meinem Projekt die automatische Adressierung so ausgerechnet, daß "nur" 2 Byte zwischen dem nächsten Datenblock Platz ist um nicht allzuviel zu verschwenden. Aber ich bin nicht mal annähernd an die Adresse 1024 gekommen.

Wenn ich tatsächlich bis zu 32767 bzw. 32768 gehen kann, dann sind das ja noch n Haufen Platz den ich da habe.

Dann hätt ich noch ne Frage zur Adressierung, ich habe A0-2 mit GND verbunden und habe damit die Adresse 50.
Welche Kombinationen zur Adressierung gibt es?
Und ich hab im Datenblatt was von Kaskadierung gelesen, wobei ich nicht genau weis, wie das geht und zum Anderen gehe ich davon ausß, daß die Adressierung bei zwei Chips dann bis 65535 gehen dürfte, da ich dann theoretisch, nahtlos weiteradressieren kann. Stimmt das soweit?

Mein Projekt:
Derzeit bastel ich an einer Universalfernbedienung die vorhandene Fernbedienungen kopieren kann.
Bisher bin erst bei Infrarot angelangt, was schon mehr Zeit durch Recherche in Anspruch genommen hat, als das eigentliche Programmieren.
Im Moment bin ich so weit, daß ich eine graphische Ausgabe auf einem 1,8" TFT habe, in der die Knöpfe farblich dargestellt werden, so wie sie darunter auch tatsächlich angeordnet sind.
Ich kann die Knöpfe, 12 an der Zahl, mittels vier weiteren Tasten in verschiedene Ebenen einteilen, derzeit 4 Ebenen, wobei nur drei für Infrarot sind.
Mittels einem zugewiesenenen Speicherknopf kann ich dann die zuvor empfangenen IR-Signale abspeichern, wo jeder Knopf für jede Ebene seinen eigenen Speicherplatz im EEPROM zugewiesen bekommt.
Allein diese Formel auszutüfteln ohne daß sie die Speicherbereiche in die Quere kommen, war nicht einfach.

Jetzt wurde ich gierig und will noch mehr, also werd ich versuchen, bis zu vier oder mehr funktionen auf einen Knopf legen zu können. Dazu muss ich die Speicherroutine abändern und ich brauch pro Knopf 3x int speicherplätze, was insgesamt 6 byte sind plus einen long int, was 4 byte sind.
Also brauche ich pro Knopf 10 byte Speicherplatz. Das mal vier sind 40 byte, wenn ich aber tatsächlich bis zu 32767 Adressen habe, dann soll mir das eigentlich egal sein, wieviele Speicherplätze ich pro Knopf belege.

Wenn ich das mit dem Kaskadieren auch noch hinbekomme, dann isses eh Wurscht. Wobei ich nicht weis, wieviel Platz der ATMLH208 hat, den ich derzeit drin habe.
Ich weis nur, daß ich mindestens bis 8096 gehen kann, da ich das ausprobiert habe. Weiterhab ich nicht probiert, wenn der 24LC256 schon bis 32768 gehen könnte, dann dürfte der ATMLH208 sicher auch mehr als nur 8096 haben.

Weitere Funktionen, wenn ich wirklich viel Speicherplatz hinbekomme, wären das Empfangen und Kopieren / Speichern und Senden von 433MHz-Signalen.

Das Problem iss, das Ding soll in die Hosentasche passen.
Ein Maximum an Dimensionen wird mir durch die Platine und das Kantholz vorgegeben, das ich mit der CNC-Maschine ausfräsen werde, damit die Platinen perfekt reinpassen und die Löcher für die IR-Sender und -Empfänger da sind, wo sie sein sollen.
Mit einem Alu-Deckel, wo die Löcher für die Tasten und das TFT ausgefräst werden.

Wenn noch Platz ist, würd ich gerne entweder einen DCF-77-Empfänger reinbauen, aber ich denke, das dauert ne Weile, bis die Uhrzeit stimmt, und da das Gerät nur bei Gebrauch eingeschaltet wird, dürfte ein RTC-Modul sinnvoller sein.

Ich hab auch schon an ein GPS-Empfänger gedacht, umd ie aktuellen Coordinaten anzuzeigen und zu speichern.
ggf. sogar zum Tracken der Daten, die man dann später am PC einlesen kann.

Aber dazu reicht sicher der Speicher vom Nano nicht aus.

Hallo,

zur Adressierung. Du hast bei dem Typ 3 Bits zum addressieren. Das heißt, du hast 8 (2^3) Möglichkeiten. Das heißt, du könntest von dem gleichen Typ 8 ICs an einen Bus hängen. Du kannst auch weitere ranhängen, nur muss dann der Adressbereich woanders liegen. Das der bei dir nicht bei 0 anfängt sondern mit 50 haste ja schon bemerkt. Andere ICs fangen bei 28 an usw. Wer dann wild kombinieren möchte muss vorher das Datenblatt lesen welche Adressen möglich sind.

Zur internen Addressierung kann ich nichts mit Sicherheit sagen, da wissen andere mehr.

Was auf jeden Fall hilfreich ist mit I2C ist der Busscanner, falls man unbekannte Adressen hat.
Hier verlinkt in #1. EEPROM Problem 24c04 -- 24c08 - Deutsch - Arduino Forum

Und dann dürfte sich noch combie freuen, wenn du seine Lib testest, denke ich, hoffe ich.
http://forum.arduino.cc/index.php?topic=369667.0

Doc_Arduino:
Und dann dürfte sich noch combie freuen, wenn du seine Lib testest, denke ich, hoffe ich.
[Projekt] I2C EEPROM - Deutsch - Arduino Forum

Genau!

Wobei, die Lib bedarf der Renovierung.

Sie ist soweit ok, glaube ich, aber ein paar Erweiterungen stehen auf dem Plan.
Z.B. wird sie demnächst umbenannt in I2C-Memory, oder so, da man damit auch FRAM und etliche Spezialbausteine beschreiben kann, oder besser, wird können.
Auch das zusammenfassen, von mehreren Bausteinen zu einem, durchgehenden Adressbereich, steht auf meinem Wunschzettel.

Hallo,

fein du die Pflege machst. :wink:

Nun, zur Adressierung ist das so, daß ich das mit den 50 nur aus Recherchen habe, da im Datenblatt nichts von den 50 drin steht.

Ich hätte gerne gewusst, welcher von den Pins A0-2 welche Adresse hat.
Hab unten DIP-Schalter reingelötet, damit ich, falls ich mal mehr davon rein mache, später auch die Adresse ändern kann, falls notwendig.

Ich hab jetzt soweit fertig, daß ich IR-Befehle aufnehmen und speichern kann, pro Knopf 4 stück, und ich kann pro Knopf die Speicherplätze selbst wählen, und sie auch wieder löschen. Und jeder der 18 Knöpfe kann ich mit 3 Ebenen programmieren, z.B. pro Gerät eine Ebene.
Also insgesamt 18 Knöpfe, bei 3 Ebenen und jeder Knopf mit 4 Befehlen füttern. Somit kann ich auch Pro knopf 4 Kommandos hintereinander ausgeben, falls notwendig. Z.B. mit einem Knopfdruck Alle meine PC-Monitore an- und ausschalten, obwohl von verschiedenen Herstellern.
Oder automatische Abläufe, z.B. ins Menü, was auswählen und wieder raus mit einem Knopf.

Und am Wochenende werd ich mir das Gehäuse fräsen.

Hallo,

die Adressen kannste mit dem Scanner auslesen. Dafür ist der u.a. da.

Dann hätt ich noch ne Frage zur Adressierung, ich habe A0-2 mit GND verbunden und habe damit die Adresse 50.
Welche Kombinationen zur Adressierung gibt es?

Mit den 3 Bit A0 .. A2 kannst du 8 Werte auswählen (also 0 .. 7)

Üblicherweise ist A0 die 1, A1 die 2 und A2 die 4.
Wenn alle 3 HIGH sind, sollte dein Scanner die Adresse 0x57 anzeigen.

(alles nur geraten)

In den Datenblättern ist selten die ganze Adresse angegeben sondern nur der fixe Teil (4 bit) der zusammen mit den Adresseingängen A0 bis A2 einen 7Bit Adresse ergibt.
Grüße Uwe

Ok, danke euch, das hilft mir zumindest bei der Adressierung weiter, wenn ich nen zweiten EEPROM einbauen will.

zumindest

? ? ?