Forum: Compiler & IDEs Wert verändert sich bei Übergabe


von Mario L. (Gast)


Lesenswert?

Hallo,
mit der Variable EEAdr_i wird beim ersten Aufruf von der Funktion 
lesen_1byte der Wert 0x0000 übergeben.
Statt diesem Übergabewert steht aber in der Variable EEAdr der Wert 
0xFF48.
Da ich jetzt wohl den Wald vor lauter Bäumen nicht mehr sehe meine 
Frage: Wo könnte der Fehler stecken?
1
void lesen_1byte(unsigned short);
2
3
void alles_lesen(void)
4
{
5
  unsigned short EEAdr_max;
6
  unsigned short EEAdr_i;
7
8
  EEAdr_max = ee_init();
9
10
  for (EEAdr_i=0; EEAdr_i < EEAdr_max; EEAdr_i++)
11
  {
12
    lesen_1byte(EEAdr_i);
13
  }  
14
}
15
16
void lesen_1byte(unsigned short EEAdr)
17
{
18
        unsigned short EEAdr_tmp1;
19
20
        EEAdr_tmp1 = EEAdr;
21
22
        ...
23
24
}

Vielen Dank für Eure Hilfe.

von Fabian O. (xfr)


Lesenswert?

Mario L. schrieb:
> Statt diesem Übergabewert steht aber in der Variable EEAdr der Wert
> 0xFF48.

Wie stellst Du das fest?

von Otto Normaluser (Gast)


Lesenswert?

Gewisse Grundkenntnisse über Bits und Bytes sind zum Programmieren schon 
notwendig. Daher: Warum an einem Mikrocontroller programmieren lernen?

von Mario L. (Gast)


Lesenswert?

Fabian O. schrieb:
> Wie stellst Du das fest?

Breakpoint gesetzt und im Watch-Fenster angezeigt.

@ Otto Normaluser

Hast Du auch eine mögliche Antwort zu dem Problem?

von ar (Gast)


Lesenswert?

Deer angezeigte "WERT" ist kein Wert, sondern deine Speicheradresse.

von Daniel V. (danvet)


Lesenswert?

Mario L. schrieb:
> Fabian O. schrieb:
>> Wie stellst Du das fest?
>
> Breakpoint gesetzt und im Watch-Fenster angezeigt.
>
> @ Otto Normaluser
>
> Hast Du auch eine mögliche Antwort zu dem Problem?

Bitte kompletten Code zeigen.
Es kann sein, dass die Speicherstelle, an der die Variable übergeben 
wird, zum Zeitpunkt des Breakpoints anderweitig verwendet wird 
(Codeoptimierung).
Mal den Disassembler einschalten :-)

Gruss, Daniel

von Mario L. (Gast)


Lesenswert?

Daniel V. schrieb:
> Es kann sein, dass die Speicherstelle, an der die Variable übergeben
> wird, zum Zeitpunkt des Breakpoints anderweitig verwendet wird
> (Codeoptimierung).

Das war es wohl. Danke für die Hilfe.

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.