Forum: Mikrocontroller und Digitale Elektronik PIC 32 Program Memory benützen 512K


von Raph (Gast)


Lesenswert?

Hallo Kurze Frage

Ich will ein int array mit im Speicher des PIC 32 ablegen.. meiner hat 
512K Byte....
also will in den Array Sensor daten abspeichern also in etwa int[32000] 
={0}
(sollte also vom Platz passen ? da mein Programm nicht so groß ist)

den größten Array den ich z.Z anlegen kann ist int [8000] ={0};

Wie benütze ich den Speicher....

Gruß

RL

von Frank K. (fchk)


Lesenswert?

const wäre hilfreich

von Raph (Gast)


Lesenswert?

hey... const eher für Konstanten die Variablen werden im Laufe des 
Programms verändert....

von ti Hz (Gast)


Lesenswert?

Wenn du mal das Datenblatt liest, wird dir auffallen, dass der 
Programmspeicher 512kb ist. Dein Array kommt aber in den Ram der mit 
Sicherheit weniger Speicherplatz hat...

von Max H. (hartl192)


Lesenswert?

Wieso sollen die Daten überhaupt in den Flash? Ich weiß zwar nicht was 
du vor hast, eventuell könnten aber die max. garantierten E/W Cyles des 
Flashs ein Problem werden. Ich weiß nicht welchen PIC du hast, beim 
PIC32MX3XX/4XX z.B. garantiert Microchip 1000 E/W Cycles. Und zudem ist 
der Programmspeicher ein gutes Stück langsamer als das RAM:
Word Write Cycle Time min. 20µs

von Raph (Gast)


Lesenswert?

danke okay .... 2 sehr gute Antowrten vielen Dank !

ja Program Speicher ist um einiges kleiner... 32 K laut Datenblatt

gibt es ein speziellen Befehl den Array auf den Programm Speicher zu 
sichern ?
gutes Tutorial ... ?

Dieser düfte dann nach dem ein/auschalten wieder da sein.... ist ja 
Programm Speicher...

Schnelligkeit is nicht so wichtig... maximale Schreibzyklen 1000 
Stück... hab ich gelesen... dürfte für 3-4 Jahre benützen okay sein.... 
vorrerst okay... in the nächsten iteration muss ich dann einen Speicher 
dazu hängen....


Gruß

RL

von Arc N. (arc)


Lesenswert?

Raph schrieb:
> danke okay .... 2 sehr gute Antowrten vielen Dank !
>
> ja Program Speicher ist um einiges kleiner... 32 K laut Datenblatt
>
> gibt es ein speziellen Befehl den Array auf den Programm Speicher zu
> sichern ?
> gutes Tutorial ... ?

Die Routinen dazu sind im Harmony Framework bzw. in der PIC32 Peripheral 
Library
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en554265

Ohne Libraries ist es in den normalen Docs beschrieben
http://ww1.microchip.com/downloads/en/DeviceDoc/61121D.pdf

von Frank K. (fchk)


Lesenswert?

Du solltest eher externes serielles Flash nehmen. Das hat viel mehr 
Lösch/Schreibzyklen.

zB (es gibt auch noch größere)
http://www.microchip.com/wwwproducts/Devices.aspx?product=SST25VF010A

Denke aber dran, dass Du nur ganze 4k-Blöcke löschen kannst.
Wenn Du es feiner brauchst, nimm einfach ein serielles NVRAM mit 
Batterie. Das kannst Du byteweise beschreiben, weil es eben RAM ist.

http://www.microchip.com/wwwproducts/Devices.aspx?product=23LCV1024

Eine normale CR2032 Knopfzelle an VBat sollte für mindestens 10 Jahre 
gut sein.
Mal nachrechnen: Kapazität einer CR2032 ist 230mAh oder 230000µAh. VBat 
Current laut Datenblatt 1 µA -> 230000h oder 26 Jahre. Sollte reichen.

fchk

von Arc N. (arc)


Lesenswert?

Frank K. schrieb:
> Eine normale CR2032 Knopfzelle an VBat sollte für mindestens 10 Jahre
> gut sein.
> Mal nachrechnen: Kapazität einer CR2032 ist 230mAh oder 230000µAh. VBat
> Current laut Datenblatt 1 µA -> 230000h oder 26 Jahre. Sollte reichen.
>
> fchk

Wenn Batterie + NVRAM in Frage käme, würde ich stattdessen FRAM 
einsetzen. Ist zwar u.U. etwas teurer als das NVRAM spart aber Batterie, 
Batteriehalter etc. pp.
http://www.cypress.com/?id=4984

von Raph (Gast)


Lesenswert?

hey danke, ich glabe der Speicher des PIC 32 ist so weit okay.. auch mit 
geringen Zyklen, das Gerät soll einaml am Tag einen String Speichern .. 
von dem Herr Okay

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.