Winkelfunktionen nutzen auf STM32F1 (Cortex-M3)

OP #4413851
Lesenswert?
• ▲
▼
Hallo zusammen,

ich stehe gerade zum ersten Mal vor der Anforderung Winkelfunktionen 
benutzen zu müssen, und bin ehrlich gesagt ein wenig planlos.

Grund: In allen Anleitungen die ich bisher über Google gefunden habe, 
wird behauptet, dass der Rückgabewert von z. B. sin() vom Datentyp float 
ist. Nun ja, mein Cortex-M3 hat jedoch keine FPU, die gibt's erst ab dem 
-M4. Also kann das für mich schonmal nicht so ganz anwendbar sein.

Ich habe mal testweise ein paar Winkelfunktionen aufgerufen, hier was 
rückgeliefert wurde:

cos(0) --> 1
cos(45) --> 0
cos(90) --> 0
cos(180) --> 0

tan(0) --> 0
tan(45) --> 1
tan(90) --> -1

Viel schlauer bin ich jetzt aber auch nicht. Dass tan(45) 1 rückliefert 
kann als Indiz genommen werden, dass das Argument in Grad vorliegen 
muss, wirklich stichhaltig ist das für mich aber nicht. Ich vermute 
eigentlich, dass das Argument eher in Bogenmaß angegeben sein muss. Dann 
frage ich mich aber, wie ich den Winkel angeben soll, denn ich habe ja 
nur Integer auf diesem µC. Kann es sein, dass hier Fixkommaarithmetik 
zum Einsatz kommt? Wenn ja: An welcher Stelle hat das Komma zu sein?

Irgendwie weiß ich nicht wo ich weiter recherchieren soll.

Danke!

Ich programmiere übrigens mit Em::Blocks. Das verwendet eine eigene 
Version der GCC, denke ich.
#4413862
Lesenswert?
• ▲
▼
1. Fließkommavariablen kannst du auch nutzen wenn du keine FPU hast, 
dann wird das alles in Software gemacht, ist dann halt langsamer.

2. Trigonometrische Funktionen mit Konstanten werden bereits vom 
Compiler berechnet.

3. Nein, es wird in Bogenmaß gerechnet. bei dir werden die Ergebnisse 
nur auf Ganzzahl gerundet

cos(0) --> 1
cos(45) --> 0,52 -> 0
cos(90) --> -0,4 -> 0
cos(180) --> -0,56 -> 0

tan(0) --> 0
tan(45) --> 1,62 ->  1
tan(90) --> -1,99 -> -1
OP #4413951
Lesenswert?
• ▲
▼
Christian K. schrieb:
> 1. Fließkommavariablen kannst du auch nutzen wenn du keine FPU hast,
> dann wird das alles in Software gemacht, ist dann halt langsamer.
>
> 2. Trigonometrische Funktionen mit Konstanten werden bereits vom
> Compiler berechnet.
>
> 3. Nein, es wird in Bogenmaß gerechnet. bei dir werden die Ergebnisse
> nur auf Ganzzahl gerundet

Alles klar, vielen Dank!

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.