Hi, Der Name "C" kommt von casten.
probier' mal
float Volt = (float)Value * ADRef;
oft reicht das.
mfg robert
Hallo Leute,
habe zwar einen umweg gefunden wie es geht aber schon gerne wissen
warum es nicht geht.
das ist der code wie ertutCode:void GetBat(WORD Value) { float ADRef = 5 / 1.023; float Volt = Value * ADRef; Volt = Volt * 5.2941; Volt = Volt / 1000; // Berechnung Volt gemessen bei Ref von 5V // Mit Spannungsteiler 22k 5,1 k #ifdef DEBUG SendString("Batterie "); char buffer[20]; dtostrf(ADRef,2,10,buffer); SendString(buffer); SendString(" Volt: "); dtostrf(Volt,2,3,buffer); SendString(buffer); SendString("\r\n"); #endif // Das If grab an passen wenn mal die Akkus wirklich daran hängen if(Volt > 11) {
wenn ich es so schreibe kommt immer 0 raus warum ?Code:void GetBat(WORD Value) { float Volt = ((Value * 5 / 1023) * 5.2941); // Berechnung Volt gemessen bei Ref von 5V // Mit Spannungsteiler 22k 5,1 k #ifdef DEBUG SendString("Batterie "); char buffer[20]; dtostrf(ADRef,2,10,buffer); SendString(buffer); SendString(" Volt: "); dtostrf(Volt,2,3,buffer); SendString(buffer); SendString("\r\n"); #endif // Das If grab an passen wenn mal die Akkus wirklich daran hängen if(Volt > 11) {
Gruß[/quote]
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
Hi, Der Name "C" kommt von casten.
probier' mal
float Volt = (float)Value * ADRef;
oft reicht das.
mfg robert
Also rein Rechnerisch müsste es das selbe sein.
Mal gerade nen ganz anderer Punkt:
Könnte man doch von der Rechenzeit verkürzen. Da ja nur Punkt-Rechnung betrieben wird, könnte man das alles auf:float Volt = ((Value * 5 / 1023) * 5.2941);
Value*0,0259 zusammenrechnen.
Dann muss der µC nicht soviele Rechnungen machen.
MFG moritz
das ist richtig aber die zhak würde man dann überhaupt nich mehr verstehen
gibt einen großen grünen block.
aber das kann ich noch mal probieren.
Gruß
P: Meine Tochter (06.11.07) und https://www.carnine.de
M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken
Was der RCO sicher meint, ist, daß man solche Sachen den Precompiler VORHER ausrechnen läßt und nicht die MCU bei der Laufzeit
Schreib doch
#define MEIN_FAKTOR (5 / 1023 * 5.2941)
und rechne
float Volt = Value * MEIN_FAKTOR;
dann hast du beider, Doku und Performance
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
???das ist richtig aber die zhak würde man dann überhaupt nich mehr verstehen
Ja natürlich ist es so eleganter. Man könnte ja auch in einem kommentar daneben schreiben wie sich dieser Wert errchnet.dann hast du beider, Doku und Performance
MFG Moritz
"ZAHL"Zitat von RCO
Mach dir aber nix draus, ich muß bei der neuen deutschen Orthographie auch oft erst scharf nachdenken
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Sorry, normalerweise bin ich nicht der Typ, der sich wegen sowas beschwert, aber ich stand da echt auf dem Schlauch"ZAHL"
MFG Moritz
Versuch mal anstatt 5 / 1023
5.0 / 1023.0
sonst rechnet der Compiler mit ganzzahlen und die Kommstellen fallen weg.
Open Minds. Open Sources. Open Future
EIn Tip von einem alten Frontschwein: Wenn du willst, daß der Compiler irgendwas so oder so übersetzt, dann schreib es auch hin und verlaß dich nicht auf sie suggestive Wirkung von komma-null. Der eine Compiler fällt drauf rein, der andere nicht.
(float)5 / (float)1023
mfg robert
Lesezeichen