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.
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
:
Bearbeitet durch User
Kauf dier ein Buch über die Programmiersprache "C". Ohne ordentliche Lektüre wirst Du das Ganze eher nicht verstehen. Übrigens: "Float" kann sogar ein 8-Bitter wie AVR benutzen, da dauern die Berechnungen dann halt bedeutend länger.
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!
Auch nicht vergessen : #include math.h library !! Dan soll ess problemlos functionieren. Ichselbe verwende das auf den STM32VL Discovery, lauft relatif schnell mit sofware float Berechnungen.
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.