Forum: Mikrocontroller und Digitale Elektronik Variablen ins ROM speichern C18


von M. P. (wizard)


Lesenswert?

Hallo!!
Verwende den Compiler C18 von Microchip und einen PIC18F97J60.

Habe struct-Variablen die folgendermaßen deklariert werden:

rom APP_CONFIG ROMConfig;
APP_CONFIG AppConfig;

ROMConfig wird in das interne Rom vom Microcontroller geschrieben.

Ich möchte einfach nur AppConfig in ROMConfig speichern, damit die Daten 
auch nach einem RESET gespeichert sind. Habe es mit memcpy(...) bzw. 
memcpyram2pgm probiert, leider erfolglos.
 Kann mir jemand helfen?? DANKE

von winne (Gast)


Lesenswert?

ROM == Read Only Memory !

was du willst gehört ins EEPROM.

von M. P. (wizard)


Lesenswert?

Ich möchte es in das Flash speichern. (Program Memory)
Habe nochmal im Datasheet nachgesehen - > im Programmemory (Flash) ist 
lesen und schreiben möglich

von Dirk W. (Gast)


Lesenswert?

Hmm, das sollte mit memcpyram2pgm eigentlich gehen. Ich habe jedenfalls 
schon oft folgendes genutzt, um Strings aus dem Flash ins Data Memory zu 
kopieren:

1
unsigned char   data_text[25];                    // data memory
2
rom unsigned char rom_text[] = "meintext";
3
4
strcpypgm2ram ((char*)&data_text, (const far rom char*) rom_text);

Gruss,
Dirk

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dann hast Du das Datenblatt mit einer gewissen Freizügigkeit 
interpretiert. Zwar ist Flash-ROM in der Tat beschreibbar, aber dazu 
muss es vorher gelöscht werden, und das geht nicht mit einzelnen 
Speicherzellen, sondern nur mit recht großen Blöcken.
Du willst das EEPROM verwenden. Wirklich.

von winne (Gast)


Lesenswert?

aber nicht zur laufzeit

Das Flash ist dem Code vorbehalten Daten gehören dort nur rein wenn sie 
Konstanten sind.

Das Flash wird außerdem beim programmieren sequentiell pageweise 
beschrieben.

von Dirk W. (Gast)


Lesenswert?

@Rufus: Schade nur, dass der PIC18F97J60 kein Data EEPROM hat ;-)

Gruss, Dirk

von winne (Gast)


Lesenswert?

>Strings aus dem Flash ins Data Memory

aber nicht anderslang!

von Dirk W. (Gast)


Lesenswert?

@winne: Ok, überredet ;-) Das Flash kann man allerdings trotzdem zur 
Laufzeit beschreiben, aber nur pageweise (wie Rufus schon schrieb). 
Kapitel 6.5 des Datasheets sagt, wie es geht.

Gruss, Dirk

von M. P. (wizard)


Lesenswert?

*************
The Flash program memory is readable, writable and
erasable during normal operation over the entire VDD
range.
************
-->so stehts im datasheet. Wieso sollt ich nichts hineinspeichern können

von winne (Gast)


Lesenswert?

>*************
>The Flash program memory is readable, writable and
>erasable during normal operation over the entire VDD
>range.
>************


das FLash memory Ist lesbar, programmier und löschbar unter benutzung 
der normalen Operationen über den gesamten Betriebsspannungsbereich.


Das bedeutet das man von der unteren bis zur oberen Spannungsgrenze 
sicher programmieren kann. das und nur das steht dort.

von M. P. (wizard)


Lesenswert?

Ich habe mir aber gedacht, dass mir der Befehl memcpypgm2ram bzw. 
memcpyram2pgm die arbeit abnimmt???
Wie soll ich jetzt am besten vorgehen???

von winne (Gast)


Lesenswert?

<o.T.>
Oh Herr lass es Hirn Regnen, oder mal jemanden vor dem Proggen die 
verschiedenen Speichertypen richtig nutzen zu lernen.
</o.T.>


