PIC: Variablen im Flash-Speicher ablegen

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 9 2024  06:22:02      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
PIC: Variablen im Flash-Speicher ablegen
Suche nach: pic (2054)

    







BID = 389095

Peo

Gesprächig



Beiträge: 181
Wohnort: Baden-W.
 

  


Hallo

Ich weiß, dass es geht, aber nicht wie:

Wie kann ich eine Variable in einem PIC speichern, so dass ich Sie wieder auslesen kann, nachdem der Chip aus- und wieder eingeschaltet wurde?

mfg

Peo

BID = 389103

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  

Das geht nur, wenn der Chip mit EEPROM ausgestattet ist, was nicht bei allen der Fall ist.

Hol dir bei Microchip das vollständige (es gibt auch Kurzversionen) Datenblatt zu deinem Chip und schau, was da über das "Data EEPROM Memory" steht.
Damit der Inhalt nicht zufällig überschrieben wird, sind spezielle Befehlssequenzen erforderlich, aber das ist dort alles erklärt.



_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 389209

Ltof

Inventar



Beiträge: 9322
Wohnort: Hommingberg

Ja, dafür nimmt man üblicherweise den EEPROM-Speicher.

Einige PICs können zusätzlich auch in ihrem Flash-Speicher herumwerkeln.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 389237

stepp64

Gesprächig


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 162

Hallo,

Programmierbeispiele findest du auch bei www.sprut.de. Sowohl für das Schreiben und Lesen im EEPROM als auch im Flash-speicher. Letzteres geht allerdings nicht mit allen PICs. Ist aber bei sprut alles erklärt.

Gruß Sven

BID = 389546

Peo

Gesprächig



Beiträge: 181
Wohnort: Baden-W.

Danke für die Tipps,

da hätte ich aber auch selber drauf kommen können. Nunja, so ist das nunmal, mit dem Wald vor lauter Bäumen ...

Eine Frage hätte ich noch, muss ich diese Befehlszeilen für jeden EINZELNEN Schreibbefehl verwenden oder kann ich das einmal iniziieren und dann mehrere Variablen hinter einander auf verschiedene Speicherplätze speichern?


movlw 55h ;Unlock write
movwf EECON2 ;
movlw AAh ;
movwf EECON2 ;

mfg

Peo

BID = 389558

stepp64

Gesprächig


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 162

Hallo,

bin mir nicht zu 100% sicher, aber ich denke, dass du diesen Ablauf bei jedem zu schreibenden Byte einhalten musst. Ich benutze dazu ein Unterprogramm und rufe es dann mit call auf (siehe Codebeispiel).



Code :


;EEPROM schreiben +++++++++++
;Übergabeparameter: in w das zu schreibende Byte übergeben
; in flash_l die Adresse auf die geschrieben werden soll
;Rückgabewert: keiner
EE_Write
clrf STATUS
bcf PIR2,EEIF ;Der EEPROM meldet sich mit EEIF=1 wenn er fertig ist

BSF STATUS, RP1
BCF STATUS, RP0 ;EEADR und EEDATA liegen in der Bank 2

MOVWF EEDATA ;das was in w steht wollen wir schreiben
MOVFW flash_l ;die zu beschreibende Zelle
MOVWF EEADR ;kommt nach EEADR

BSF STATUS, RP0 ;EECON1 liegt in der Bank 3
BCF EECON1, EEPGD ;wir wollen Datenspeicher beschreiben
BSF EECON1, WREN ;nun ist Schreiben erlaubt
BCF INTCON, GIE ;verbieten aller Interrupts

; Die folgenden 5 Zeilen müssen genau so im Code stehen!!!
MOVLW 0x55
MOVWF EECON2 ;schreibe 55h nach EECON2
MOVLW 0xAA
MOVWF EECON2 ;schreibe AAh nach EECON2
BSF EECON1, WR ;starte den Schreibzyklus

clrf STATUS ;Bank 0

EE_Write_warte
btfss PIR2,EEIF
goto EE_Write_warte ;auf das Ende des Schreibprozesses warten

BSF INTCON, GIE ;Interrupts wieder erlauben
return



Du arbeitest halt unter Assembler, da muss man wirklich ALLES dem Prozessor ganz genau sagen.

Ciao Sven

BID = 389583

Peo

Gesprächig



Beiträge: 181
Wohnort: Baden-W.

Danke für den Tipp, die Idee kam mir auch beim Programmieren vorhin.

ich habe erstmal das Lesen und Schreiben geübt, das funktioniert. Fall ich im Code wieder Schnitzer drin habe, wäre ich für Anregungen dankbar.
Prorgamm: Beim Drücken des Tasters an RA3 wird die Variable "Speicher" gelesen, um eins erhöht und in den EEPROM zurück geschrieben. Danach wird sie in PORTC angezeigt.

Mein MPLAB wirft übrigens bei der Zeile

movlw AAh

einen Fehler auf. Wenn ich

movlw .170

schreibe, klappt aber alles Einwand frei. Woran kann das liegen?

mfg

Peo




[ Diese Nachricht wurde geändert von: Peo am 29 Nov 2006 22:13 ]

BID = 389598

stepp64

Gesprächig


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 162

Das hatte ich auch am Anfang. Deshalb habe ich mir bei Hexzahlen die Schreibweise 0xAA angewöhnt. Das klappt bei mir.

Gruß Sven


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 16 Beiträge im Durchschnitt pro Tag       heute wurden bisher 3 Beiträge verfasst
© x sparkkelsputz        Besucher : 182086397   Heute : 876    Gestern : 6155    Online : 395        28.9.2024    6:22
1 Besucher in den letzten 60 Sekunden        alle 60.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0626740455627