Hey Leute Arbeite zum erstenmal mit einem Mikrocontroller und frage mich nun auf was ich achten muss wenn ich floats oder doubles benutzen möchte bei einem stinknormalen PIC der 16er familie von Microchip. Spielt da die Rechenleistung oder der Speicher oder gar beides ne Rolle auf was achtet man da ?
Kostet üblicherweise deutlich Flash-Speicher, einerseits für die implizit aufgerufenen Berechnungsfunktionen, andererseits für Konvertierung bei Ausgabe wie etwa mit printf. Grad bei printf kann es sein, dass man irgendwas tun muss, ob dessen vollständige Version zu kriegen (=> Handbuch vom Compiler).
Vielen dank erstamls für die Antwort. Allerdings verstehe ich das mit dem Compiler nicht ganz es kann sein das eine light version des compilers für diese Funktion nicht ausreicht ? weil mein ziel ist es schlussendlich genau die printf funktion zu benutzen ?
Es kann sein, das verschiedene Libraries vorhanden sind. Und die einfache kompakte Standard-Version davon im printf() keine Fliesskommaunterstützung hat.
In vielen Fällen kann man meist ganz auf das rechnen mit Gleitkommazahlen verzichten, z.B. in dem man kleiner Einheiten wählt oder Fixkomma verwendet. Ist halt oft eine Frage, wie genau ein Ergebnis sein muss. Was willst du denn machen? Verwendest du Gleitkomma, ist halt u.U. ruck-zuck der Flash voll und die Berechnungen sin oft auch sehr langsam. Gut, das kann man oft verschmwerzen. Bei Flash Größen bis 8k wäre ich da sehr vorsichtig. Grad printf mit float bzw. double ist da sehr speicherintensiv.
Maurin Vögeli schrieb: > es kann sein das eine light version des > compilers für diese Funktion nicht ausreicht ? Woher sollen wir wissen, welchen Compiler Du benutzt? Schau in die Doku zu diesem Compiler, da steht sowas drin. Falls es für Deinem MC einen GCC gibt, der sollte das können und kostet nix. Peter
Ich verwende es zur Temperaturregelung einer Lötsation wobei die Werte schon eine gewisse genauigkeit aufweisen sollten. In diesem Fall wähle ich warscheinlich besser ein MCU mit einem Speicher oberhalb von 8k vielen dank.
Maurin Vögeli schrieb: > Ich verwende es zur Temperaturregelung einer Lötsation wobei die Werte > schon eine gewisse genauigkeit aufweisen sollten. und wo bekommst du die werte her? von einem ADC, wenn ja kommt dort aber ein int raus und kein float. Es gibt dafür keinen Grund erst nach float umzuwandeln. speichere die Temperatur einfach als int mit 1/10 Grad wenn es denn sein muss.
>auf was ich achten muss wenn ich floats oder doubles benutzen möchte Du musst darauf achten, ob Du tatsächlich echte Gleitkommaarithmetik brauchst, oder ob nicht auch Festkommaarithmetik reicht. http://www.mikrocontroller.net/articles/Festkommaarithmetik
> Ich verwende es zur Temperaturregelung einer Lötsation
Wozu in aller Welt braucht man dafür Gleitpunktzahlen ?
Andererseits ist es völlig wurscht, 1000 solcher Operationen schafft
auch ein uC pro Sekunde, und das reicht sicherlich für die primitivste
aller Steuerungen.
Maurin Vögeli schrieb: > Ich verwende es zur Temperaturregelung einer Lötsation wobei die Werte > schon eine gewisse genauigkeit aufweisen sollten. Du kannst Dir mit float natürlich in die eigene Tasche lügen. Aber genauer als Dein ADC wirds nicht, 10Bit bleiben 10Bit. Peter
Maurin Vögeli schrieb: > Ich verwende es zur Temperaturregelung einer Lötsation wobei Ich denke das geht nur mit einem Compiler und Microcontroller der long double mit 80 Bit unterstützt. 15Bit Exponent und 64 Bit Mantisse sind knapp, aber sollten reichen. Zum Glück sind Microcontroller heutzutage schon so weit entwickelt dass man diese auch Bequem in solch anspruchsvollen Anwendungen verwenden kann was vor ein paar Jahren noch undenkbar war.
@ Maurin Vögeli (Firma: Keine) (maurin) >Ich verwende es zur Temperaturregelung einer Lötsation wobei die Werte >schon eine gewisse genauigkeit aufweisen sollten. In diesem Fall wähle >ich warscheinlich besser ein MCU mit einem Speicher oberhalb von 8k Früher (tm) hätte es ei einfacher Komparator für 10 Cent, ähn 20 Pfennige getan ;-)
Und dieser Komparator steckte alternativ nicht in der Basisstation, sondern in der Lötspitze und nutzte einen seltsamen physikalischen Effekt aus. ;-)
Jetzt bin ich neugierig was den für einen Effekt ? ja diese version würde nicht funktionieren da ich einen fertigen Lötspitzverwende von Weller ;)
>Ich verwende es zur Temperaturregelung einer Lötsation wobei die Werte >schon eine gewisse genauigkeit aufweisen sollten. Fehlerfortpflanzung und so sind eher nicht bekannt schaetze ich. 32bit floar hat 5-6 signifikante Stellen, 64bit float hat etwas mehr.
Maurin Vögeli schrieb: > Jetzt bin ich neugierig was den für einen Effekt ? ja diese version > würde nicht funktionieren da ich einen fertigen Lötspitzverwende von > Weller ;) Genau und nur dann würde diese Version funktionieren. ;-) Geht natürlich nicht mit jeder Spitze von Weller.
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.