78K0 Daten permanent im RAM Speichern

OP #404842
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.
Gast #404845
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
OP #404848
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.
Persönliche Seite #404849
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.
OP #404850
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.