www.mikrocontroller.net

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


Autor: Bernhard N. (bernieserver)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard N. (bernieserver)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keiner ne Idee?

Gruß
Bernhard

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Grrrr (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grrrr schrieb:
> Ihr habt 7 Minuten Zeit gehabt

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

Autor: Bernhard N. (bernieserver)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: S. T. (cmdrkeen)
Datum:

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

Autor: Bernhard N. (bernieserver)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tassilo Böhr (big_t)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
static
 statt
volatile
 verwenden, dann gibt's 'dauerhafte' Speicherzuweisung im gewünschten 
Gültigkeitsbereich...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tassilo Böhr schrieb:
>
static
 statt
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 .....

Autor: Bernhard N. (bernieserver)
Datum:

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

Gruß
Bernhard

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm am besten static, volatile und const zusammen.
Das ist am sichersten.

Autor: Bernhard N. (bernieserver)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernhard N. (bernieserver)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hehe, danke!

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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. ;-)

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.