PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : In den Eeprom schreiben / lesen zum Verständniss für alle



mirco99
19.08.2008, 08:35
Hallo,

da ich in der Suche nicht fündig geworden bin, möchte ich den erfahreneren Programmierern bitten eine einfache und verständliche
Übersicht zu erstellen. Vielleicht am Beispiel mit dem Mega 8.

ReadEeprom und WriteEeprom ist verständlich genug denke ich.

was hat es mit den Labels / Data auf sich
Was bedeutet data 1,2,3,4 oder 1%,2,3%
Mit eram kann man direkt aus dem Eeprom arbeiten ohne eine 2. Variable zu benutzen ?

Wie spreche ich eine Startadresse an, wo eine großer Wert wie 100 000 000,0000000 drin steht.
Die erste Eepromadresse darf nciht benutzt werden, da diese überschrieben werden.

Wie müssen die Variablen dimensioniert werden?
Wie lang darf eine Zahl mit kommastellen mit welcher wariable sein -
String, word, single, double, long ?

Kann jemand ein verständlcihes Programmbeispiel posten ?

Aus der Bascom Hilfe werde ich nicht schlau, was sonst immer funktioniert.

Bringt doch mal etwas Licht für die Anfänger in das Dunkle.

Die Kurzfassung könnte man in den Wissensbereich schreiben.
Dort habe ich nur etwas über externe Eeproms für 1c2 Bus gefunden.

Ich danke euch.

Blue72
19.08.2008, 12:23
Hallo Mirco,

also ich bin auch absoluter Anfänger, habe aber mittlerweile ein (für mich) umfangreiches Programm geschrieben.

Da es ungefähr 1000 fragen auf einmal sind versuch ich mal etwas davon zu beantworten:

Die Bascom Hilfe zu den Data Zeilen finde ich absolut verwirrend.


Label1:
Data 1 , 2 , 3 , 4 , 5

Readeeprom B , Label1
Print B 'prints 1

So, das besagt das die variable B nun den Wert 1 hat. `
Aber warum ? Mit dem Label1 übergibt man doch nur die Speicheradresse im EEPROM, nicht den Wert, also wird wohl vorher ein Wert in das EEPROM übertragen worden sein.

Wenn man jetzt writeeeprom 23, 1 schreibt käme bei dem obigen Versuch bei PRINT B 23 raus ....

Wie die variablen dimensioniert sein müssen hängt natürlich davon ab was für Werte Du ins EEPROM schreiben möchtest (einzelnes bit, ein Byte, Word etc.). Wenn Du z.B. den Wert 255 ins EEPROM schreiben möchtest, benötigst Du ein Byte als Dimensionierung. Bedenke aber auch das wenn Du z.B. an Speicherstelle 1 den Wert 255 schreibst, Du erst wieder ab Speicherstelle 3 weiterschreiben kannst (vorrausgesetzt Du hast die variable als Byte dimensioniert)

Gruß
Jens

mirco99
19.08.2008, 12:52
Ahhha

ich kapiere.

was ist der höchstmögliche Wert, den ich schreiben Kann mit welcher Variable (Double?).

Ich baue gerade ein Amperestundenmess und Ladegerät für meine Solarzelle. Da ich die ADC Werte fortlaufend addiere, habe ich schnell ein Paar Milionen als Wert stehen.

Ich benötige nur diesen einen Wert im Eeprom.
Ich habe gelesen, der Eeprom Speicher nur 100000 mal beschrieben werden kann. Ich wollte jede Sekunde schreiben, um beim Stromausfall,den Amperestundenwert behalten zu können.
60sekunden mal 60minuten mal 24stunden mal 356Tage = über 30 Millionen mal speichern.
Nach einem Tag habe ich schon 86400 mal gespeichert und gelesen.

Sauerbruch
19.08.2008, 15:31
Ich wollte jede Sekunde schreiben, um beim Stromausfall,den Amperestundenwert behalten zu können.


Wenn Du nicht alle 1,5 Tage den Controller wechseln möchtest ( =P~ ) würde ich das mit dem Stromausfall so regeln:

- Den zu summierenden Wert als "normales" Word dimensionieren
- Versorgungsspannung über eine Diode und ´nen Elko für 1-2 Sek. puffern
- Die eigentliche Versorgungsspannung (vor der Diode und dem Elko) auf einen Interrupt-Pin legen
- Den Interrupt auf fallende Flanke konfigurieren
- In der ISR den aktuellen Wert des Words ins EEPROM schreiben lassen.