Ja genau so mein ich das.Hä, meinst du ich soll in Excel ne Tabelle mit den Berechnungen erstellen und diese dann im Programmcode einbinden?! Ich hab ehrlich gesagt keine Ahnung wie das gehn soll! Aber trotzdem danke für den Vorschlag.
Du entwickelst also mit EXCEL eine Formel, die Dir für jeden möglichen A/D Wert einen dB Wert errechnet.
Die Spalte für den dB Wert (aus EXCEL heraus) kopierst Du dir in deine Anwendung (STRG-C, STRG-V) in eine Fix Variable in AVR-GCC.
In Code Vision geht das so:
flash signed int si_dbwerte[1024]={deine kopierten Werte mit , getrennt };
Als dB Werte würde ich das 10 oder 100 fache des reellen dB Wertes benutzen und die Kommas erst bei der Ausgabe einsetzen, somit kriegst du eine Auflösung von 0,1 bzw 0,01 dB und das Ganze passt auch noch in eine int Variable inklusive Vorzeichen.
Allerdings belegt eine int Variable 2 Byte, das bedeutet die Tabelle wird 2048Bytes brauchen. Wenn dir eine Auflösung von 1dB reicht gehen die Werte noch in einen Char, dann hat die Tabelle 1024 Byte.
Da der Controller die Werte dann nicht nach jedem neuen Messzyklus berechnen muß sollte diese Methode auch ziemlich schnell laufen und Du kommst ohne Gleitkommazahlen (float) aus, was deinem Controller auch gefallen dürfte - Das hatte ich aber schon mal geschrieben.
Ein bischen Arbeit dürftest Du nur noch bei der Formattierung der Tabelle kriegen, damit das im Programm sauber ausschaut.
Lesezeichen