Hallo Ich habe im PIC 18F2620 ca. 200 Bytes im EPROM gespeichert. Nun muß ich öfter mit diesen Daten rechnen. Dazu sollen sie in den Arbeitsspeicher oder RAM übertragen werden. WOHON bringe ich die am günstigsten? In den DATA RAM Adresse 0x20 bis 0xirgendwas? Oder besser in ein Feld, das ich in C18 reserviere (BYTES[200])? Oder gibt es noch eine bessere Möglichkeit? Gruß Thomas
Üblicherweise hält man in C seine Daten in Arrays, wenn es gleichartige Daten sind (z.B. Strings, aufeinanderfolgene Messwerte oder ähnliches), oder in Strukturen, wenn es verschiedenartige, aber logisch zusammenhängende Daten sind. structs kann man auch schachteln. Einfach irgendwo wild in den Speicher zu schreiben, ist ganz übel, weil der Compiler nicht weiß, dass dieser Bereich schon belegt ist, und weil der nächste, der Deinen Code liest, nicht weiß, was in Speicherstelle 345 oder in eeprom[187] steht und welche Bedeutung das hat. Nutze also die Sprachelemente, die C Dir bietet ([], struct, union), damit Dein Code les- und verstehbar bleibt. Am Besten hast Du zum Schluss eine struct, die den eeprom-Inhalt widerspiegelt und die Du dann ins EEPRom schreiben oder daraus laden kannst. fchk
Hi Also Du würdest die Lösung: unsigned char bytes[200]; und in einer Schleife die 200 Werte, die über den Index angesprochen werden sollen, beim Start aus dem EEPROM da reinkopieren. Sollte mir ja egal sein, wo der C18 Compiler das dann anlegt. Gruß Thomas
Werden die Daten nach dem Einschalten öfters verändert oder handelt es sich quasi um "Konfigurationsparameter"? Du könntest die Daten einfach gleich nach dem Einschalten von EEPROM in den RAM schreiben und nur wenn sie verändert werden vom RAM in den EEPROM sichern. Falls die Daten öfters verändert werden: Die Daten nur im RAM aktuell halten. Der 18F2620 hat Hi/Lo-Voltage Detection (HLVD). Damit kannst du einen Interrupt auslösen, wenn die Betriebsspannung unter einen bestimmten Wert fällt, sprich: Wenn das Gerät ausgeschaltet wird. In diesem Interrupt schreibst du die zu sichernden Daten vom RAM in den EEPROM. Musst nur dafür sorgen, dass die Kapazitäten in deiner Schaltung den Controller noch so lange versorgen können, bis dieser Vorgang abgeschossen ist. Das kann man aber berechnen (Entladekurve Kondensator).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.