Forum: Mikrocontroller und Digitale Elektronik Laufnummerierung im Flashspeicher einlesen


von Eddi (Gast)


Lesenswert?

Hey,
bin neu hier im Forum also sorry wenn nich gleich alles passen sollte...
Ich habe Folgende problemstellung:
Ich möchte ein kleine Programm bei dem man auf Tastendruck eine Nummer 
in den Flashspeicher einliest.
Das programm ist bisher so aufgebaut dass man mit einem 2. Taster die 
Anzeige in einem LCD weiter schalten kann. Die Anzeige wir aus einem 
3Dimensionalen Array von Chars ausgelesen.
Nun möchte ich mit einm Taster die aktuelle Arraynummer im Flash 
speichern und das ganze mehrmal. sprich man kann mehrere 
auswahlmöglichkeiten Einspeichern.
ich habe gedacht ich nehm dazu ein Array im Flash.
Nun müsste ich allerdings die aktuelle position vom Array im Flash beim 
Programmstart auslesen, damit die neuen zu speichernden werte nicht über 
die anderen geschrieben werden.
wie könnte ich das tun?

von Alex S. (thor368)


Lesenswert?

Tach Eddi,

ich glaube hier versteht niemand so recht was du schreibst. Ein 
Mindestmaß an Rechtschreibung und Interpunktion sowie geordnete 
Gedankengänge wären sinnvoll. Man hilft dir sicher gerne weiter aber auf 
Rätsel raten hat keiner viel Lust. Lies deinen post einfach noch mal 
durch bevor du ihn abschickst.

Zum eigentlichen Thema. Grundsätzlich ist für die Helfer nie gut nur ein 
winziges Teilproblem zu kennen. Beschreibe erst einmal was du eigentlich 
tun willst.

An sonsten fehlen wichtige Informationen:
Welche µC Platform verwendest du? AVR, PIC, MSP, ...???
Warum ist es nötig die Auswahlen im flash(ROM) und nicht im EEPROM des 
µC zu speichern? Oder hat dein µC kein EEPROM?

Thor

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Eddi schrieb:
> ein kleine Programm bei dem man auf Tastendruck
>  eine Nummer in den Flashspeicher einliest.
> ...
> die aktuelle position vom Array im Flash beim  Programmstart auslesen

einlesen???? Du meinst bestimmt "abspeichert".

Lesend ist halt die Richtung "raus aus <irgendwas>".

von Eddi (Gast)


Lesenswert?

ja ok etwas verwirrend dach ich mir schon fast :D

zuerst mal danke an euch beiden...
ja ich meinte abspeichern...

Ich benutze den ATMega8 von AVR sollte ja jeder kennen. Kurz und knapp 
will ich mit einem Tastendruck eine Integerzahl im Flash abspeichern das 
ist ja kein problem. Allerdings soll nun wenn ds programm wieder startet 
(nachdem der microkontroller ausgeschaltet wurde) diese Zahl aus dem 
Flashspeicher wieder in eine Variable gelesen werden.

wäre das einfach mit
static const int8_t PROGMEM;
gelöst?

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Mitm Flash geht das nicht, dafür hat der AVR abern EEPROM intern.

von Alex S. (thor368)


Lesenswert?

Doch doch man kann auch on the run das flash beschreiben. Das ist nur um 
Längen komplizierter und lamgsamer. Ich glabe auch nicht, dass Eddi das 
dem EEP vorzieht. Wobei wir wieder bei Rätselraten wären...

Also kommen wir zur ürsprünglichen Frage zurück: Warum flash und nicht 
EEPROM?

Thor

von Eddi (Gast)


Lesenswert?

naja ich dachte ganze einfach, dass der Flash viel einfache zu 
beschreiben wär und da de EEprom ja eine begrenzte schreibanzahl hat hab 
ich da den flash lieber vorgezogen

trotzdem danke schon mal!

von Eumel (Gast)


Lesenswert?

Bei Flash die die maximalen Schreibzykeln wesentlich geringer als beim 
EEPROM.

von Spess53 (Gast)


Lesenswert?

Hi

>naja ich dachte ganze einfach, dass der Flash viel einfache zu
>beschreiben wär und da de EEprom ja eine begrenzte schreibanzahl hat hab
>ich da den flash lieber vorgezogen

Der Flash aber auch.

Zum EEPROM:

http://www.atmel.com/Images/doc2526.pdf

http://www.atmel.com/Images/AVR101.zip

MfG Spess

von Eddi (Gast)


Lesenswert?

achso ok dann hätten wir hier wieder einen dümmlichen Irrtum aus der 
Welt geschafft :D

wie könnte man das ganze jetzt realisieren dass eine Variable den Wert 
der Speicherzelle vom EEprom bekommt?
kann man die Adresse dann einfach hochzählen damit meine ich , wenn wert 
1 im EEprom abgelegt ist wird zur adresse einfach 1 addiert und der 
nächste wert hinein geschrieben ?

von Karl H. (kbuchegg)


Lesenswert?

Eddi schrieb:
> achso ok dann hätten wir hier wieder einen dümmlichen Irrtum aus der
> Welt geschafft :D
>
> wie könnte man das ganze jetzt realisieren dass eine Variable den Wert
> der Speicherzelle vom EEprom bekommt?

indem man die Funktion aus dem Vorrat an EEPROM-Funktionen benutzt?

wie das geht, findet sich zb im AVR-GCC-Tutorial, Abschnitt 16.3 
EEPROM

von Eddi (Gast)


Lesenswert?

ah perfekt ging bei mir nur nicht, weils nicht global sondern in der 
main funktion geschrieben war

danke! vorallm für die viele Gedult ;)

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Mal von außen betrachtet:

Nach so vielen Irrtümern halte ich es auch für möglich, dass Eddi das 
SRAM vorziehen würde. Das verträgt noch ein bisschen mehr Schreibzyklen. 
:-)

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.