-
        

Ergebnis 1 bis 3 von 3

Thema: BASCOM-Fehler oder was?

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609

    BASCOM-Fehler oder was?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Sorry Leute,

    aber ich stehe seit gestern mit meinem Programm auf Kriegsfuß.
    Es wertet das Summensignal eines RC-Empfängers aus.
    Das Problem ist, dass sich die Variable Offset(1) im laufenden Programm ändert, obwohl diese im Code gar nicht vorkommt.
    Die Variable nimmt bei jedem Aus- und Wiedereinschalten der Fernsteuerung einen anderen Wert ein. Hier mal der Code:


    Code:
    $regfile "m32def.dat"
    $framesize = 42
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    Config Timer0 = Timer , Prescale = 256                      'Timer0 auf 16µs/Takt, Überlauf bei ca. 4ms
    On Timer0 Sync
    Config Int0 = Falling
    Enable Interrupts
    On Int0 Flankenerkennung
    
    Dim Dummy As Byte                                           'enthält die Sync-Zeit
    Dim Kanal(8) As Byte                                        'muss direkt hinter Dummy dimensioniert werden!
    
    Dim Offset(7) As Byte
    Dim Channel As Byte
    Dim Fehler As Byte
    Dim Pruefsumme As Word
    
    Offset(1) = 0
    
    Do
    Gosub Messen
    
    Ausgabe:
    If Fehler > 0 Then
       Print "Datenfehler " ; Fehler
    Else
       Print "  " ; Kanal(1) ; "  " ; Kanal(2) ; "  " ; Kanal(3) ; "  " ; Kanal(4) ; "  " ; Kanal(5) ; "  " ; Kanal(6) ; "  " ; Kanal(7) ; " Offset(1): " ; Offset(1)
    End If
    
    Waitms 25
    Loop
    
    
    Flankenerkennung:                                           'fallende Flanke erkannt
    Kanal(channel) = Timer0                                     'Timerwert in Kanalvariable speichern
    Timer0 = 0                                                  'und Timer zurücksetzen
    Incr Channel                                                'auf den nächsten Kanalspeicher wechseln
    Return
    
    
    Sync:                                                       'Überlauf des Timers durch die Pause im Signal
    Channel = 0                                                 'das Sync-Signal vor dem ersten Kanal
    Fehler = 0                                                  'Fehlerspeicher löschen
    Return
    
    Messen:
    Timer0 = 0                                                  'Timer (Sync) zurücksetzen
    Enable Timer0                                               'und einschalten
    Enable Int0                                                 'Interrupt (Flanke) einschalten
    
    Waitms 40                                                   'Zeit für 2 Messungen
    
    Disable Int0                                                'Interrupt ausschalten
    Disable Timer0                                              'Timer ausschalten
    Channel = 0
    
    Fehlerpruefung:
    
    Pruefsumme = 0
    
    For Channel = 1 To 7
    If Kanal(channel) < 52 Or Kanal(channel) > 132 Then Fehler = Channel       'nur Kanalwerte von 52-132 gültig
    Pruefsumme = Pruefsumme + Kanal(channel)                    'alle Kanäle addieren
    Next Channel
    Pruefsumme = Pruefsumme + Dummy                             'Sync-Zeit zu der Kanalsumme addieren
    If Pruefsumme < 565 Then Fehler = 8                         'nur größere Prüfsumme gültig
    Return
    Ich hänge mal einen Screenshot der Ausgabe an. Bei Datenfehler 8 ist die Fernsteuerung ausgeschaltet.

    Weiß jemand, warum sich der Wert ändert?
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken summensignal.jpg  
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    53
    Beiträge
    1.080
    Könnte es sein, das dir das Programm in der ISR Flankenerkennung den kanal soweit erhöht, das channel größer als 8 wird? Dein Offset-array liegt hinter dem Kanal-Array und wird dann vollgeschrieben.

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609


    Danke MeckPommER,

    das könnte sein. Bin momentan arbeiten, deshalb kann ich es erst morgen testen, aber ich denke, das ist das Problem!
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

Berechtigungen

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