-
        

Ergebnis 1 bis 6 von 6

Thema: EEPROM LESEN SCHREIBEN ??????????

  1. #1
    Michael 33
    Gast

    EEPROM LESEN SCHREIBEN ??????????

    Anzeige

    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

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    17.09.2004
    Ort
    OB
    Alter
    35
    Beiträge
    57
    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
    I haven't lost my mind - it's backed up on tape somewhere.

  3. #3
    Gast
    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

  4. #4
    Gast
    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

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Schau mal da rein, normalerweise kann man den Beispielen trauen.

    http://www.sprut.de/electronic/pic/grund/eeprom.htm
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Gast
    Hallo,

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

    Gruß

    Michael

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •