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