IAR MSP debug

Gast #1619885
> 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.
#1619949
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?
Gast #1619992
> 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 !)
#1620126
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.
Gast #1620924
> 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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.