Forum: Mikrocontroller und Digitale Elektronik Location not valid - trotz volatile!


von Bernhard N. (bernieserver)


Lesenswert?

Hallo,

nur mal eine allgemeine Frage:
Ich habe ein paar floats, die ich gerne in AVR Studio debuggen möchte.

Normalerweise reicht es doch aus die Variable in der Deklaration kurz 
volatile zu setzen. Nur bringt das bei mir nichts. Beim Anspringen heißt 
es im Watch Window trotzdem noch "Location not valid".

Codeoptimierung ist an (-Os).

Gibt es eine Möglichkeit ohne Schauen in die Register (stelle ich mir 
bei floats kompliziert vor) und ohne die Codeoptimierung auszuschalten 
(Code wäre dann viel zu groß) die Sache zu debuggen?

Gruß

Bernhard

von Bernhard N. (bernieserver)


Lesenswert?

Keiner ne Idee?

Gruß
Bernhard

von Grrrr (Gast)


Lesenswert?

Also ehrlich Leute. Ihr habt 7 Minuten Zeit gehabt die Geduld des 
Fragestellers zu erschöpfen und das reicht Euch noch nicht? Tststs. Seid 
Ihr anspruchsvoll.

von Grrrr (Gast)


Lesenswert?

Sch... Habe mich verguckt. Waren 17 Minuten. Das sollte jetzt aber 
wirklich reichen um Eure dunklen Leidenschaften zu befriedigen, oder?

von Karl H. (kbuchegg)


Lesenswert?

Bernhard N. schrieb:
> Keiner ne Idee?

Poste ein abgespecktes Programm, welches das Problem zeigt und versetz 
uns in die Lage, mit dem Problem hier bei uns lokal zu arbeiten.

Denn wie du so schön sagst: Eigentlich sollte ein volatile ausreichen, 
damit der Compiler/LInker keinerlei Optimierung auf der Variablen macht.

von Stefan (Gast)


Lesenswert?

Grrrr schrieb:
> Ihr habt 7 Minuten Zeit gehabt

17min!
Das ist ja wohl mehr als genug, oder?

von Bernhard N. (bernieserver)


Lesenswert?

Hehe, ja ich war ein wenig ungeduldig. Aber hier verschwinden ja die 
Sachen so schnell auf Seite 2.

Ansonsten:  Diese Zeile reicht schon vollkommen aus, dass es nicht 
funktioniert:

volatile float DesHum_f = (float)DesHum; // DesHum ist uint8_t
beim Debuggen von DesHum_f

Oder so was:

volatile float test = FunktionMitFloatRueckgabe(float Param1, float 
Param2);

Echt verrückt!

Ich muss das Problem wohl irgendwie nachstellen. Vermutlich klappt es im 
kleinem aber eh nicht. Und das Ganze ist mir schon öfters aufgefallen, 
dass das mit einem alleinigem volatile nicht getan ist... Wie debuggt 
Ihr das denn?

Gruß
Bernhard

von S. T. (cmdrkeen)


Lesenswert?

Du scheinst eine Variable außerhalb ihres Gültigkeitsbereiches anschauen 
zu wollen .... volatile wird da nicht ausreichen, deklariere sie halt 
global.

von Bernhard N. (bernieserver)


Lesenswert?

Hi,

ich habe es mit der globalen Deklaration hinbekommen die floats zu 
debuggen, warum auch immer.

Aber Danke für den Hinweis!

Gruß
Bernhard

von Tassilo B. (big_t)


Lesenswert?

1
static
 statt
1
volatile
 verwenden, dann gibt's 'dauerhafte' Speicherzuweisung im gewünschten 
Gültigkeitsbereich...

von Karl H. (kbuchegg)


Lesenswert?

Tassilo Böhr schrieb:
>
1
static
 statt
1
volatile
 verwenden, dann gibt's
> 'dauerhafte' Speicherzuweisung im gewünschten Gültigkeitsbereich...


Wenn man halt endlich mal ein bischen Code sehen würde. Dann noch eine 
kleine Markierung, an welcher Stelle das Programm steht, wenn er sich 
die Variablen ansieht .....

von Bernhard N. (bernieserver)


Lesenswert?

Hi,
danke nochmals. Das Problem ist jetzt behoben, das mit dem static muss 
ich noch probieren.

Gruß
Bernhard

von Klaus W. (mfgkw)


Lesenswert?

Nimm am besten static, volatile und const zusammen.
Das ist am sichersten.

von Bernhard N. (bernieserver)


Lesenswert?

Danke. Ich denke mit diesem Thema wird auch vielen Einsteigern geholfen.
Ich füge noch ein paar Suchtags hinzu:

Debugging
Debuggen
float
double
volatile
static
watch window
location not valid
Register
AVR Studio
global
funktionslokal
lokal
deklarieren
MK2


Gruß
Bernhard

von Klaus W. (mfgkw)


Lesenswert?

Ja, danke.
Dieser Thread ist besonders wertvoll für Einsteiger, weil man
klar sieht, worum es geht.
Kein überflüssiger Quelltext, der nur ablenkt und genug Stichworte.
Also sehr hilfreich.

von Bernhard N. (bernieserver)


Lesenswert?

Hehe, danke!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Klaus Wachtler schrieb:
> Nimm am besten static, volatile und const zusammen.

Wenn es sich um Funktionsparameter handelt, könnte man auch zur
Vorsicht noch "restricted" hinzufügen. ;-)

von Klaus W. (mfgkw)


Lesenswert?

Bitte den Thread nicht ins Lächerliche ziehen!
Was sollen denn die Einsteiger denken?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Klaus Wachtler schrieb:
> Was sollen denn die Einsteiger denken?

Wenn sie denken, haben wir doch schon mal was gewonnen.  Ist doch
besser, als wenn sie nur blind abschreiben.

von Klaus W. (mfgkw)


Lesenswert?

Hm, vielleicht hast du recht.

Langsam begreife ich: Wenn man aus allen Threads komplett alle harten 
Fakten wie Quelltexte, vernünftige Beschreibungen, konkrete Daten etc. 
entfernt, regt das die Phantasie und Kreativität viel mehr an. Ein paar 
wirre Aussagen, ein paar wilde Spekulationen, alles lasch formuliert und 
gezielt ein paar Fehler eingebaut und schon heizen die Synapsen beim 
Leser wieder.
Ich glaube, das würde den Standort Deutschland endlich mal wieder 
voranbringen.

von Klaus W. (mfgkw)


Lesenswert?

Du bist dich Moderator: magst du mal testweise die nächsten paar Threads 
dahingehend modifizieren, damit man sieht, ob es sich bewährt?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Klaus Wachtler schrieb:
> Du bist dich Moderator: magst du mal testweise die nächsten paar Threads
> dahingehend modifizieren, damit man sieht, ob es sich bewährt?

Der eine Thread hier genügt doch als Test, und den muss man ja nicht
erst extra noch modifizieren...

Ein wirklich guter Debugger war AVR Studio aber leider noch nie,
das ist es, was die Leute dann zu derlei Dingen treibt.  Schade,
dass die Anbindung des JTAG ICE so verkorkst ist (komplett auf AVR
Studio zugeschnitten), dass der GDB damit nun auch nicht gerade eine
Leuchte ist.

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
Noch kein Account? Hier anmelden.