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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren