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
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
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!
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
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?
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
... 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
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_' ???
das sollte doch ein array sein, oder nicht?
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 ...
hat jemand Erfahrung mit dem Hitop tool? wie wird es dort gemacht?
besser gesagt: die Entwicklungumgebung benutzt einen GNU Compiler... ich schau mal nach um welchen es sich dabei handelt.
wo her hast du denn diese user Manuell, das will ich auch.Kannst du mal ein link Posten.
@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/microcontrollers/pdf/user.manual.lpc2119.lpc2129.lpc2194.lpc2292.lpc2294.pdf 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.