-
-
Erfahrener Benutzer
Roboter-Spezialist
Speichern in den Flash-Speicher
Hallo,
gibt es eine Möglichkeit, während der Laufzeit in den Flash-Speicher zu speichern? Ich möchte eine Tabelle (ca. 12kb) vom PC über ein FT232RL Device im Flash ablegen. Diese Tabelle sollte möglichst nicht statisch sein.
Controller ist ein Mega644.
Vielen Dank... Ruppi
-
Erfahrener Benutzer
Roboter-Spezialist
Ja, ist möglich, schau dir mal STM (Store to Program Memmory an). Hinten im Datenblatt sind alle Befehle beschrieben.
Jedoch ist das mit Vorsicht zu genießen. Jedes Byte im Flash hat nur 10'000 Schreibzyklen, d.h. du solltest nur darauf speichern wenn es wirklich notwendig ist sonst ist dein Controller bald Müll. Bei Assembler musst du auch aufpassen dass du nicht in die Daten springst, da sonst dein Controller die Daten als Befehle interpretiert.
Eine Alternative wäre dass du einen AVR mit externem Ram nimmst (geht hoch bis zu 64kByte) und dort die Tabelle ablegst. Sollten die Daten auch "Strom aus" überleben musst du sie puffern, mit einem großen Kondensator und als "Notpower" eine Lithium Knopfzelle.
Eine Alternative dazu wären EEPROMs (gehen auch hoch bis 64 kByte) Ansteuerung afaik per I2C, die überleben 100000 Schreibzyklen: Immerhin Faktor 10! Schau dir mal den ST 24C256 BN6 bei Reichelt an; den gibts auch in kleiner...
-
Erfahrener Benutzer
Roboter-Spezialist
Hallo,
danke erstmal für Deine Antwort. Du hast Dich sicher verschrieben und meintest den Befehl "SPM". Auf diese Art und Weise habe ich es versucht, es hat allerdings nicht funktioniert. Kann es sein, dass man SPM ausschließlich in Verbindung mit einem Bootloader nutzen kann? Das Problem mit den 10000 Schreibzyklen ist nicht weiter tragisch, denn die Werte werden nicht sehr oft abgelegt. In dieser Tabelle möchte ich Rampen für einen Schrittmotor-Controller ablegen. Wie gesagt - schön wäre, wenn man dieser verändern könnte.
Ein EEPROM wäre natürlich eine Alternative, den 24C256 kenne ich, habe ich schon einmal verbaut.
Trotzdem nochmal zum Verständnis: wie genau funktioniert das mit dem Befehl SPM?
Vielen Dank, Ruppi
-
Erfahrener Benutzer
Robotik Einstein
Hallo,
man kann schon auch ausserhalb eines Bootloaders ins Flash schreiben, man muss nur beachten, das man nur Seitenweise beschreiben kann, und diese sollte man vorher löschen. Beim 644er ist eine Seite 256 Byte groß, die müssen erst in den Puffer übertragen werden danach wird dieser geschrieben.
Bei den Befehlen ist das Timing wichtig, sonst mach der AVR nix.
Während dem beschreiben sollte man sonst nix anders laufen haben (Timing), denn der AVR wird, während geschrieben wird, angehalten (weil ausserhalb des Bootloaders).
-
Erfahrener Benutzer
Roboter-Spezialist
hi,
ich habe mir mal das Beispiel aus dem Datenblatt des 644er angesehen. Vielleicht kann man auf diese Art und Weise was zusammenbasteln.
Vielen Dank für die Hilfe!
Ruppi
-
Erfahrener Benutzer
Roboter Genie
Übrigens hat der AtMega einen integrierten EEPROM. Zwar nicht allzugroß, aber einfacher und öfter zu beschreiben ist der allemal.
-
Erfahrener Benutzer
Roboter-Spezialist
das stimmt, aber wie anfangs erwähnt, benötige ich ca. 12kb für die Rampen-Tabellen, integriertes EEPROM scheidet daher aus.
Die Möglichkeit des seriellen, externen EEPROMs scheint mir derzeit die beste Möglichkeit zu sein.
Trotzdem vielen Dank.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen