PIC EEPROM

Gast #90745
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..
Angehängte Dateien:
Gast #90747
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
Gast #90748
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!!
Angehängte Dateien:
Gast #90749
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 ;)
Gast #90751
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..
Angehängte Dateien:
Gast #90752
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren