Gast
#2869832
Hallo Leute! Ich habe hier ein sehr merkwürdiges Problem: Bei der Programmierung eines PIC18F452 mit der MPLAB-IDE und dem MCC18-Compiler werden Benutzer-Variablen plötzlich von Systemfunktionen wie z.B. "t0write.c" überschrieben. Der PIC ist über RS-232 mit einem Touch-Display verbunden. Über ein Timer-Interrupt wird das Display regelmäßig abgefragt und bei Bedarf Daten von diesem mithilfe eines USART-Interrupts empfangen. Mit dem PIC soll so eine recht komplexe Menüführung realisiert werden. Nach kurzer Bedienung stürtzt plötzlich die Software des PICs ab. Beim Debuggen der Software über die ICSP-Schnittstelle, stelle ich fest, dass wichtige Benutzervariablen überschriben wurden. Durch das setzen von Data-Breakpoints auf die betroffenen Stellen im Fileregister stelle ich fest, dass die Variablen von verschiedenen Systemfunktionen überschrieben werden, die von Absturz zu Absturz variieren. -> in "C:\MCC18\src\pmc_common\Timers\t0write.c" 6CDA CFDB MOVFF PLUSW2, POSTINC2 -> in "C:\MCC18\src\traditional\stdclib\sprintf.c" 68D8 CFD9 MOVFF FSR2L, POSTINC1 -> viele andere Stellen mit änlichen befehlen Manchmal kommt es auch vor, dass der PIC bei betätigen von Touch-Buttons unerwartet resetet. Ich beschäftige mich nun schon seit langem mit diesem misteriösen Verhalten, aber ich konnte noch keine Lösung finden. Wenn ich zusätzlichen Code in das MPLAB-Project einbinde, der aber nicht ausgeführt wird, tritt das Probem gehäuft auf. Könnte es sich um einen Compiler-Fehler handeln? Ich habe den Code bereits ausgibig nach Buffer-Overflows oder Ähnlichem abgesucht. Habt ihr eine Idee zur Lösung des Problems? Liebe Grüße Julian