www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC EEPROM


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
sorry, dass ich euch dauernd mit solchen "ich finde meinen Fehler
nicht"-postings nerve..
Mein Problem ist folgendes:
Ich will eine Routine schreiben, die 6-stellige Passwörter an
unterschiedlichen Stellen im EEPROM ablegt und eine, die sie wieder
ausliest und mit den eingegebenen Tasten vergleicht. Die Ausleseroutine
scheint nur Mist zu machen. Im EEPROM habe ich per hex-file die Ziffern
123456789012 abgelegt. Beim ersten Auslesen nach reset zeigt die
Ausleseroutine auf dem LCD "schwarzer Kasten"12345 statt der
erwarteten 123456. Ab dem zweiten Auslesen zeigt die selbe Routine nur
noch 6 schwarze Kästen an.
Ob die Schreibroutine funktioniert, konnte ich nicht richtig testen, da
die Leseroutine ja nicht geht. Ich hab mal versucht, das EEPROM mit dem
PC auszulesen und im HEX-Editor anzuschauen aber scheinbar passen
.HEX-file und HEX-Editor nicht zusammen oder ich krieg es einfach nicht
gepeilt... Kennt jemand ein Programm, das den EEPROM-Inhalt als ASCII
oder HEX darstellen kann?
Wäre echt nett, wenn jemand mal den Code überfliegen könnte..

Autor: jmoney (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab ich vergessen:
das code_anzeigen ist natürlich nur zum debuggen drin..

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit
#rom 0x2100={0,1,2,3,4,5,6}  // EEPROM-Daten=0;
kannst Du z.B. definierte Daten für den EEPROM ablegen. Damit sollte
die Fehlervariante schon mal ausgeschlossen sein. Mit was programmierst
Du den PIC? Unter Mplab kannst Du den PIC wieder auslesen (wenn Code
Protect nicht gesetzt) und die Daten in allen Formaten ansehen.

Die Codeschnipsel bringen nichts. Wenn dann bräuchte man schon das
komplette Programm um evtl. etwas sagen zu können. Ich schätzer mal der
Fehler liegt in dem Programmteil, der nicht im Anhang enthalten ist.

Steffen

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

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte die Woche über keine Zeit, mir das nochmal anzuschauen. Jetzt
hab ich nochmal drübergekuckt und mir sind alle Ideen ausgegangen.
EEPROM-Daten habe ich mittels DE vordefiniert und es werden keine
Variablen o.Ä. aus dem restlichen code verwendet.
Der komplette Code steht jetzt im Anhang.Danke für's drüberkucken!!

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo jmoney,

ich hab' Deinen Code nur mal überflogen. Bei Deinen "aus dem
Datenblatt"-Routinen fällt mir auf: Eeprom_Read wird mir aktiver Bank
2 und Eeprom_Write mir aktiver Bank 3 verlassen. Darauf nimmt aber der
Code nach Aufruf der Routinen keine Rücksicht.

Du solltest Dir angewöhnen, am Ende aller Sub-Routinen immer dieselbe
Bank zu aktivieren (z.B. Bank 0).

Andreas
(und ich programmiere trotzdem PIC's ;)

Autor: jmoney (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DANKE VIELMALS!!!
Ja so kleine Stolperfallen beim PIC sind mir ja mittlerweile bekannt.
Die Fehler mach ich trotzdem..

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

Bewertung
0 lesenswert
nicht lesenswert
Narf. Das geht immer noch nicht, obwohl ich immer schön brav in die Bank
0 zurück gehe, auch wenn ich EEDATA und EEADR mit neuen Werten
füttere.
Hat jemand eine funktionierende Routine, die sowas ähnliches macht?
Also mehrere Werte hintereinander ins EEPROM schreiben bzw auslesen.
Ich würde mir gerne mal einen funktionierenden code für sowas ansehen..

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Routinen sehen jetzt fast genauso aus wie meine. Die Leseroutine
ist bei mir identisch und sollte so eigentlich funktionieren. Beim
Schreiben solltest Du entweder in einer Schleife warten oder per
Interupt warten, bis das Byte geschrieben ist (EECON1,WR).

Steffen

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.