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..
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
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!!
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 ;)
DANKE VIELMALS!!! Ja so kleine Stolperfallen beim PIC sind mir ja mittlerweile bekannt. Die Fehler mach ich trotzdem..
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..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.