Hallo Gemeinde Kann mir bitte kurz jemand erklären, warum das hier im AVR Simulator nicht klappt.. void Division (void) { volatile double Dezi = 0.0; //vol nur für Simulator volatile double dummy = 0.0; //vol nur für Simulator dummy = atof("53.34565"); Dezi = 60 / dummy; //<--- ?!?!?!?! } Das die Funktion zweckfrei ist weiß ich. Warum kann ich die Division nicht ausführen. Ob es im uC klappt, kann ich noch nicht sagen. Im Simulator (2) geht es nicht. Grüße Torsten
Hallo, ganz einfach "60" ist eine ganze Zahl (Integer), die Division erfolgt also mit ganzen Zahlen. Das Ergebnis ist bestimmt 60 / 53 = 1, oder ?
Nee klappt auch mit 60.0 nicht. Meinte aber auch Dezi = dummy / 60.0; der SImulator steigt einfach aus ... Im Watch Fenster ist Dezi dann "Not in scope"
Hast du eine Optimierung eingeschaltet? Vl hat der Compiler alles wegoptimiert.
Dezi = (float) dummy / 60.1; hatte ich auch schon. Gleicher Effekt. Was passiert ? .... Der gelbe Pfeil vom Simulator verschwindet, obwohl unten rechts "stopped" steht. Im Disassembler Fenster springt er in einen Bereich, der "File not found" heißt. Hab aber nicht genug Ahnung, um das zu deuten.
hat sich erledigt. Das Problem lag mal wieder zwischen den Ohren des Users. Wenn ich mit F11 durchgehe macht er immer nur einen Schritt weiter. Die Division braucht aber 1388 Schritte !!! Mit F10 geht er drüber weg und liefert das Ergebnis Sorry.
Torsten B. schrieb: > Im Watch Fenster ist Dezi dann "Not in scope" Direkt nach "Dezi = dummy / 60.0;" steht eine schließende geschweifte Klammer, das heißt, die Prozedur ist an dieser Stelle zu Ende, und die lokalen (!) Variablen der Prozedur sind nicht mehr im "Blickfeld". Deklarier doch Dezi mal als globale Variable (außerhalb der Prozedur). Unabhängig davon kann es trotzdem sein, dass dein Programm komplett "wegoptimiert" wurde, wie Benjamin schon schrieb. Ein Schlauer Compiler merkt, dass der Code Unsinn ist, weil die Variablen später nicht mehr verwendet werden. Bei "volatile" sollte das aber eigentlich nicht passieren...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.