- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 7 von 7

Thema: Function - liefert falsche Werte

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von Glühlampe Beitrag anzeigen
    Das kommt als Ausgabe...
    Ich benutze Bascom 2.0.8.0
    Hi,
    seltsam. Ich habe 2.0.7.5 Demo Version und bekomme in dem UART0 Window mit dem gleichen Program:
    Code:
    Filter 1 Rohwert1000 Temp(1) 50 Temp(2) 5000 Filter_out 50
    Filter 2 Rohwert1000 Temp(1) 100 Temp(2) 10000 Filter_out 100
    Filter 3 Rohwert1000 Temp(1) 150 Temp(2) 15000 Filter_out 150
    
    Filter 1 Rohwert1001 Temp(1) 97 Temp(2) 9755 Filter_out 97
    Filter 2 Rohwert1001 Temp(1) 195 Temp(2) 19510 Filter_out 195
    Filter 3 Rohwert1001 Temp(1) 292 Temp(2) 29265 Filter_out 292
    
    Filter 1 Rohwert1002 Temp(1) 142 Temp(2) 14225 Filter_out 142
    Filter 2 Rohwert1002 Temp(1) 285 Temp(2) 28545 Filter_out 285
    Filter 3 Rohwert1002 Temp(1) 427 Temp(2) 42770 Filter_out 427
    Ich bin im Augenblick ratlos, woran das liegen kann Habe noch ein WINXP SP3 laufen. Mir fallen auch keine Einstellungen in der IDE ein, die da Einfluß haben könnten. Melde mich, wenn mir noch was einfällt.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    30.06.2011
    Beiträge
    5
    Auch dein Bascom rechnet falsch
    Alle 3 Filter bekommen die selben Werte, somit sollte auch 3x das Gleiche rauskommen.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    STÖHN
    Da brauch ich jetzt mehr Zeit

    - - - Aktualisiert - - -

    Zitat Zitat von Glühlampe Beitrag anzeigen
    Auch dein Bascom rechnet falsch
    Alle 3 Filter bekommen die selben Werte, somit sollte auch 3x das Gleiche rauskommen.
    Die Sensorwerte waren unterschiedlich
    Code:
    Dim Sensor_x As Integer : Sensor_x = 1000
    Dim Sensor_y As Integer : Sensor_y = 2000
    Dim Sensor_z As Integer : Sensor_z = 3000
    Ich hab die mal alle auf 2000 geändert und bekomme:
    Code:
    Filter 1 Rohwert2000 Temp(1) 100 Temp(2) 10000 Filter_out 100
    Filter 2 Rohwert2000 Temp(1) 100 Temp(2) 10000 Filter_out 100
    Filter 3 Rohwert2000 Temp(1) 100 Temp(2) 10000 Filter_out 100
    
    Filter 1 Rohwert2001 Temp(1) 195 Temp(2) 19505 Filter_out 195
    Filter 2 Rohwert2001 Temp(1) 195 Temp(2) 19510 Filter_out 195
    Filter 3 Rohwert2001 Temp(1) 195 Temp(2) 19515 Filter_out 195
    
    Filter 1 Rohwert2002 Temp(1) 285 Temp(2) 28535 Filter_out 285
    Filter 2 Rohwert2002 Temp(1) 285 Temp(2) 28545 Filter_out 285
    Filter 3 Rohwert2002 Temp(1) 285 Temp(2) 28555 Filter_out 285
    Immer noch falsch?
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    30.06.2011
    Beiträge
    5
    gelöst, so geht es.

    Declare Function Filter(byval Filter_wert As Integer , Byval Raw_data As Integer) As Integer
    Ergebnis(1) = Filter(ergebnis(1) , Sensor_x)

    Der Name in der Declartion darf nicht der gleiche sein wie im Funktionsaufruf.
    So also nicht!
    Declare Function Filter(byval ergebnis(1) As Integer , Byval Raw_data As Integer) As Integer
    Ergebnis(1) = Filter(ergebnis(1) , Sensor_x)


    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
    
    '****
    
    Declare Function Filter(byval Filter_wert As Integer , Byval Raw_data As Integer) As Integer
    
    Do
    
     Ergebnis(1) = Filter(ergebnis(1) , Sensor_x)
     Ergebnis(2) = Filter(ergebnis(2) , Sensor_y)
     Ergebnis(3) = Filter(ergebnis(3) , Sensor_z)
    
     Print Sensor_x ; " " ; Sensor_y ; " " ; Sensor_z ; " * " ;
     Print Ergebnis(1) ; " " ; Ergebnis(2) ; " " ; Ergebnis(3)
    
     If Sensor_x < 2500 Then
       Sensor_x = Sensor_x + 11
       Sensor_y = Sensor_y + 11
       Sensor_z = Sensor_z + 11
     End If
    
    Loop
    
    
    Function Filter(byval Filter_wert As Integer , Byval Raw_data As Integer) As Integer
    
       Local Temp1 As Long
       Local Temp2 As Long
    
       Temp1 = Raw_data * Filter1
       Temp2 = Filter_wert * Filter2
       Temp2 = Temp2 + Temp1
       Temp1 = Temp2 / 100
    
       Filter = Temp1
    
    End Function

Ähnliche Themen

  1. DCF 77 liefert seltsame Werte
    Von Goldenflash im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 08.08.2011, 08:44
  2. ITG3200 an AVR liefert keine Werte
    Von robert_s im Forum Sensoren / Sensorik
    Antworten: 0
    Letzter Beitrag: 27.07.2011, 15:12
  3. ADS830 liefert komische werte
    Von robodriver im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 05.09.2007, 18:20
  4. Devantech SRF 10 US liefert seltsame Werte, kaputt?
    Von ACU im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 17.02.2007, 20:50
  5. PIC liefert keine genauen werte
    Von Mad Max im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 04.08.2006, 20:03

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test