-
        

Ergebnis 1 bis 4 von 4

Thema: Zeit messen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2006
    Beiträge
    13

    Zeit messen

    Anzeige

    Hallo,

    ich versuche ein Program zu schreiben das nach 20 Minuten seinen Zustand ändert. Das ganze will ich nicht einfach mit wait machen, sondern in dem ich die vergangene Zeit messe. Etwa in der Form.

    Dim Laststate as Long

    Laststate = now()

    do
    if now() - Laststate > 1200 then
    'mach was
    end if
    loop

    Ich verwenden einen Tiny 2313 ohne externen Quarz.

    Ich habe bereits mehrfach die Funktionsreferenz gelesen und viele Funktionen ausprobiert (syssec(), getsecofday()), die Beispiele die bei Bascom dabei sind ausprobiert, mit config Clock rumexperimentiert...

    Jedesmal stelle ich fest das die Uhr überhaupt nicht läuft, sie schlicht nicht weiterzählt.

    Im Netz fand ich über dieses Thema fast gar nix. Entweder ist dieses Thema so trivial und ich blicks nicht, oder so etwas wird selten gemacht.

    Den Hinweis in der Bascom Funktionsreferenz bezüglich des Externen Quarzes habe ich nicht verstanden. Ich kann doch mit dem internen Takt und z.B. wait ziemlich genau einen Zeitabstand warten!? Sollte da nicht auch eine ungefähre Zeitmessung drin sein?

    Ich will keine exacte Quarz Uhr bauen, ich möchte einfach nur 20 Minuten warten ohne die Hauptschleife zu blockieren. Eine Abweichung von bis zu einer Minute währe ohne weiteres akzeptabel.

    Im Moment überlege ich so etwas wie:

    Dim Ticks as Long

    do
    ' do something
    waitms 500
    Ticks = Ticks + 1
    done

    zu benutzen. Gibts etwas eleganteres?

    Tom.

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    14.09.2005
    Alter
    61
    Beiträge
    77
    Mal vorausgesetzt der Controller läuft mit 1 Mhz und du braust den Timer1 nicht wo andres würde ich es so machen.

    Der Timer macht jede Sekunde eine IRQ und erhöht den Zähler um 1. Bei 1200 Sekunden= 20 Minuten (mache deine Arbeit).

    Code:
    $regfile = "m16def.dat"
    $crystal = 1000000
    
    Dim Sekunden As Integer
    
    Config Timer1 = Timer, Prescale = 64
    
    On Timer1 Timer_irq
    Const Timervorgabe = 49911
    Enable Timer1
    Enable Interrupts
    Do
    If Sekunden => 1200 Then
       Print "20 Sekunden "
       Sekunden = 0
       End If
    Loop
    
    Timer_irq:
    Timer1 = Timervorgabe
    Sekunden = Sekunden + 1
    Return
    mfg
    Guy

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2006
    Beiträge
    13
    Danke für den Tip!

    Hilft mir weiter.

    Gibt es eine Möglichkeit eine echte Uhr innerhalb von Bascom zu haben? Gibt es dazu evtl. Doku im Netz? Ich hab nix gefunden.

    Tom.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    mann nehme einen 32,768 KHz Quarz und hänge ihn an TOSC1 und 2,
    schon steht Dir in Bascom die Clock - Funktion zur verfügung,
    die auch relativ (aber nur relativ) genau ist. 2-4 Sekunden Abweichung
    am Tag sind dann noch möglich.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Berechtigungen

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