PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : EEProm Verständnissfrage



bernd33-1
05.01.2008, 15:02
Hi zusammen,

kleines Verständnissproblem:

Wenn ich ein 2404 EEProm verwende, dann muss ich ja die Speicheradrese angeben, an welche stelle im EEProm der Wert gespechert werden soll.

Gut. Sowei klar.

Wenn ich jetzt den besagten 2404 hab. Der hat dann 4000 Bit? Durch 8 Also 500 Speicherplätze für jeweils 1 Byte?

Wenn ja, wie adresier ich dann die Speicherstellen von 256 bis 500? In allen Beispielen wird die Variable für die Speicheradresse als byte angegeben und hier geht der Bereich doch nur bis 255!?

Wo ist mein Denkfehler?

Danke und Grüße, Bernd

PS:Prinzipiell tut Hard-und Software bereits. Es ist nur die Frage welchen EEProm ich verwenden soll....wegen Platz und so.

Rofo88
05.01.2008, 15:41
Wenn der Speicherraum größer als 255 Byte ist gibt es zweites Adressbyte.
siehe hier : https://www.roboternetz.de/wissen/index.php/Bascom_und_I2C_EEprom

bernd33-1
05.01.2008, 15:45
Also mit High und Low? Auch beim 2404 EEProm? Genau da bin ich mir nicht sicher, weil in allen Beispielen nix davon zu finden ist.

Danke für deine schnelle Antwort und Grüße, Bernd

Rofo88
05.01.2008, 16:04
Der 24C04 sollte 512 Bytes haben also 2 Adressbytes. Das das im Wiki anders steht kann ich mir nicht erklären. Versuche es doch einmal wirst ja sehen ab er bei Adresse >255 was macht.

linux_80
05.01.2008, 17:38
Hi,

normalerweise sollte der eine 2. I2C Adresse haben, mit der die 2. 256 Byte angesprochen werden !
Basis-Adresse $A0 der 2. Block ist über $A2 zu erreichen.

Deswegen kann man auch nur 4 von diesen an einen Bus hängen.

Deshalb brauchts auch nur ein Adressbyte beim schreiben/lesen.

bernd33-1
05.01.2008, 19:56
Hi Linux_80

ja...so hab ich das auch mal nachgelesen. Nur....wie komm ich dann von Bascom aus an die 2. Page hin? Mir fehlt da jeglicher Ansatz das zu programieren :-(

Weis jemand Rat?

Beste Grüße und Danke nochmals, Bernd

Rofo88
05.01.2008, 20:57
Wenn das so ist wie linux_80 schreibt is das doch ganz einfach

I2cstart 'Start I2C
I2cwbyte &HA0 'Sende Slave Adresse für 1ten Speicherblock
I2cwbyte A 'Sende Speicheradresse
I2cwbyte X 'Sende Wert
I2cstop 'Stop I2C


I2cstart 'Start I2C
I2cwbyte &HA2 'Sende Slave Adresse für 2ten Speicherblock
I2cwbyte A 'Sende Speicheradresse
I2cwbyte X 'Sende Wert
I2cstop 'Stop I2C

bernd33-1
05.01.2008, 21:04
argh ](*,) grundgütiger Herrgott...manchmal is man ja so vernagelt. DANKE!

Werd's testen und dann reporten wies gefunkt hat.

Grüße, Bernd

bernd33-1
06.01.2008, 10:00
Hi,

also...getestet und gelöst. Wenn man bei einem 2404 oder wie meiner 24C04 EEporm den vollen Speicherberiech ausnutzen will muss man die Adressen zum lesen schreiben ab den 256. Byte ändern.

0-255 Byte : &hA0 schreiben und &hA1 zum lesen.

256-512 Byte : &hA2 schreiben und &A3 zum lesen.

Danke an die Helfer und schönen Sonntag noch, Bernd