Forum: Mikrocontroller und Digitale Elektronik PIC 18F Daten im RAM wohin speichern?


von N. M. (chipotle)


Lesenswert?

Hallo,

kurze Frage. Ich will gerade den FLASH beschreiben udn weiß gerade nicht 
sorecht wo ich denn die Daten hinretten soll.
Sprich woher weiß ich das in dem RAM teil wo ich den alten FLAHS block 
retten will will nichts steht das ich dann überschreiben würde?

MfG

von AVR-Assembler-Code (Gast)


Lesenswert?

Wieso willst Du das alte Zeug überhaupt "retten"?

>Sprich woher weiß ich das in dem RAM teil wo ich den alten FLAHS block

Das entnimmst Du dem Map-File, dem Listing oder was auch immer Du von 
der alten Software hast. Dabei auch den Stack oder ggfs. dynamisch 
allokierte
Daten (bei einem P*C wahrscheinlich weniger relevant) nicht vergessen.

Wieso machst Du nicht einfach einen Dump des Flashinhalts auf Deinen
PC?

von Kein Name (Gast)


Lesenswert?

Speicher im RAM? Warum kein normales Array?

byte buf[64];
byte* flash = 0;
ReadFlash(flash, 64, buf);

von N. M. (chipotle)


Lesenswert?

eyeyey...muss ich doch weiter ausholen^^

ich will den FLASH im laufenden betrieb beschrieben, da der PIC den ich 
für meine Anwendung später brauch kein EEPROM hat.

Und um den FLASH zu beschreiben wird vorher der alte block im RAM 
gerettet, modifiziert und wieder zurückgeschrieben.
Daher wollte ich wissen wo ich im RAM die 64byte hinschreiben kann ohne 
was zu überschreiben

MfG

von holger (Gast)


Lesenswert?

>Daher wollte ich wissen wo ich im RAM die 64byte hinschreiben kann ohne
>was zu überschreiben

Woher soll das jemand wissen? Du sagst ja nicht mal in welcher
Sprache du programmierst.

von Sascha F. (sascha_focus) Benutzerseite


Lesenswert?

Moin,

da ein Beispiel:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en538000

Damit kann man Daten im Flash speicher, laden etc. Also das was du 
anscheinend nutzen möchtest.....

von N. M. (chipotle)


Lesenswert?

Da ich ein USB-Device baun will programmier ich in C und Teile auch in 
Assembler.

von Karl H. (kbuchegg)


Lesenswert?

N. M. schrieb:
> Da ich ein USB-Device baun will programmier ich in C


Ná ja.
Dann leg halt ein Array mit 64 Bytes an und lass den Compiler/Linker 
sich darum kümmern, wo sie das im Speicher anordnen. Das ist ja 
schliesslich ihr Job, sich darum zu kümmern.

von holger (Gast)


Lesenswert?

>Da ich ein USB-Device baun will programmier ich in C und Teile auch in
>Assembler.

Das bringt uns jetzt unglaublich weiter.
Wo ist das Problem ein Array im RAM zum zwischenspeichern
für deine Flash Page anzulegen? Im C Code oder im Assemblercode?
Und bei der Qualität deiner Frage solltest du C und Assembler
besser nicht mischen.

von N. M. (chipotle)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Dann leg halt ein Array mit 64 Bytes an und lass den Compiler/Linker
> sich darum kümmern, wo sie das im Speicher anordnen. Das ist ja
> schliesslich ihr Job, sich darum zu kümmern.

hätt ich auch selbst drauf kommen können -.-
Jetzt brauch ich aber wieder die Adresse für mein FSR0H/L.
An das untere Byte kommt man leicht. Wie ich aber an das Obere komm weiß 
ich jetzt ehrlichgesagt nicht so recht (in Assembler).

Ich könnte nach dem compilieren natürlich schaun wie die Adresse ist, 
und dann angeben aber das würde ich nur ungern machen.

@ holger
Komisch einer hats ja hinbekommen mir den richtigen Denkanstoß zu geben.

Und nein ich weiß leider nicht wie ich mit Assembler ein 64 byte langes 
Array im RAM anlegen kann. Würde ich das wissen hätte ich hier mit 
Sicherheit nicht gefragt.

