www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM7 LPC2119 - Variable während Stromausfall beibehalten


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe folgendes Problem - bin beim Durchsuchen des Datenblattes nicht 
fündig geworden:
Ich möchte einen Wert abspeichern, der nach einer Spannungsunterbrechung 
wieder abrufbar ist. Gibts da ne möglichkeit die Variable im 
Programmspeicher abzulegen, oder irgendwas, das mir bei meinem Problem 
weiterhilft...

Danke im voraus

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es um eine Art "EEprom-Ersatz" geht: vgl. Users-Manual 
IAP-Funktionen. Man kann mit diesen Funktionen den Programmspeicher 
beschreiben (einen Sektor der Programmspeichers fuer die 
EEprom-Emulation reservieren). Falls der RAM-Inhalt bei Ausfall der 
Hauptstromversorgung erhalten bleiben soll, hilft wohl nur eine Art 
Notstromversorgung mittels Stuetzbatterie o.ae.

Martin Thomas

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist mir schon klar, das der Inhalt des RAMs bei Stromausfall 
verloren geht.
Aber, wenn ich dich richtig verstehe kann ich die Variable im Flash 
ablegen, indem ich sie mit IAP-Funktionen rüberkopiere. Im User-Manual 
ist das ziemlich schlecht beschrieben, hab sowas noch nie gemacht. Werd 
aber mal probieren mich durchzuarbeiten...

PS: will wenn möglich auf EEprom oder Batterie verzichten!

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob du das Flash als EEPROM ersatz verwenden kannst hängt davon ab, wie 
oft die Variable geschrieben wird, wie viele solcher Variablen du hast, 
und wie gross die sind.

Das Flash des LPC2119 besteht aus 16 8kB grossen Blöcken, wobei jeweils 
ein kompletter Block gelöscht werden muss. Die Blöcke sind für 
mindestens 100000 spezifiziert - wenn du deine Variable nur stündlich 
oder täglich schreibst reicht das wohl leicht, bei minütlichen Updates 
sinkt die Lebensdauer auf wenige Monate.

Die Verwendung der IAP Funktionen ist denkbar einfach, falls du da auf 
Probleme stösst kannst du gerne nochmal fragen.

Gruss,

Dominic

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich möchte vorerst nur mal die Einstellung für die Baudrate abspeichern, 
damit diese auch nach ausschalten der stromversorgung gespeichert 
bleibt.
Die Variable soll also nur geändert werden, wenn ich die 
Baudrate-Einstellung ändere - also nicht allzu oft!
Bin schon dabei das User-Manual durchzuarbeiten, klingt für mich aber 
ziemlich verwirrend.
ich hab folgende Funktionen zur Verfügung:

Prepare sector(s) for write operation
Copy RAM to Flash
Erase sector(s)
Blank check sector(s)
Read Part ID
Read Boot code version
Compare

Ich denke mal ich brauch:

Prepare sector(s) for write operation - Copy RAM to Flash -> zum 
schreiben ins Flash

Blank check sector(s) -> fürs zurücklesen meiner Variable

ist das korrekt?

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Reihenfolge der Operationen ist:
- Prepare Sector
- Erase Sector
- optional: blank check sector
- Perpare Sector
- Copy RAM to Flash

Das Lesen deiner Variablen geht mit "normalem" C, also nen volatile 
pointer definieren, und dann mit *ptr auf den Inhalt zugreifen.

Es gibt eine Application Note zur Verwendung von IAP auf der NXP Seite: 
http://www.nxp.com/acrobat/applicationnotes/AN10256_2.pdf

In der Files Section der LPC2000 Yahoo Group gibt es "LPC2000 onchip 
Flash as EEPROM demo, rev. 1.1": EE_demo_1_1.zip

Gruss,

Dominic

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... und Erase sector(s) wenn du den Wert (Baudrate) "überschreiben" 
willst. Da ein überschreiben nicht möglich ist: Erst löschen (geht nur 
Sektorweise) und dann neu schreiben.
Du musst dann nur beachten, dass du den gesamten Block nicht mehr für 
deine SW verwenden kannst...

> Blank check sector(s) -> fürs zurücklesen meiner Variable
Da bin ich mir nicht so sicher, ansonsten klingt es logisch. Steht in 
der Doku nichts zu "Blank check sector(s)"?


Gruß,
Christian

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab inzwischen das file 'EE_demo_1_1.zip' runtergeladen.

wenn ich die dateien in meine Entwicklungsumgebung (Hitop5) einbinde, 
spckt der compiler folgendes aus:

----   error: parse error before '_at_'   --------

es handelt sich um einen Fehler in folgendem Codefragment:

const unsigned char eeprom[EE_SIZE] at EE_ADDR_L;

was bedeutet dieses '_at_' ???

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das sollte doch ein array sein, oder nicht?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das at ist eine nichtstandardisierte Syntaxerweiterung eines 
C-Compilers, mit der festgelegt werden kann, an welcher Adresse eine 
Variable abgelegt werden soll.

Wie das mit nichtstandardisierten Dingen so ist, wird derartiges bei 
anderen Compilern auf völlig andere Weise realisiert ...

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat jemand Erfahrung mit dem Hitop tool?
wie wird es dort gemacht?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
besser gesagt:
die Entwicklungumgebung benutzt einen GNU Compiler...
ich schau mal nach um welchen es sich dabei handelt.

Autor: Janosh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo her hast du denn diese user Manuell, das will ich auch.Kannst du mal 
ein link Posten.

Autor: Robert Teufel von NXP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Janosh,

kann nur ahnen auf welchen Post Deine Frage zielt aber falls ich richtig 
liege, dann liegt das Users Manual des LPC2119 hier:
http://www.standardics.nxp.com/support/documents/m...

Die beste Einstiegsseite fuer Info zu den verschiedenen LPC2000 ist 
hier:
http://www.standardics.nxp.com/products/lpc2000/all/

Das Buch von Hitex liegt hier:
http://www.hitex.co.uk/arm/lpc2000book/index.html

Gruss, Robert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.