wenn es der chip bleiben soll muss externes EEprom (oder ne MMC/SD) 
drann

von winne (Gast)


Lesenswert?

>@winne: Ok, überredet ;-) Das Flash kann man allerdings trotzdem zur
>Laufzeit beschreiben, aber nur pageweise (wie Rufus schon schrieb).
>Kapitel 6.5 des Datasheets sagt, wie es geht.

Ja das ist wahrscheinlich, ist jedoch nicht als Variablenspeicher 
sondern für Bootloader gedacht, was einen Missbrauch allerdings nicht 
ausschließt. Doch sollte vor den dirty tricks das Beherrschen der Regeln 
stehen.

von Dirk W. (Gast)


Lesenswert?

Winne, das stimmt so definitiv nicht. Schaut mal hier:

http://forum.microchip.com/printable.aspx?m=55318

Und schaut Euch mal den Beitrag von "chsekhar" (Sep. 13, 2005 10:00:02 
PM) an. Der hat praktisch das, was im Kapitel 6 des Datasheets steht, in 
C-Funktionen gegossen. Geht doch ;-)

Gruss, Dirk

von Dirk W. (Gast)


Lesenswert?

Mist, immer diese Überschneidungen... Das mit dem "stimmt so nicht" 
bezog sich auf "wenn es der chip bleiben soll muss externes EEprom (oder 
ne MMC/SD) drann"...

von winne (Gast)


Lesenswert?

;-))

von winne (Gast)


Lesenswert?

@ dirk

Glaubst du wirklich, jemandem der obige Frage stellt, sollte man auf 
diesen Trip bringen.

Na klar sind mir Bootlaoderoptionen bekannt. Aber beachte auch die 
möglichen Blockaufteilungen. Der geschützte Flash ist zumeist nur wenige 
KB gross. Und nur dieser stände dann dem eigentlichen Code dann zur 
Verfügung, während der größere Teil des Programmspeichers auf einen 
Schlag gelöscht würde.

Ich wette, so hat unser Freund sich das nicht gedacht und erwürde sicher 
vom Regen in die Traufe kommen.

von M. P. (wizard)


Lesenswert?

Ich kenn mich jetzt gar nicht mehr aus: :-(
Bin leider noch Anfänger auf diesem Gebiet.

Ich muss den PIC18F97J60 verwenden. Kann ich jetzt Daten im Flash 
speichern(wenn ja, wie) odre brauche ich ein externen EEPROM???

von Dirk W. (Gast)


Lesenswert?

@winne: Die Blockgröße ist ja nur 64 Byte, und sein PIC hat 128kB Flash. 
Der Verlust sollte sich also in Grenzen halten. Was den Trip angeht, da 
gebe ich Dir recht ;-)

@Michael: Ja, Du kannst den internen Flash verwenden. Lies Dir doch 
einfach den Abschnitt 6 im Datasheet mal durch und danach den Link, den 
ich oben gepostet habe. Ein bisschen Eigeninitiative musst Du hier schon 
zeigen...

Gruss, Dirk

von winne (Gast)


Lesenswert?

@ Michael

>Kann ich jetzt Daten im Flash speichern?
Ja nur mit einem wirklich schnutzigen Trick.
wenn du das hinbekommst lernt dein Prof von dir,
oder er steinigt dich dafür.
>wenn ja, wie
lies alles was du über Bootloaderprogrammierung finden kanst.


ansonsten Nein.
Wenn du es richtig schulmäßig machen willst nimm nen I²C-EEPROM
wenn du auch größere Datenmengen speichern magst (Loggerfunktion oder 
PC-Formate)empfiehlt sich MM/SD

von M. P. (wizard)


Lesenswert?

@ all

Danke für die vielen Antworten.
Brauche das für meine Diplomarbeit (HTL).
Werde es gemeinsam mit meinen Betreuern versuchen.

von winne (Gast)


Lesenswert?

Viel Glück und Erfolg.

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.