Aber Trolle gibts halt überall...

von Karl H. (kbuchegg)


Lesenswert?

N. M. schrieb:
> Karl Heinz Buchegger schrieb:
>> Dann leg halt ein Array mit 64 Bytes an und lass den Compiler/Linker
>> sich darum kümmern, wo sie das im Speicher anordnen. Das ist ja
>> schliesslich ihr Job, sich darum zu kümmern.
>
> hätt ich auch selbst drauf kommen können -.-
> Jetzt brauch ich aber wieder die Adresse für mein FSR0H/L.
> An das untere Byte kommt man leicht. Wie ich aber an das Obere komm weiß
> ich jetzt ehrlichgesagt nicht so recht (in Assembler).
>
> Ich könnte nach dem compilieren natürlich schaun wie die Adresse ist,
> und dann angeben aber das würde ich nur ungern machen.

Schon mal was vom 'Adress Of' Operator (in C: &) gehört?

> Und nein ich weiß leider nicht wie ich mit Assembler ein 64 byte langes
> Array im RAM anlegen kann. Würde ich das wissen hätte ich hier mit
> sicherheit nicht gefragt.

Ich frage mich, warum du überhaupt Assembler programmierst, wenn du die 
einfachsten Sachen nicht kannst.
Jeder Assembler hat dazu Direktiven, um Speicher im SRAM zu reservieren.


Ist das wieder so eine Sache: Ich kanns in C nicht, also vermurkse ich 
es wenigstens in Assembler?
Na dann: Prost.

von N. M. (chipotle)


Lesenswert?

Für was gibts denn bitte Foren, wenn man nicht nach Hilfe fragen darf, 
weil man dann sofort als Depp abgestempelt wird der von nix ne Ahnung 
hat?

Warum ich bei meinem Projekt Assembler Programmiere? Weil ich es "muss".
Ich "muss" den FLASH meines PICs beschreiben und das Datenblatt macht 
das eben im Assembler.

Natürlich kann ich mit
test EQU 0x20
abc RES 4
Speicher reservieren.

Nur kenn ich mich leider nicht so gut aus und hab beim debuggen eben 
festgestellt, das ich die Variable mit
ORG 0xXX
Temp RES 64
anlege er mir die Variablen die z.B. in C angegeben sind überschreiben 
kann.
Aber wie ich oben schon geschrieben hab bin ich ja eh nen Depp. von 
daher.

Keine Angst. Ich werd ab jetzt alle Fragen für mich behalten.
Na dann: Prost!

von Karl H. (kbuchegg)


Lesenswert?

N. M. schrieb:
> Für was gibts denn bitte Foren, wenn man nicht nach Hilfe fragen darf,
> weil man dann sofort als Depp abgestempelt wird der von nix ne Ahnung
> hat?

Auf jeden Fall nicht dafür, dass die einem die Grundlagen beibringen.

von Edson (Gast)


Lesenswert?

> Für was gibts denn bitte Foren, wenn man nicht nach Hilfe fragen darf,
> weil man dann sofort als Depp abgestempelt wird der von nix ne Ahnung
> hat?

Sagen wir es so: Auch die Anonymität eines Forums wie diesem hier kann 
diesen Umstand manchmal nicht verschleiern.

> Warum ich bei meinem Projekt Assembler Programmiere? Weil ich es "muss".
> Ich "muss" den FLASH meines PICs beschreiben und das Datenblatt macht
> das eben im Assembler.

Genau, DU musst das. Wir nicht, also bleib mal locker sonst stehst du am 
Ende mit leeren Händen da.

> Aber wie ich oben schon geschrieben hab bin ich ja eh nen Depp. von
> daher.
> Keine Angst. Ich werd ab jetzt alle Fragen für mich behalten.
> Na dann: Prost!

Durch das Geflenne wirst du den bisherigen Eindruck nicht korrigieren 
können. Gibst du immer so schnell auf? Na dann: Prost!

von heinzhorst (Gast)


Lesenswert?

Guckst du hier:

Beitrag "PIC24, C30: Daten in Flash speichern"

Geht auch bei PIC18.

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.