Ich lass es auch nur im Simulator laufen und bei mir kommt nur murks raus.
Code:
$regfile = "m168def.dat"
$crystal = 3686400
$baud = 115200 'Bootloader Baud = 115200
$hwstack = 96
$swstack = 96
$framesize = 96
'***
Dim Filter1 As Byte : Filter1 = 5
Dim Filter2 As Byte : Filter2 = 100 - Filter1
Dim Sensor_x As Integer : Sensor_x = 1000
Dim Sensor_y As Integer : Sensor_y = 2000
Dim Sensor_z As Integer : Sensor_z = 3000
Dim Ergebnis(3) As Integer
Dim Temp(2) As Long
'****
Declare Function Filter_x(byval Ergebnis() As Integer , Byval Sensor_x As Integer) As Integer
Declare Function Filter_y(byval Ergebnis() As Integer , Byval Sensor_y As Integer) As Integer
Declare Function Filter_z(byval Ergebnis() As Integer , Byval Sensor_z As Integer) As Integer
Do
Ergebnis(1) = Filter_x(ergebnis(1) , Sensor_x)
Ergebnis(2) = Filter_y(ergebnis(2) , Sensor_y)
Ergebnis(3) = Filter_z(ergebnis(3) , Sensor_z)
Print
Sensor_x = Sensor_x + 1
Sensor_y = Sensor_y + 2
Sensor_z = Sensor_z + 3
Loop
Function Filter_x(byval Ergebnis() As Integer , Byval Sensor_x As Integer) As Integer
'Local Temp(2) As Long
Local Filter_out As Integer
Temp(1) = Sensor_x * Filter1
Temp(2) = Ergebnis(1) * Filter2
Temp(2) = Temp(2) + Temp(1)
Temp(1) = Temp(2) / 100
Filter_out = Temp(1)
Print "Filter 1 Rohwert " ; Sensor_x ; " Temp(1) " ; Temp(1) ; " Temp(2) " ; Temp(2) ; " Filter_out " ; Filter_out
Filter_x = Filter_out
End Function
Function Filter_y(byval Ergebnis() As Integer , Byval Sensor_y As Integer) As Integer
'Local Temp(2) As Long
Local Filter_out As Integer
Temp(1) = Sensor_y * Filter1
Temp(2) = Ergebnis(2) * Filter2
Temp(2) = Temp(2) + Temp(1)
Temp(1) = Temp(2) / 100
Filter_out = Temp(1)
Print "Filter 2 Rohwert " ; Sensor_x ; " Temp(1) " ; Temp(1) ; " Temp(2) " ; Temp(2) ; " Filter_out " ; Filter_out
Filter_y = Filter_out
End Function
Function Filter_z(byval Ergebnis() As Integer , Byval Sensor_z As Integer) As Integer
'Local Temp(2) As Long
Local Filter_out As Integer
Temp(1) = Sensor_z * Filter1
Temp(2) = Ergebnis(3) * Filter2
Temp(2) = Temp(2) + Temp(1)
Temp(1) = Temp(2) / 100
Filter_out = Temp(1)
Print "Filter 3 Rohwert " ; Sensor_x ; " Temp(1) " ; Temp(1) ; " Temp(2) " ; Temp(2) ; " Filter_out " ; Filter_out
Filter_z = Filter_out
End Function
Das ist mein kompletter Code
Code:
Filter 1 Rohwert 1000 Temp(1) 50 Temp(2) 5000 Filter_out 50
Filter 2 Rohwert 2000 Temp(1) 2000 Temp(2) 200000 Filter_out 2000
Filter 3 Rohwert 3000 Temp(1) 2050 Temp(2) 205000 Filter_out 2050
Filter 1 Rohwert 1001 Temp(1) 97 Temp(2) 9755 Filter_out 97
Filter 2 Rohwert 2002 Temp(1) 2002 Temp(2) 200200 Filter_out 2002
Filter 3 Rohwert 3003 Temp(1) 2052 Temp(2) 205205 Filter_out 2052
Filter 1 Rohwert 1002 Temp(1) 142 Temp(2) 14225 Filter_out 142
Filter 2 Rohwert 2004 Temp(1) 2004 Temp(2) 200400 Filter_out 2004
Filter 3 Rohwert 3006 Temp(1) 2054 Temp(2) 205410 Filter_out 2054
Das kommt als Ausgabe...
Ich benutze Bascom 2.0.8.0
Lesezeichen