Ich arbeite im Moment an einem Programm für den LPC2119. Um auf einen EEprom Baustein verzichten zu können würde ich gerne den internen Flash ROM (immerhin 128k) als Datenspeicher für bestimmte Parameter nutzen, die während der Betriebszeit verändert wurden. Da bei gewöhnlicher Variablendeklaration nach Trennung des Microcontrollers vom Strom alle Daten verloren gehen, ist anzunehmen, dass sie im Ram gespeichert werden. Wie bekomme ich Zugriff auf den Flash ROM? Gibt es irgendwo Beispieldateien? Gruß Johannes
Aber bedenke, dass der Flash-Speicher kein adäquater Ersatz für ein EEProm ist, wie man es von anderen µCs kennt. Du kannst den Flash nur sektorweise löschen (4k/32k) und dann auch nur in Blöcken von mindestens 256 Byte wieder beschreiben. Um also mal ein paar Parameter abzulegen/ zu ändern taugt das Verfahren also leidern nicht. Sonst müßtest du ja immer den ganzen Sektor, also 4k oder 32k ins RAM laden, deine kleine Parameteränderung machen und den ganzen Block dann wieder zurück- schreiben, um die anderen Parameter nicht kaputt zu machen. Stehe gerade vor dem selben Problem und werde wohl ein kleines I2C EEprom außen dranhängen.
Im Prinzip hast du Recht, aber ich denke ich werde das Problem anders angehen, da ich mir das EEprom mangels Platz wirklich gerne ersparen würde. Ich werde ein flüchtiges Parameter-Array anlegen in das alle Parameter gespeichert werden. Und dieses Array schreibe ich dann jedesmal komplett in den Flash Rom, quasi wie ein Parameter Buffer. Das hat zwar den Nachteil das ich jedes Mal alle Parameter schreibe. Aber das interessiert mich eigentlich gar nicht, zumal ich dann immer nur die 4k beschreibe. Wieviel Schreibzyklen hält das Flash Rom denn überhaupt aus? Man könnte die Daten dann auch nur jedesmal vor dem Ausschalten speichern, nur leider weiss ich nicht, wann der Strom das nächste Mal weg ist.
Es gibt eine Application Note wie das mit dem Flash als EEPROM Ersatz funktionieren kann. Eines ist dabei ganz wichtig, waehrend der Programmierung des Flashes kann kein Code aus dem Flash abgearbeitet werden. Also verzoegert sich eine Interrupt Antwortzeit in den millisekunden-Bereich. Das ist bei fast allen Microcontrollern der Fall. Deshalb halte ich auch die Verfahren, "die man von anderen Microcontrollern her kennt" fuer ziemlich kritisch im Bezug auf Echtzeit. Speichern von Variablen und Interrupts passen nicht so gut zusammen :-( auch wenn man einen Byte adressierbaren Speicher hat, wie z.B. die LPC900 Familie oder andere populaere Micros. Die ApNote fuer LPC2000 ist hier: http://tech.groups.yahoo.com/group/lpc2000/files/ dann suche nach: " EE_demo_1_1.zip " Wenn es das Budget zulaesst, ist ein externes serielles EEPROM trotzdem eine gute Idee! Kein Einfluss auf Echtzeitverhalten, simple Implemtierung = schnellere Entwicklungszeit. Programmierzyklen on-chip Flash LPC2000: 100000 Robert
Ich weiss nicht ob diese Frage berechtigt ist, aber was mich interessiert ist, dass viele neuere Mikrokontroller der 3V Serien keine eingebauten EEPROM mehr aufweisen. Hat das erst mit der 3.3V Technik angefangen? Ich habe fast den Eindruck dass alle diese neuen Niedervolttypen kein EEPROM intern mehr erlauben. Zum Beispiel, alle 3V Typen von Microchip die mir bekannt sind und ein J in der Bauteilenummer haben sind EEPROMlos. LPC2000 ist ganz aehnlich. Habe mal schnell bei ATMEL SAM7 Typen nachgeschaut und es ist da genauso. Ich habe vor da etwas nachzuforschen, da mich das interessiert und zur Zeit nur Vermutungen habe. Andrerseits, ist es ja nicht so schlimm zumindestens fuer Hobbyprojekte ein externes EEPROM mit Zweidrahtanschluss oder SPI ranzuhaengen, aber trotzdem. Wie seht Ihr das? Gruss, Gerhard
Die Tatsache mit den Interrupts hat mich schon Schweiß und Nerven gekostet. Die Interrupts haben beim Erase Vorgang nämlich immer dazwischen gefunkt. Einen EEprom zu benutzen macht sicher in vielen Fällen Sinn. Aber was spricht dagegen: Ich habe nicht viele Parameter zu sichern (und diese auch nicht oft). Also schreibe ich sie in den Flashspeicher. Und solange der Speichervorgang läuft, schalte ich die Interrupts einfach ab. Natürlich geht das nicht immer. Hängt eben vom Programm ab. Aber wenn es nichts ausmacht, dann ist das doch die einfachste Lösung? Welche Nachteile hat diese Methode?
Guten Morgen zusammen, könnte evtl jemand das Codebeispiel EE_demo_1_1.zip hier hochladen? Ich habe da bei Yahoo keinen Zugang. Ich müßte meinen Flash ebenfalls als einen EE PROM nutzen und benötige noch eine gewisse Starthilfe. Die IAP Funktionen laufen einwandtfrei. Gruß
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.