PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] EEPROM LESEN SCHREIBEN ??????????



Michael 33
12.07.2005, 12:58
Hallo PIC Gemeinde,

habe folgendes Problem: Lese eine Speicherzelle aus dem EEPROM aus, addiere eine Zahl dazu und schreibe diese wieder an die gleiche Speicherzelle.
Bei diesem Versuch erscheint in der Speicherzelle ein total anderer Wert.

Wiederhole ich den gleichen Versuch, schreibe den Wert nach der Addition an eine andere Speicherzelle ist da Ergebnis völlig korrekt.

Da ich mit PIC gerade angefangen habe könnt Ihr mir helfen ???

Hier der Quellcode:

;* Includedatei einbinden für 16F876

list p=16f876
#include <P16f876.INC>
#define neu Flags,0


__CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC & _LVP_OFF

;************************************************* *****************

; Init allgemein


Betriebsstundencopy EQU 0x77

Betriebs1 EQU 0x47
Betriebsstunden EQU 0x78


org H'2100'

de B'00000000'
de B'00000000'
de B'00000000'
de B'00000000'
de B'00000000'
de B'00000010'
de B'00000000'
de B'00000000'

org 0


main


movlw d'2'
movwf Betriebsstunden

movlw d'0'
movwf Betriebs1


;Betriebsstunden_LESEN

bsf STATUS,RP1
bcf STATUS,RP0
movlw 0x05
movwf EEADR

bsf STATUS,RP0
bcf EECON1,EEPGD
bsf EECON1,RD

bcf STATUS,RP0
movfw EEDATA

bcf STATUS,RP0
bcf STATUS,RP1
movwf Betriebs1


;Werte addieren

movfw Betriebsstunden
addwf Betriebs1,1


; Werte schreiben:

bcf STATUS,RP0
bcf STATUS,RP1

movfw Betriebs1
movwf Betriebsstundencopy

bsf STATUS,RP1
bcf STATUS,RP0

movlw 0x05
movwf EEADR
movfw Betriebsstundencopy
movwf EEDATA

bsf STATUS,RP0
bcf EECON1,EEPGD
bsf EECON1,WREN

bcf INTCON,GIE

movlw 0x55
movwf EECON2
movlw 0xAA
movwf EECON2
bsf EECON1,WR

waita
btfsc EECON1,WR
goto waita

bcf EECON1,WREN

bcf STATUS,RP0
bcf STATUS,RP1

bcf PIR2,EEIF

end

was mache ich in diesem Programm falsch?? Vielen Dank im voraus für Eure Hilfe

Gruß

Michael

harper
12.07.2005, 13:52
Hallo,

ohne mich mit Deinem Code auseinandergesetzt zu haben:
kann es sein, dass Du den Inhalt der Speicherzelle vor dem wiederbeschreiben löschen musst?
Also Daten schreiben->Auslesen->Speicherzelle löschen->Addieren->wiederbeschreiben?

War die erste Idee, die ich beim Lesen Deines Beitrages hatte. Leider hab ich im Moment keine Zeit mich weiter mit dem Problem zu beschäftigen...

Gruß,
Stefan

12.07.2005, 14:13
Hallo Stefan,
habe die Speicherzelle nach dem auslesen gelöscht, hat aber nix gebracht. Ist merkwürdig, dass ich jede andere richtig beschreibe nur die, die ich Auslese wird falsch beschrieben.

Gruß

Michael

12.07.2005, 14:56
Hallo Stefan,
das Programm ist laut MLAB Simulator richtig.Programmiere aber über ein Programmer der Firma ELNEC und diese Software zeigt mir einen anderen Wert in der Speicherzelle als der Simulator. Also liegt es wohl nicht an dem Programm sondern an der Programmiersoftware von ELNEC.


Gruß

Michael

PicNick
12.07.2005, 17:00
Schau mal da rein, normalerweise kann man den Beispielen trauen.

http://www.sprut.de/electronic/pic/grund/eeprom.htm

13.07.2005, 07:28
Hallo,

vielen Dank für Eure Antworten.
Werd mir mal die Beispiele anschauen

Gruß

Michael