Hi!
Ich habe das Problem, dass zwei neue Sensoren von meinem Mega8 so einiges an Rechenleistung bzw. Speicherplatz abverlangen.
Es handelt sich hier um einen Lufttemperatur und -druck Sensor und einen Luftfeuchte Sensor.
Beim Druck/Temperatur Sensor müssen aus einem integrierten ROM elf Variablen ausgelesen werden und die eigentlichen Werte damit verrechnet werden.
Diese drei Funktionen brauchen bestimmt 40-50% vom Flash des Mega8 und die Berechnung dauert auch ne ganze Weile. Da ich gerne noch ein paar andere Sensoren und eine Funkübertragung einbauen wollte, brauche ich mehr Platz.Code:'Dim C(7) As Word, A(4) As Byte, Vas(3) As Single, Var(1) As Word, D2cs As Long Function Dut(byval D2 As Word) 'As Integer D2c5 = D2 - C(5) Vas(1) = D2c5 * D2c5 Vas(2) = Vas(1) / 16384 Var(1) = 2 ^ A(3) If D2 < C(5) Then Vas(2) = Vas(2) * A(2) Vas(2) = Vas(2) / Var(1) Vas(2) = D2c5 - Vas(2) Dut = Vas(2) Elseif D2 >= C(5) Then Vas(2) = Vas(2) * A(1) Vas(2) = Vas(2) / Var(1) Vas(2) = D2c5 - Vas(2) Dut = Vas(2) End If End Function Function Dbr(byval D1 As Word , Dutb As Integer) 'As Word Local Offset As Integer Local Sens As Integer Local Xb As Integer Var(1) = C(4) - 1024 Vas(1) = Var(1) * Dutb Vas(1) = Vas(1) / 16384 Vas(1) = Vas(1) + C(2) Vas(1) = Vas(1) * 4 Offset = Vas(1) Vas(1) = C(3) * Dutb Vas(1) = Vas(1) / 1024 Vas(1) = Vas(1) + C(1) Sens = Vas(1) Vas(1) = D1 - 7168 Vas(1) = Vas(1) / 16384 Vas(1) = Sens * Vas(1) Vas(1) = Vas(1) - Offset Xb = Vas(1) Vas(1) = Xb * 10 Vas(1) = Vas(1) / 32 Vas(1) = Vas(1) + C(7) Dbr = Vas(1) End Function Function Tbr(dutb As Integer) 'As Integer Vas(1) = Dutb * C(6) Vas(1) = Vas(1) / 65535 Vas(2) = 2 ^ A(4) Vas(2) = Dutb / Vas(2) Vas(3) = Vas(1) - Vas(2) Vas(3) = 250 + Vas(3) Tbr = Vas(3) End Function
Wie kann ich also am besten die Rechnungen umstellen, verändern, durch andere Rechenoperationen schlanker gestalten? Sind Local-Variablen hier besser geeignet als "Globale"?
Danke!
Basti
Lesezeichen