Hallo, ich habe probleme mit einigen Variablen im watch fenster. Das folgende einfache Codebeispiel soll das etwas verdeutlichen: #include <dspic.h> void main() { int i; TRISD=0x0000; for(i=0; i<16 ;i++) { LATD = i; } } Ich habe einen breakpoint innerhalb der For-Schleife gesetzt. Man sollte erwarten, dass die Variable "i" bei jeder unterbrechung um 1 erhöht wird, bis sie die Zahl 15 erreicht hat. Leider zeigt das Watch-fenster immer den inhalt 0x0000 für "i" an. Trotzdem wird jeweils der korrekte wert in das LATD-Register geschrieben. Ich habe das Programm sowohl im Simulator, als auch auf einem dsPIC30F5013 über den ICD2 laufen lassen. in beiden Fällen taucht das gleiche Problem auf. Hat jemand eine Idee, was ich falsch gemacht haben könnte? Ich verwende Mplab v7.41 mit dem Hi-Tech dsPICC 9.50 Compiler auf dem Betriebssystem Windows 2000. Bin für jeden Tip dankbar Sascha
Habe mittlerweile in anderen Foren Antwort bekommen. Das Problem liegt darin, dass der Hi-Tech Compiler den Wert nach dem Inkrementieren in einem Arbeitsregister hält. deshalb ist der Wert an der Speicherstelle im RAM unverändert.Das ist zwar effektiv, aber zum debuggen mit Mplab nicht zu gebrauchen. Um das Problem zu umgehen und trotzdem debuggen zu können, kann man die Variable global außerhalb der 'main' Routine oder local als 'static' deklarieren. In beiden Fällen wird der Compiler gezwungen die Variable nach der Inkrementierung im RAM abzulegen.
Hardware-Entwickler gesucht Assembler C DSP Informieren Sie sich auf unserer Homepage: www.personalmarketing-schuler.de
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.