Microchip PIC24 cos() function

Gast #4024842
Lesenswert?
• ▲
▼
Gibt es da ein einfachen weg um das umzurechnen?

Folgendes soll berechnet werden:
Vielleicht das man das irgendwie auch optimiert und keine math.h braucht
1
    float f;
2
    word  w;
3

4
    f = 5066;  // keine Konstante
5
    f *= 0.0703;
6
    f = cos(f);
7
    w = f * 100;
Gast #4024846
Lesenswert?
• ▲
▼
Simon schrieb:
> Folgendes soll berechnet werden:
> Vielleicht das man das irgendwie auch optimiert und keine math.h braucht

feste Tabelle:

f sollte auch kein float sein und in einen überschaubaren Wertebereich 
liegen.

word costab[] = {0,2,3,4,65,76,78,98,9, .... }
w = costab[f];
Gast #4024866
Lesenswert?
• ▲
▼
Die Multiplikation f *= 0.0703; kann ich lassen wie gewohnt?
eventuell kann man das ja aufbohren auf 703 so hat man dann ein höheren 
wert.

Nur da kommt auch ein anderes cos() ergebnis raus.

Wie funktioniert das mit der Tabelle genau? welche werte werden da 
vorher abgelegt?
Gast #4024869
Lesenswert?
• ▲
▼
Simon schrieb:
> Wie funktioniert das mit der Tabelle genau? welche werte werden da
> vorher abgelegt?

sinnvoller weise die cos werte.

Das ist doch dir überlassen, es ist einfach eine Tabelle die aus einem 
wert einen anderen macht also eine Vorberechnung.

Wenn bei dir nur ein paar hundert Winkel möglich sind, dann kann man für 
diese Winkel sich einfach vorher die Daten berechnen.
Gast #4024885
Lesenswert?
• ▲
▼
Es geht um die Berechnung von einem versatz zwischen Spannung und strom.

also sprich dem cos(phi) im Wechselstromnetz.
Ich bekomme von einem chip den Wert geliefert.

Als 16Bit WORD, z.B. ebend 5066 und möchte das auf einen Winkel 
Umrechnen.

Ich bin mir also nicht sicher ob das mit so einer Tabelle ausreichend 
genau ist. Vorallem wie groß soll die Tabelle den sein?
Ich spare mir damit CPU leistung zu lasten von Speicher.
#4024952
Lesenswert?
• ▲
▼
Weshalb braucht man denn einen Gradwert ? Meist kann man mit 
proportionalen Werten weiterrechnen. Dh 2345 ist ebensogut wie 89, meist 
eher schneller und genauer.
Ich rechne nur fuer Benutzerinteraktionen auf Bentuzerwerte wie 
Grad-winkel, oder Grad-Celsius um, die Rechnungen sind in integer, meist 
Longint.

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.