Gast
#1260575
Hallo, ich arbeite hier an einem Projekt, in dem ein PIC18F2680 ein paar trigonometrische Funktionen berechnen muss (Abstand zwischen Koordinaten). Nun habe ich das Problem, dass z. B.: float distance = acos(0.9995794); // Testfall Als Ergebnis einen sehr hohen Wert ergibt, und nicht wie erwartet 0,029005. Erstmal: Sehe ich das richtig, dass es keine Möglichkeit gibt, im C18 trigonometrische Funktionen mit einer double-Genauigkeit zu berechnen? Allerdings (und das ist das komische): Das Ergebnis wird zyklisch berechnet (etwa alle 250ms), alle 1ms funkt noch ein Timerinterrupt dazwischen, der aber nicht viel macht. Nun "blinkt" mir alle paar Sekunden mal für einen Moment das korrekte Ergebnis im Display. Kann es sein, dass ich die acos()-Funktion während ihrer Ausführung durch einen Interrupt so "störe", dass das Ergebnis falsch wird. Oder kann ich generell längere Rechenoperationen mit Gleitkommazahlen mit anderen Programmteilen ungewollt beeinflussen? Peter