Forum: Mikrocontroller und Digitale Elektronik PIC EEPROM


von jmoney (Gast)


Angehängte Dateien:

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..

von jmoney (Gast)


Lesenswert?

hab ich vergessen:
das code_anzeigen ist natürlich nur zum debuggen drin..

von Steffen (Gast)


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

von jmoney (Gast)


Angehängte Dateien:

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!!

von Andreas Jäger (Gast)


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 ;)

von jmoney (Gast)


Lesenswert?

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

von jmoney (Gast)


Angehängte Dateien:

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..

von Steffen (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.