Problem bei Vergleich zweier Variablen

Gast #724279
Lesenswert?
• ▲
▼
Hallo Leute, ich hab ein Problem.
Bei der Programmierung eines ATmega128 in C mit AVRGCC hab ich folgendes 
Problem: Ich will gerne zwei Variablen miteinander vergleichen. Hab dazu 
folgeden Code aufgesetzt:

if(sensor_grad <= value_grad)
{
     regel_richtung = 1;
}
else
{
     regel_richtung = 0;
}

im debugger hab ich geprüft, welchen Wert die Variablen sensor_grad und 
value_grad haben, abhängig von meiner äußeren Beschaltung ändern die 
sich... aber, egal, ob value_grad größer oder kleiner sensor_grad ist, 
der macht immer nur den teil regel_richtung = 1...
beide variablen sind vom gleichen typ...
was mache ich falsch?
danke im voraus
#724317
Lesenswert?
• ▲
▼
Hast du mal testweise konstante Werte für sensor_grad und value_grad vor 
dem Vergleich eingesetzt? Also den Code auf ein Minimum reduziert?

Ansonsten bräuchte ich das Ergebnis aus dem Disassembler - die 
Eigenheiten von C sind nicht ganz so mein Fachgebiet.

char wird nicht lexikalisch verglichen, oder?

>der macht immer nur den teil regel_richtung = 1...
Auf welche Art hast du das festgestellt?

Muss jetzt auch erstmal im Dunkeln stochern...
Gast #724326
Lesenswert?
• ▲
▼
>if(sensor_grad <= value_grad)
>{
>     regel_richtung = 1;
>}
>else
>{
>     regel_richtung = 0;
>}

Wenn avrgcc da Fehler macht würde keines
meiner Programme funktionieren.

Das Problem liegt ganz woanders im Quellcode.
#724345
Lesenswert?
• ▲
▼
wenn du eine variable in einem interrupt beschreibst, sie im 
hauptprogramm aber nur liest wird sie vom compiler wegoptimiert weil er 
denkt die wird ja nie geschrieben (gibt aber glaub ich nen warning). 
wenn du die var aber als volaile deklarierst darf der compiler da nicht 
optimieren.

Gruß
Fabian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren