mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variablen ins ROM speichern C18


Autor: M. P. (wizard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ROM == Read Only Memory !

was du willst gehört ins EEPROM.

Autor: M. P. (wizard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:

unsigned char   data_text[25];                    // data memory
rom unsigned char rom_text[] = "meintext";

strcpypgm2ram ((char*)&data_text, (const far rom char*) rom_text);

Gruss,
Dirk

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk W. (Gast)
Datum:

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

Gruss, Dirk

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Strings aus dem Flash ins Data Memory

aber nicht anderslang!

Autor: Dirk W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: M. P. (wizard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: M. P. (wizard)
Datum:

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

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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"...

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
;-))

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: M. P. (wizard)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: Dirk W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: M. P. (wizard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ all

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

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Viel Glück und Erfolg.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.