-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Finde Fehler nicht

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.05.2012
    Beiträge
    22

    Finde Fehler nicht

    Anzeige

    Hallo ich habe kleines Bascom Progamm geschrieben und finde den Fehler nicht. Ich habe an ein Baby Orangutanboard einen Hallsensot an Int0 angeschlossen. Nach Minute 1 fängt LED zu leuchten an und schaltet wie gewünscht nach 10 Sensorimpulsen ab. Das LED sollte aber nach Minute 2 wieder anfangen zu leuchten, aber hier liegt das Problem. Bin Anfänger und befürchte ich habe eien Denkfehler. Ausserden ist die Timereistellung auch noch nicht richt , eine Minute dauert mit dieser Einstellung nur ca 30 sec. Aber das ist nicht so wild


    Code:
    'Bascom Hallsensor test
    
    $regfile = "m328pdef.dat"
    $crystal = 20000000                                         'Quarzfrequenz
    $hwstack = 32
    $framesize = 64
    $swstack = 32
    
    
    
    Config Pind.1 = Output
    
    
    
    'Timer und der Teiler festlegen 10ms
    Config Timer0 = Timer , Prescale = 1024
    On Timer0 Timer_irq
    Const Timervorgabe = 175
    Config Int0 = Rising
    Enable Int0
    
    
    
    
    Enable Interrupts
    
    Dim Hallimpuls As Integer
    Dim Cnt As Byte
    Dim Sekunde As Byte
    Dim Minute As Byte
    Dim Stunde As Byte
    Dim Sekunde_last As Byte
    
    
    Hallimpuls = 0
    Stunde = 0
    Minute = 0
    Sekunde = 0
    Enable Timer0
    
    
    
    Do
    
    
    
    
          ' 1. Minute
            If Stunde = 0 And Minute = 1 Then Gosub Led
          ' 2. Minute
            If Stunde = 0 And Minute = 3 Then Gosub Led
    
    
    
    Loop
    
    
    
    Led:
         Hallimpuls = 0
         On Int0 Zaehlen
         If Hallimpuls = 0 Then
         Toggle Portd.1
    
          Do
    
          Idle
          Loop Until Hallimpuls = 10
        Else
    
         Reset Portd.1
    End If
    Return
    
    
    
    
    
    Zaehlen:
    
    Incr Hallimpuls
    
    Return
    
    
    Timer_irq:
    Timer0 = Timervorgabe
    
       Incr Cnt
    
        If Cnt = 50 Then
           Portb.6 = 0
        End If
    
        If Cnt = 100 Then
           Portb.6 = 1
    
           Sekunde = Sekunde + 1
           If Sekunde = 60 Then
              Sekunde = 0
              Minute = Minute + 1
              If Minute = 60 Then
                 Minute = 0
                 Stunde = Stunde + 1
                 If Stunde = 24 Then
                    Stunde = 0
                 End If
              End If
           End If
           Cnt = 0
        End If
    Return
    Ich hoffe jemand kann mir helfen !!!
    Geändert von radbruch (01.06.2012 um 19:22 Uhr) Grund: Bitte Code-Tags verwenden

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609
    Zitat Zitat von hunikuni Beitrag anzeigen
    Code:
          ' 1. Minute
            If Stunde = 0 And Minute = 1 Then Gosub Led
          ' 2. Minute
            If Stunde = 0 And Minute = 3 Then Gosub Led
    Minute = 3 ???

    Punkt 2: Ersetz mal:

    If Cnt = 100 Then durch If Cnt = 200 Then
    Geändert von Tido (01.06.2012 um 19:51 Uhr)
    MfG
    Tido

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

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.05.2012
    Beiträge
    22
    Danke für die schnelle Antwort !! cnt auf 200 funktioniert gut. Aber mein Hauptproblem, daß das Led nach 2 Minuten nicht wieder das Leuchten beginnt besteht weiter. !!!

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609
    Du schreibst ja auch if minute = 3 und nicht if minute= 2...
    MfG
    Tido

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

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    20.05.2012
    Beiträge
    22
    Hab ich auch auf 2 geändert, fängt aber weder nach 2 noch nach 3 Minuten an zu leuchten.

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609
    Das liegt daran, dass dein Programm in der 2. Do-Loop-Schleife hängt.

    Erklärung folgt:

    Nach deinen 10 Impulsen wird die Sub LED verlassen. Da deine Bedingung "if stunde=0 and minute=1" im nächsten Programmdurchlauf wieder war ist, springt er wieder zu LED.
    Dort macht er dir mit "toggle LED" die LED aus und wartet auf 10 Impulse (die die ihm nicht gibst, da du auf minute=2 wartest).
    MfG
    Tido

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

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

    Code:
    'Bascom Hallsensor test
    
    $regfile = "m328pdef.dat"
    $crystal = 20000000                                         'Quarzfrequenz
    $hwstack = 32
    $framesize = 64
    $swstack = 32
    
    
    
    Config Pind.1 = Output
    
    
    
    'Timer und der Teiler festlegen 10ms
    Config Timer0 = Timer , Prescale = 1024
    On Timer0 Timer_irq
    Const Timervorgabe = 175
    Config Int0 = Rising
    Enable Int0
    
    
    
    
    Enable Interrupts
    
    Dim Hallimpuls As Integer
    Dim Cnt As Byte
    Dim Sekunde As Byte
    Dim Minute As Byte
    Dim Stunde As Byte
    Dim Sekunde_last As Byte
    Dim Minute_last as Byte
    
    
    Hallimpuls = 0
    Stunde = 0
    Minute = 0
    Sekunde = 0
    Enable Timer0
    
    
    
    Do
    
    
    
    
          If Stunde = 0 And Minute <> Minute_last Then Gosub Led
    
    
    
    Loop
    
    
    
    Led:
         Hallimpuls = 0
         Portd.1 = 1'LED an
         On Int0 Zaehlen
         
    
          Do
    
          Idle
          Loop Until Hallimpuls = 10
       Portd.1 = 0'LED aus
    minute_last = minute
    Return
    
    
    
    
    
    Zaehlen:
    
    Incr Hallimpuls
    
    Return
    
    
    Timer_irq:
    Timer0 = Timervorgabe
    
       Incr Cnt
    
        If Cnt = 50 Then
           Portb.6 = 0
        End If
    
        If Cnt = 100 Then
           Portb.6 = 1
    
           Sekunde = Sekunde + 1
           If Sekunde = 60 Then
              Sekunde = 0
              Minute = Minute + 1
              If Minute = 60 Then
                 Minute = 0
                 Stunde = Stunde + 1
                 If Stunde = 24 Then
                    Stunde = 0
                 End If
              End If
           End If
           Cnt = 0
        End If
    Return
    Löst zwar wahrscheinlich dein Problem, hat aber weitere Fallstricke.
    MfG
    Tido

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

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    20.05.2012
    Beiträge
    22
    Danke werd ich morgen ausprobieren. Wollte aber am ende der Entwicklung Motoren zu einer bestimmten Zeit (z.B 1h23m)einschalten und nach einer Bestimmten Anzahl an Umdrehungen ( z.B. 20) wieder ausschalten, nach einer bestimmten Zeit ( z.B. 3h56) wieder einschalten und nach 20 Umdrehungen wieder ausschalten usw...

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609
    Dann setz dir in der Sub ne Variable auf 1 und lösche sie in der irq wieder, wenn sich die minute ändert. Und den "gosub" führst du nur aus wenn variable=0. So ist sichergestellt, dass die sub nur einmal pro minute aufgerufen wird.
    MfG
    Tido

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

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    20.05.2012
    Beiträge
    22
    Hallo danke für die Hilfe hat leider nicht den gewünschten Erflog gebracht !!
    Geändert von hunikuni (02.06.2012 um 22:18 Uhr)

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. Hilfe...finde die fehler nicht heraus
    Von Kuwe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 13
    Letzter Beitrag: 21.04.2010, 21:29
  2. Antworten: 4
    Letzter Beitrag: 08.01.2008, 20:03
  3. Antworten: 29
    Letzter Beitrag: 07.01.2008, 18:20
  4. ADC - Ich finde den/die Fehler nicht
    Von Christoph2 im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 07.08.2007, 19:34
  5. AVR 90S2313 Problem, und finde nicht den Fehler!
    Von Alex20q90 im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 01.05.2005, 14:20

Berechtigungen

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