Forum: Mikrocontroller und Digitale Elektronik 78K0 Daten permanent im RAM Speichern


von Tim H. (howie)


Lesenswert?

Folgendes Problem:

Ich möchte Daten, die ich in einem Programmablauf aufgenommen habe,
nach einem Reset des Controllers (78K0, µPD78F0503) verwenden, dazu
habe ich mir einen Speicherbereich im RAM reserviert. Beim auslesen des
Speichers ist dieser aber leer, d.h. die Daten werden nicht gespeichert.
Folgendermaßen gehe ich vor:

im Linkerfile: -Z(CODE)VAR=0290-0293

in c: #pragma constseg = VAR
__root unsigned int unMess[2];

void main ()
{
.
.
unMess[0] = Messung1;
...
}
Was mach ich Falsch???

Danke.

von mr.chip (Gast)


Lesenswert?

Hallo

Ich kenne deinen Controller nicht, aber in aller Regel verlieren RAMs
ihren Speicherinhalt bei einem Reset.

Gruss

Michael

von Tim H. (howie)


Lesenswert?

Hi,

In der Tat das tun sie! Es handelt sich allerdings um ein ROM (mein
Fehler!)

Gruss

von sch_michael (Gast)


Lesenswert?

Hallo,

dieser Meinung bin ich auch, ich denke nicht das dir NEC garantiert,
dass nach einem Reset die Daten noch vorhanden sind. Ein RAM ist auch
nicht dafür gedacht Daten zu speichern. Dafür solltest du dir eher ein
EEProm in deiner Applikation zulegen.

Gruß Michael

von sch_michael (Gast)


Lesenswert?

Mist zu spät,

es ist nicht möglich mit dieser Zuweisung Daten in den ROM zu
schreiben, dafür ist er nicht ausgelegt.

Gruß Michael

von SiO2 (Gast)


Lesenswert?

Schon mal versucht, die Daten per Debugger nach nem Reset auszulesen?
Vielleicht ist ja irgendie deine Adressierung durcheinander gekommen
(was nicht sein sollte )

von Tim H. (howie)


Lesenswert?

@sch_michael
Wie kann ich dann Daten in den ROM schreiben (während der
Programmausführung) ??? Mit der oben beschriebenen Methode wird das
Option Byte und die ID eingestellt (funktioniert), wobei diese bei der
deklaration definiert werden.

@Si02
Ja, die Daten liegen nicht auf der gewünschten Adresse, sondern werden
wie "normale" Variablen im (schätzungsweise) RAM gespeichert.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der Inhalt von RAMs geht nicht mit einem Reset verloren, sondern nur bei
Stromausfall. Hier wird das RAM vermutlich vom C-Startupcode gelöscht,
ob und wie man das dem abgewöhnen kann, ist vom verwendeten Compiler
abhängig.

Ob und wie Daten vom Controller in das (Flash-)ROM des Controllers
geschrieben werden können, ist vom verwendeten Controller abhängig und
müsste im Datenblatt beschrieben sein, eventuell unter dem Stichwort
"bootloader".
Eventuell hat der Controller für diesen Zweck ja auch ein EEPROM, aber
auch hier ist dies dem Datenblatt zu entnehmen.

von Tim H. (howie)


Lesenswert?

Mit diesem Derivat können Daten nur über das Selfprogramming permanent
gespeichert werden, dazu muss der FLMD0 auf High gezogen werden, und
eine bestimmte Routine (vordefiniert von NEC) speichert die Daten
Blockweise.

Andere Möglichkeit:
Eine eeprom Emulation ebenfalls von NEC erhältlich tut das was der Name
schon sagt. Nachteil 2K Speicher werden benötigt

Danke für eure Hilfe.

Gruss Tim

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
Noch kein Account? Hier anmelden.