- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 15

Thema: Uhr: wait-Anweisung im Hauptprogramm und sectic

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.01.2007
    Ort
    westliches Pannonien
    Beiträge
    123
    Hallo!

    Das dumme ist nur dass sich das Ergebnis immer einen Tag später herausstellt, also die Fehlersuche dauert da ganz schön lang.
    Du kannst doch zu Debuggen die Uhrzeit auf z.B. 23:59:55 setzen und nur 5 sek warten,
    anstelle eines Tages, oder sehe ich das falsch?

    MfG
    Rone

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ich seh in dem Code oben kein "WAIT".
    Ohne (original) Programm ist über Programmprobleme schwer zu befinden
    Vergiss nicht, das Problem sitzt meistens VOR dem Bildschirm
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    Zitat Zitat von PicNick Beitrag anzeigen
    Ich seh in dem Code oben kein "WAIT".
    Ohne (original) Programm ist über Programmprobleme schwer zu befinden
    Vergiss nicht, das Problem sitzt meistens VOR dem Bildschirm
    Das Programm sieht sehr sehr schlimm aus. Ich bin Anfänger.
    Das Programm hat eine längere Geschichte, und ist kompliziert, laienhaft und herumgebastelt, ich denke das würde großes Haarsträuben bei den Profis auslösen.
    Das wollte ich euch erstmal ersparen
    Ich müsste da schon noch wenigstens etwas Kosmetik betreiben dass ich es hier reinstelle, was ich vielleicht noch machen werde.

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Versuche das nötigste zu einem kleinen Testprogramm zusammenzufügen.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    So, jetzt kommen wir der Lösung näher.
    Ich hab den Teil isolieren können und den Fehler reproduziert:
    Code:
    Do
    
    Cls
    Locate 1 , 1
    Lcd S
    Locate 2 , 1
    Lcd "Zeit " ; Time$
    Cursor Off
    Waitms 50
    
    
    
    Loop
    
    
    Sectic:
    S = S + 1                                                   'Sekunden-Tageszähler
    If Time$ = "00:00:00"then
    S = 0
    Time$ = "00:00:03"                                          'Kompensation Uhrenquarz
    End If
    Return
    So funktioniert die Rückstellung.

    Allerdings, wenn ich im Display die Anzeige von time$ weglasse, dann funktioniert es nicht mehr!
    Das ist der springende Punkt!
    Aber erklären kann ichs nicht. Es muss wohl tatsächlich wie Vitis schon geschrieben hat mit dem Stringvergleich zu zun haben.
    Er funktioniert, wenn gleichzeitig time$ im Display angezeigt wird und ansonsten funktioniert es nicht !?!

    Wie kann ich diese Problem lösen, ohne time$ im Display anzeigen zu müssen?

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    51
    Beiträge
    2.253
    hmmm ... wenn du über einen zweiten String gehst könnts gehen, aber das ist nur ne Spekulation ... also

    dim tempstring as string*8

    tempstring=time$
    if tempstring="00:00:00" then
    ' irgendwas
    endif
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    54
    Beiträge
    765
    Wozu jedesmal Cursor off?

    Am besten ohne waitms arbeiten.
    Du kannst S in einer anderen Variablen zwischenspeichern und wenn S geändert wurde das Display aktualisieren. Außerdem zählst Du jede Sekunde S hoch, da brauchst Du nicht Time$ vergleichen
    Code:
    Cursor Off
    dim s_alt as long
    const sTag =60*60*24
    Do
    if s <> salt then    
       salt=s
       Cls    
       Locate 1 , 1    
       Lcd S    
       Locate 2 , 1    
       Lcd "Zeit " ; Time$ 
    end if 
    Loop   
    Sectic: 
    incr s                                                   'Sekunden-Tageszähler
    if s=stag then
        S = 0 
       Time$ = "00:00:03"                                          'Kompensation Uhrenquarz 
    End If 
    Return
    Geändert von peterfido (14.06.2011 um 16:24 Uhr)
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    Zitat Zitat von Vitis Beitrag anzeigen
    hmmm ... wenn du über einen zweiten String gehst könnts gehen, aber das ist nur ne Spekulation ... also

    dim tempstring as string*8

    tempstring=time$
    if tempstring="00:00:00" then
    ' irgendwas
    endif
    Ja, genau so geht es , ich danke dir.
    Da kann man mal sehen, wie man fehlgeleitet werden kann. Weil ich für die Displayanzeige Seite 2 statt 50ms 500ms hatte, glaubte ich dass dies der Grund sein müsste.
    Aber dass ein anderer Displayinhalt (genauer: ob time$ angezeigt wird oder nicht) doch tatsächlich die Ursache war, dass es einmal ging und einmal nicht, das hätte ich doch wirklich nicht vermutet.

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    Zitat Zitat von Rone Beitrag anzeigen
    Hallo!



    Du kannst doch zu Debuggen die Uhrzeit auf z.B. 23:59:55 setzen und nur 5 sek warten,
    anstelle eines Tages, oder sehe ich das falsch?


    MfG
    Rone
    ja, hast schon recht das muss ich wohl so machen. Es liegt wohl tatsächlich nicht an den waitms, weil heute ging es wieder nicht.
    Ich muss jetzt weiter suchen und das werde ich so machen.

Ähnliche Themen

  1. Hauptprogramm schleife fängt woanders an ?
    Von Tredory im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 21.02.2009, 21:43
  2. Wait-Anweisung durch Interrupt unterbrechen?
    Von CapSob im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 18
    Letzter Beitrag: 05.06.2008, 10:30
  3. [erledigt] globale Variable in ISR ändern + im Hauptprogramm
    Von grumpf im Forum C - Programmierung (GCC u.a.)
    Antworten: 29
    Letzter Beitrag: 11.02.2008, 12:53
  4. Großes Hauptprogramm und Debounce
    Von PCMan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 08.10.2006, 22:14
  5. Problem Timer <-> Hauptprogramm
    Von darxon69 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 12.02.2006, 12:41

Berechtigungen

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

LiFePO4 Speicher Test