Hallo,
ich habe folgendes Problem:
Ich bekomme Werte vom ADC(12bit), diese werden dann auf einen bestimmten bereich beschränkt (Da die Potis die Maximalwerte nicht erreichen) und ein offset abgezogen, sodass dann werte zwischen 0 und ca. 2900 (je nach kanal unterschiedlich).
Nun möchte ich die werte in dem Bereich in den Bereich 0-1023 (10bit) Packen.
Die erste Idee war (natürlich) den Wert einfach mit einem float zu multiplizieren.
Allerdings hab ich immer jede menge geschichten gehört das float auf avrs so schlimm ist und so weiter.
Leider hab ich da keine Erfahrungswerte weil ich noch nie Floats auf nem AVR gebraucht hab.
Daher nun meine Frage: sind die wirklich so schlimm ?
Und wie lange (in takten) würd eine die Multiplikation einer 16 bit unsigned zahl mit einem float ungefähr dauern ?
Meine Zweite idee war dann (da ich die 16 ja eh nicht ausschöpfe) die zahl erst per multiplikation mit einem 8bit auf die vollen 16bit zu erweitern und dann per rightshift in die 10 bit zu rücken.
Allerdings kommt da bei meinem beispiel (maximalwert 2900, multi= 2^16/2900=22) ein maximalwert für die 10bit zahl von 996 raus, was nur 97% des werte bereichs entspricht.
Is es irgendwie möglich (mindestens) 99% genauigkeit hinzukriegen ohne das es zu rechenaufwendig wird ?
MFG Thalhammer