EEprom Flash Ram

Gast #155741
Lesenswert?

Hallo zusammen also ichhabe ein Problem mit der Speicherwahl. Was
empfiehlt ihr mir für einen Speicher zu verwenden?

Ich benutze einen PIC 18F452 mit folgenden Speichern:

Flash: 32 Kbytes
RAM: 1536 bytes
Data EEPROM: 256 Bytes

Bei meinem Projekt geht es um eine Türsteuerung mit Zugangscodes

Ich hab folgende 2 Teile die ich in einen Speicher unterbringen muss:

1) Über einen Mastercode(der fest programmiert ist) können neue Codes
hinzugefügt und gelöscht werden. Es wird eine Liste z.B. mit 10
Zugangscodes geben die bei jeder eingabe eines codes überprüft werden
müssen. Die Codes dürfen natürlich nicht flüchtig sein. Welchen
Speicher soll ich da verwenden?

2) Die Türsteuerung beinhaltet einen Real Clock Timer wenn man sich mit
einem Code anmeldet liest der PIC das Datum aus dem RCT verknüpft dies
mit dem Benutzername(Zugangscode) und legt diesen String, oder was auch
immer es dann sein wird in eine Liste ab. Diese Liste beinhaltet immer
die letzten 50 Türöffnungen. Wo soll ich diese Liste anlegen?
Flüchtig/nicht Flüchtig? wie soll ich das mit der Liste lösen? den
speicher immer eins nachschieben und die bei 50 Fallen raus?

Gruss Michael
Gast #155742
Lesenswert?

Den Mastercode solltest Du im EEPROM ablegen.

Die Protokollierung der Türöffnungsvorgänge solltest Du im RAM ablegen;
Du musst, wenn diese Daten wichtig sind, dafür sorgen, daß a) der
Prozessor immer mit Spannung versorgt wird, oder b) bei Erkennen eines
Stromausfalls die Liste ins Flash-ROM kopieren. Ins EEPROM passt sie
aufgrund ihrer Größe nicht (50 * (Benutzerkennung + Zeitinformation)).

Die Liste permanent im Flash zu halten und zu aktualisieren ist der
Lebensdauer des Flash abträglich, das wird nur einige tausend
Schreibzyklen überleben (steht im Datenblatt).

Alternative: Externes nichtflüchtiges RAM anschließen;
batteriegepuffert (MK48T08) oder FERAM/MRAM.
Gast #155745
Lesenswert?

Im Forum / Google nach Ringpuffer, Ringbuffer oder FIFO suchen.

Grob gesagt machst du dir ein Array und merkst dir in zwei Variablen
den  Index des neuesten und des ältesten Eintrags. Beim
Einfügen/Entfernen arbeitest du entsprechend mit diesen Indizes,
anstatt beim Einfügen die ganze Zeit sämtliche Einträge nach hinten zu
kopieren.
Gast #155746
Lesenswert?

Einen Ringpuffer oder dergleichen sollte man bloß tunlichst nicht im
Flash-ROM unterbringen. ->Lebensdauer.

Und ins EEPROM passt er hier nicht, es sei denn, es wäre möglich, einen
Eintrag (Personenkennung & Zeit) in 5 Bytes unterzubringen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren