Vorbereitung
Also, schnappe dir mal bitte nen kariertes Blatt Papier und nen Stift und als Hilfsmittel vlt nen Lineal, oder nen Geo-Dreieck. Nun ziehst du eine Linie unter meinetwegen 32 Kästchen. Zieh noch ne Linie Darüber und am Anfang und am Ende. So das du einen Bereich markiert hast, der 1x32 Kästchen groß ist. Das ist nun mal im übertragenden Sinne unser EEPROM. Jedes Kästchen steht für ein Byte. Alle 4 Kästchen machst du einen dicken Strich. Das sind dann unsere Speicherseiten. Also 1x4Kästchen und alle leer!
Umwandeln der Adresse:
Zum einen möchte ich dir sagen, dass in der Informatik alles 0 Basiert ist. Also, die erste Speicheradresse ist nicht 1, sondern 0. Genau das gleiche mit den Seiten. Es fängt nicht bei 1 an sondern bei 0. Folgendes habe ich vor gegeben in der Funktion zum umwandeln der relativen Adressen in absolute. Die EEPROM Größe, die Größe der Speicherseite und natürlich die Adresse zum lesen/schreiben. Mehr brauche ich auch nicht. Was ich durch die Logik des Programmes raus finden will, ist die absolute Speicheradresse. Gucke dir bitte folgende Gleichung an, und du wirst sehn, das es klappt.[code:1:02295bd557]( ( Speicherseite * größeDerSeite ) + Adresse ) mod EPPROMGröße = absolute Adresse[/code:1:02295bd557]Die Speicherseite ist eine Zählvariable. Diese wird immer um eins addiert, bis ich eine Speicherstelle gefunden hab, die passend ist. Dann breche ich die Schleife ab, und kann die absolute Adresse zurück geben. Also als kleines Bsp: [code:1:02295bd557]( ( 5 * 4 ) + 3 ) mod 32 = 23[/code:1:02295bd557]Natürlich muss ich vorher prüfen, ob die relative Speicheradresse auf meine Speicherseite passt. Das heißt, wenn meine Speicherseite 4Byte groß ist, darfst du nicht auf Speicheradresse 6 oder so schreiben. Jedoch sind die Speicherseiten "unendlich". Damit du siehst, das ich nicht schummel, hier mal ein Bsp, wo ich, dadurch, das meine Schleife zu lange läuft, auf Seite 13 versuche zu schreiben.[code:1:02295bd557]( ( 13 * 4 ) + 3 ) mod 32 = 23[/code:1:02295bd557]Wow. Wer hätts gedacht, schon wieder die 23. Speicherstelle ( absolut ). Probiere es auf dem Blatt Papier aus. Du wirst nie über die 32 Speicherzellen kommen und bei gleicher Speicheradresse und unterschiedlichen Speicherseiten immer wieder gleich weit weg von dem dicken Strich kommen.
So. Nun werde ich erstmal anfangen ein bisschen zu programmieren, bevor ich mich vorher noch tot erklärt hab. Dann kannst du es auch selber dir mal anschauen und dich davon überzeugen das es funktioniert. Also, wenn du den Code verstehst. Ich werde es auch extra nicht erst für den µC programmieren. Dann brauchst du den nicht zu opfern.
So, noch ein kleiner Nachtrag. Falls ihr denkt, ich möchte nachher die Schaltung und das Programm verkaufen, das ist so ganz und gar nicht richtig. Ich dachte eigentlich, das ich die GPL ran gehangen hab. Auch möchte ich nochmal betonen, dass das Projekt in meiner Freizeit entsteht, weil ich Spaß daran habe. Also sehe ich dort keinen Grund dies zu verkaufen!
mfg
KeDaiv
P.S.: mod steht übrigens für Modulo.
Hier
nachzulesen, falls es einem nichts sagt.