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

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.

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.