www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM PIC16F883 schreiben


Autor: Willi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Versuche PIC 16F883 EEProm zu schreiben, obwohl ich den Code von 
MICROCHIP anwende (aus dem DATA Sheet)hab ich keinen Erfolg. Es wird 
nicht geschrieben.
Kann mir jemand helfen, mein Code als Anhang.
Vielen Dank
Willi

Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> EE_16F883
> ;lesen 16F883
> BANKSEL EEADR ;
>   MOVLW   DATA_EE_ADDR ;
>   MOVWF   EEADR ;Data Memory Address to write
>   MOVLW   DATA_EE_DATA ;
>   MOVWF   EEDAT ;Data Memory Value to write

Sollte das wirklich irgendwo so stehen?
Mit "MOVLW" wird ja die Adresse der Variablen "DATA_EE_ADDR" in das WREG 
geladen und nicht der Wert.

Ich hätte hier eher "MOVF DATA_EE_ADDR,W" erwartet.

Autor: Willi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dieter,
ja das war ein Fehler, als Anhang das berichtigte Listing
aber es klappt leider nicht.
vielen Dank
Willi

Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  BSF     EECON1, WR ;Set WR bit to begin write
>    btfss    EECON1,WR

>    goto    EE1  ;wiederholt den Schreibcyklus
>  ;               wenn Schreib-Bit nichr zurückgesetzt ist

Das habe ich auch nicht in der Form in Erinnerung (mach schon ein paar 
Jahre nix mehr mit PIC16).

So sollte das eher funktionieren:

bsf     EECON1,WR  ;Schreibvorgang starten
btfsc   EECON1,WR  ;Schreiben fertig?
goto    $-1        ;nein, warten

Autor: usuru (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Schreibvorgang ist bei sprut genau beschrieben, damit geht es auch.

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

Autor: Willi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dieter,
vielen Dank
hab deinen Vorschlag umgesetzt, aber die Zelle(1) wird nicht verändert.
Hab die Zelle mit dem "Leseprogramm ausgelesen.
Auf auf dem EE-Monitor meines PiCkit2 auch keine Veränderung.
Hab die veränderte Datei nochmals angehägt.
Vielen Dank
Willi

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo usuru,
bei mir ist der Wurm drin. Auch mit  Sprut und 16F876 schreibt er nicht, 
sondern bleibt irgenwo hängen. Werd ich morgen mal schauen.
Vielen Dank
Willi

Autor: stepp64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
EEADR liegt in Bank 2 und dein Wert den du schreiben willst in Bank0. Da 
du aber am Anfang der Schreibroutine auf Bank2 stellst nimmt er 
natürlich auch dein Datenwert aus Bank2 (was aber falsch ist). Du musst 
also schon darauf achten, in welchem Speicherbereich deine Variablen und 
Register liegen.

Weiter hab ich erst mal nicht geschaut, da dieser Fehler sicher noch 
öfter auftritt..

Gruß
Sven

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.