Hallo, hab da ein Problem das ich mir nicht erklären kann. Hoffe mir kann geholfen werden. Ich verwende den PIC18F13K22 und alles läuft perfekt für etwa 30 min. Hab folgendes array dessen Werte nie verändert werden sondern nur mit epfangenen Daten veglichen werden: unsigned char SerialNumber[8] = {0xCC,0xB7,0xD0,0x72,0x28,0x8E,0x7E,0x66}; Wie es der Name schon sagt ist es eine Seriennummer. Nach etwa 30 minuten verändern sich die Werte von alleine ganz willkürlich. Da dass array nur einmal am anfang deklariert und initialisiert wird stimmt nun die Seriennummer nicht mehr mit den emfangenen Daten überein und nichts geht mehr.
Marc Köcher schrieb: > Hallo, > unsigned char SerialNumber[8] = > {0xCC,0xB7,0xD0,0x72,0x28,0x8E,0x7E,0x66}; > > Wie es der Name schon sagt ist es eine Seriennummer. Nach etwa 30 > minuten verändern sich die Werte von alleine ganz willkürlich. Von alleine sicher nicht, sondern DU bzw. dein Programm überschreibt den Bereich von <SerialNumber> (wie und warum auch immer!?). const unsigned char SerialNumber[8] =........ dürfte das Problem beseitigen. (hängt natürlich vom verwendeten Compiler und dessen Einstellungen ab - bin vom XC8 ausgegangen). (XC8 User Guide Page 163, 179).
Das kenn ich. Ziemlich sicher hast du dich verpointert. Sowas passiert genau immer dann, wenn du wo hinschreibst, wo du gar nicht wolltest. Mögliche Ursachen: - Du schreibts in ein anderes Array, über den Rand hinaus und triffst dieses - Pointer einmal zu wenig derefernziert oder den Inhalt als Pointer verwendet - Funktion aufgerufen und der den falschen oder keinen Pointer übergeben Das ist eben das schöne bei µCs, bei 8 Bittern sind die Adressen so klein, dass man so gut wie immer irgendwas witchitges trifft, wenn man danebenschießt :-) Es gibt viele mögliche Ursachen, was den Fehler schwehr zu lokalisieren macht. Meine Vorgehensweise in solchen Fällen ist folgende: Komponenten aus dem Projekt asukommentieren, bis der Fehler nicht mehr auftritt. Das machst du so lange, bis das nicht mehr passiert. Was du zuletzt auskommentiert hast, verursacht diesen Fehler. Das musst du dann sorgfältigst lesen und über jede Zeile genau nachdenken.
Debugger (PICKITx) nehmen, Datenhaltepunkt beim Schreiben ...
Volker SchK schrieb: > Debugger (PICKITx) nehmen, Datenhaltepunkt beim Schreiben ... Das geht? Man kann mit dem Debugger auf Änderung einer Speicherzelle triggern? Das hätte ich schon 1-2mal brauchen können. Zu meiner Schande muss ich gestehen, dass mir nicht klar ist, wie man das macht. Wie genau muss man da in MPLABx vorgehen? Wie nennt man das auf englisch (dass man das in der Hilfe nachlesen kann)?
Klick einfach mal mit der rechten Maustaste in einem Sourcefile. Der 6. Eintrag im Popup Menü (oder Strg-Umwschalt-F11) Den Rest bekommst du ziemlich sicher selber raus ;-)
Volker SchK schrieb: > Klick einfach mal mit der rechten Maustaste in einem Sourcefile. > Der 6. Eintrag im Popup Menü (oder Strg-Umwschalt-F11) > > Den Rest bekommst du ziemlich sicher selber raus ;-) Danke, das funktioniert. Wirklich sehr praktisch! Ich fühle mich plötzlich wieder wie ein Anfänger :-)
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.