Hallo, ich versuche eine Andwenung zu debuggen, aber ich kann an einigen Stellen im Code keinen Breakpoint setzen, erst eine Zeile später. Auch sind die Variablen "nicht available" in der Debug-Session obwohl sie benutzt werden. Wie kannn ich das abschalten ??? Danke !
Wahrscheinlich hast du die Code Optimierung nicht auf "none" gestellt. Optionen -> C/C++ Compiler -> Code -> Optimizations -> None (Passend für EW430 v3.21)
Was funktioniert nicht? Hat die Umstellung nichts gebracht, oder hast du die Einstellung beim Compiler nicht gefunden? Schon mal ein Project -> Clean gemacht?
> Was funktioniert nicht? Hat die Umstellung nichts gebracht, oder hast du > die Einstellung beim Compiler nicht gefunden? Das hatte ich vorher probiert und es hat nicht funktioniert da er dann über ein einfaches Konstrukt meckert: Error[Ta005]: This intrinsic function can only be used in interrupt or monitor functions ... Ich habe "__bic_SR_register_on_exit(LPM1_bits);" als static inline deklariert und dann kommt diese Fehlermeldung bei "none". Aus diesem Grund habe ich ein anderes Level genommen und alle Schalter bis auf "function inline" ausgeschaltet. Ich denke mal das es mal wieder, wie so oft, hidden options gibt die ohne Nachfragen ein- bzw. ausgeschaltet werden. > Schon mal ein Project -> Clean gemacht? Ja klar.
Compiler schrieb: > Das hatte ich vorher probiert und es hat nicht funktioniert da er dann > über ein einfaches Konstrukt meckert: > > Error[Ta005]: This intrinsic function can only be used in interrupt or > monitor functions ... > > Ich habe "__bic_SR_register_on_exit(LPM1_bits);" als static inline > deklariert und dann kommt diese Fehlermeldung bei "none". Womit der Compiler völlig Recht hat. Das kann man ausschlicßlich in ISRs benutzen, da das gesicherte Statusregister auf dem Stack mainpuliert wird. Wo wolltest du das denn benutzen?
> Wo wolltest du das denn benutzen?
Ich habe es als static inline function (im Header-File) deklariert und
benutze es auch nur in der ISR.
Der Compiler meckert bei abgeschalteter "function inline" Option schon
beim sichten des Header-Files. Es ist ihm schlichtweg egal ob es
überhaupt oder wo es benutzt wird. Sehr merkwürdig, muss man sich für
Level-None neue Sourcen schreiben oder wie !? (ganz schwach IAR !)
Hm, naja, die Frage ist, wieso du das überhaupt nochmal selber deklarierst? Das ist doch eh schon dabei. Das gibts sogar als schönes Makro EXIT_LPM1 oder so ähnlich...und dahinter verbrigt sich ein einziger Assembler-Befehl, egal welche Optimierungsstufe angewendet wird.
Christian R. schrieb:
> Das gibts sogar als schönes Makro EXIT_LPM1 oder so ähnlich...
LPM1_EXIT
> Hm, naja, die Frage ist, wieso du das überhaupt nochmal selber > deklarierst? Das ist doch eh schon dabei. Das gibts sogar als schönes > Makro EXIT_LPM1 oder so ähnlich... Tja, ich wollte beim Testen des LPM nicht durch alle Sourcen und das LPM1_EXIT in ein z.B. LPM2_EXIT ersetzen. Darum EINE Stelle zum ändern, der Rest ist murks.
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.