Forum: Mikrocontroller und Digitale Elektronik EEPROM Daten wegen Zugriffszeit im RAM Spiegeln?


von Zeitsparer (Gast)


Lesenswert?

Hallo,

ist es aus Zugriffszeitgründen ev. sinnvoll, die im EEPROM 
abgespeicherten Daten einer Sensorkennlinie eins zu eins ins RAM zu 
spiegeln und vom RAM aus zu operieren?

Das im EEPROM liegende Array könnte in der Ini ins RAM gespiegelt 
werden.

Welche Probleme bzw. Nachteile handelt man sich da ein? Bitkipper bei 
EMV o.ä.?
Wie macht man das praktisch?

Gruß

von Falk (Gast)


Lesenswert?

@ Zeitsparer

>ist es aus Zugriffszeitgründen ev. sinnvoll, die im EEPROM
>abgespeicherten Daten einer Sensorkennlinie eins zu eins ins RAM zu
>spiegeln und vom RAM aus zu operieren?

Wenn die Kennliniendaten oft und schnell gebraucht werden, dann ja.
Wenn sie nur selten gebraucht werden und Geschwindigkeit keine Rolle 
spielt, dann ist es egal.

>Das im EEPROM liegende Array könnte in der Ini ins RAM gespiegelt
>werden.

Ja.

>Welche Probleme bzw. Nachteile handelt man sich da ein? Bitkipper bei

Wenn in deinem RAM Bits kippen, hast du SO oder SO ein Problem. 
Kritische Anwendungen verwenden CRC Prüfsummen, die zyklisch geprüft 
werden (z.B. in Weltraumelektronik, Sicherheitstechnik, etc.).

>EMV o.ä.?
>Wie macht man das praktisch?

??
Wo ist das Problem? Daten aus dem EEPROM lesen und ins RAM schreiben.

MfG
Falk

von ab-cd (Gast)


Lesenswert?

.
war 'lesen' nicht doch viel schneller ....als schreiben ?
.

von Zeitsparer (Gast)


Lesenswert?

Die Daten müssen in jeder main gelesen und damit gerechnet werden. Es 
sind mindestens zehn Werte. Darunter komme ich nicht.

EEPROM Lesen ist natürlich schneller als Schreiben.

Ich dachte schon an zyklisches sukzessives updaten einer einzelnen 
Zellen einmal pro main.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Lesen aus dem SRAM 2 Takte
Lesen aus dem EEPROM 2 Takt (sbi und in)
Also bringt nicht soooo viel es sei den du willst viel hinterinader 
lesen, aber meist ist der Controller eh gelangweilt...

von Ralph (Gast)


Lesenswert?

@Läubi
So einfach ist das aber nciht.
Du musst erst das EEPROM ansprecehn, dann den Lesebefehl absetzten. 
Danach die Adresse und Anzahl der Byte(s) übertragen.
Diesen Protokolloverhead hast du bei EEPROM immer.



@Zeitsparer
Am schnellsten ist es wenn du die Daten im Ram spiegelst. Das heißt bei 
der Initialisierung die Daten von EEPROM ins Ram lesen, und beim 
Abschalten die eventuell geänderten Daten wieder ins EEPROM schreibst.

Das wird in professionellen Anwendungen übrigens genauso gemacht.

von Rolf Magnus (Gast)


Lesenswert?

> ist es aus Zugriffszeitgründen ev. sinnvoll, die im EEPROM
> abgespeicherten Daten einer Sensorkennlinie eins zu eins ins RAM zu
> spiegeln und vom RAM aus zu operieren?

Das kommt auf die gewünschte Anwendung an. Wenn der Zugriff zu langsam 
für die Anforderung ist, wird's wohl sinnvoll sein, sonst nicht.

> Welche Probleme bzw. Nachteile handelt man sich da ein?

Längere Initialisierungszeit, etwas mehr Programmieraufwand, höherer 
RAM-Verbrauch. Falls Daten zurückgeschrieben werden müssen, ist bei 
einem Ausfall der Versorgung alles weg, was zwischenzeitilich nicht 
gesichert wurde.

> Bitkipper bei EMV o.ä.?

Wenn in deinem RAM Bits umkippen, ist ein sinnvoller Betrieb des Systems 
sowieso unmöglich.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ralph wrote:
> @Läubi
> So einfach ist das aber nciht.
> Du musst erst das EEPROM ansprecehn, dann den Lesebefehl absetzten.
> Danach die Adresse und Anzahl der Byte(s) übertragen.
> Diesen Protokolloverhead hast du bei EEPROM immer.
>
Naja man muß das auch ins RAM spiegeln, also Initialisierung laß ich mal 
nicht gelten.

Adresse laden und und Bytes übertragen mußt du auch beim SRAM,
Lesebfehl hab ich ja als SBI gezählt und IN als auslesen, beim SRAM mußt 
du auch erst die Adresse setzen wie beim EEPROM und kannst dan lesen, 
nur das das Lesen halt 2 Takte braucht.

Und ich behaupte einfach mal das es sehr wenig Anwendungen gibt wo man 
eine Sensorkennlinie in soooo hoher Geschwindigkeit lesen muß als das es 
sich lohnt das ins RAM zu spiegeln...

von Rolf Magnus (Gast)


Lesenswert?

@Läubi:
> Lesen aus dem SRAM 2 Takte
> Lesen aus dem EEPROM 2 Takt (sbi und in)

Von was für SRAM und EEPROM sprichst du?

von Falk (Gast)


Lesenswert?

@ Zeitsparer

>Die Daten müssen in jeder main gelesen und damit gerechnet werden. Es
>sind mindestens zehn Werte. Darunter komme ich nicht.

Graf-Zahl-Witz-mal-wieder-verkniffen

>EEPROM Lesen ist natürlich schneller als Schreiben.

A) WELCHES EEPROM? Ich habe unbewusst an ein exterenes, serielles EEPROM 
gedacht, meist per I2c oder SPI angeschlossen. I2C macht max. 400 
kbit/s, effektiv bissel weniger. SPI je nach EEPROM einige Mbit/s.

b) Die Aussage "Die Daten müssen in jeder main gelesen und damit 
gerechnet werden" ist so gut wie nichts wert. Wie oft wird den dein 
"main" pro Sekunde ausgeführt? 10mal? 1000mal?

>Ich dachte schon an zyklisches sukzessives updaten einer einzelnen
>Zellen einmal pro main.

Und wozu?

@ Rolf Magnus

>@Läubi:
>> Lesen aus dem SRAM 2 Takte
>> Lesen aus dem EEPROM 2 Takt (sbi und in)
>Von was für SRAM und EEPROM sprichst du?

Die internen vom AVR.

@ Läubi Mail@laeubi.de

>Und ich behaupte einfach mal das es sehr wenig Anwendungen gibt wo man
>eine Sensorkennlinie in soooo hoher Geschwindigkeit lesen muß als das es
>sich lohnt das ins RAM zu spiegeln...

Sehe ich ähnlich. Aber man sollte einfach mal ein paar brauchbare Zahlen 
auf den Tisch legen (an den OP gerichtet). Dann klappts auch mit den 
substanziellen Antworten . . . ;-)

MFG
Falk





Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.