Hallo, folgende Vorgehensweisen sind doch gleichwertig: 8 Ergebnisse eines 12Bit ADC aufsummieren, durch 8 dividieren und dann mit Konstanten vergleichen oder 8 Ergebnisse eines 12Bit ADC aufsummieren, und dann mit 8 facher Konstante vergleichen? Also z.B.: unsigned int wAdcSum; if (wAdcSum / 8 > MAX_XXX) { ... } if (wAdcSum / 8 < MIN_XXX) { ... } gleichwertig zu: if (wAdcSum > MAX_XXX * 8) { ... } if (wAdcSum < MIN_XXX * 8) { ... } Bei der 2.Methode habe ich doch auch einen "Mittelungseffekt"? Steh im Moment ein wenig aufm Schlauch ... Bin für klärende Worte dankbar :-)
Urlauber schrieb: > 8 Ergebnisse eines 12Bit ADC aufsummieren, > durch 8 dividieren und dann mit Konstanten vergleichen Hier wird das ADC-Ergebnis abgerundet > oder > 8 Ergebnisse eines 12Bit ADC aufsummieren, > und dann mit 8 facher Konstante vergleichen? Hier nicht. Die Wahrscheinlichkeit, dass der ADC-Wert größer ist als die Konstante, ist also im ersten Fall größer. Grüße, Peter
Peter Roth schrieb: > Die Wahrscheinlichkeit, dass der ADC-Wert größer ist als die Konstante, > ist also im ersten Fall größer. In dem Fall nicht, weil der Vergleichswert nicht jeden beliebigen Wert annehmen kann, sondern nur das 8 fache des Grenzwertes. Die beiden Methoden sind IMHO gleichwertig.
Es gibt schon einen Unterschied. Nehmen wir an, die Konstante ist 0x0100, die Messwerte sind sieben mal 0x101 und einmal 0x100. Aufsummiert also 0x0807. Vergleiche ich das mit der achtfachen Konstante (0x0800) ist das größer. Dividiere ich hingegen , kommt 0x100 als "Mittelwert" der Messungen heraus und das ist nicht mehr größer. Der Vergleich ">" wie in dem Beispiel ist also im ersten Fall wahr, im zweiten falsch.
Ok, if ((wAdcSum & 0xFFF8) > MAX_XXX * 8) { ... } wäre dann also zur 1. Methode gleichwertig. Das bedeutet wohl, das die 2. Methode vielleicht sogar genauer ist, weil Brüche nicht verlorengehen. Z.B. so: if (wAdcSum > MAX_XXX * 8 + 4) { ... } Ist nur fraglich ob das sinnvoll ist? Danke an allen die geantwortet haben. Lg Gerhard
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.