- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: AnfängerProblem mit Timer

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.09.2005
    Beiträge
    32

    AnfängerProblem mit Timer

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute ich habe ein Problem welches ich nicht allein lösen konnte. Bei einem bestimmten Ereignis soll ein Timer ausgelöst werden der nach ca 2 sec zu einer Gosubroutine geht. Habe alles versucht und meinem Namen (LOOSER) alle Ehre gemacht. kann mir vielleicht jemand einen Tip geben ?

    If A = 1 Then
    (jetzt soll der Timer0 loslegen und wenn inerhalb dieser 2 sec ein weiteres Zeichen bei INPUTBIN A kommt soll es mit GOSUB weitergehen)

    Ich habs nicht geschafft und bitte hier um HILFE !!!

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.07.2004
    Ort
    Mammendorf
    Alter
    67
    Beiträge
    1.062
    Hallo "Looser"

    Hast du berücksichtigt mit welcher Frequenz welcher Timer getaktet wird und welchen Prescaler du eingestellt hast, damit der Timer überhaupt 2 Sekunden laufen kann ohne seinen Wertevorrat erschöpft zu haben?
    MfG

    Hellmut

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.09.2005
    Beiträge
    32
    Danke für deine Antwort aber das es genau 2 sec läuft ist nicht so wichtig. Aber der eigentliche Programaufbau mit Timer bereitet mir Schwierigkeiten. Gibt es vielleicht ein einfaches Beispiel für mein Problem ? [-(

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Gibt es vielleicht ein einfaches Beispiel für mein Problem ?
    Mit der Suche im Forum wirst du viele Beispiele und Anwendungsfälle finden.
    https://www.roboternetz.de/phpBB2/search.php

    Es gibt auch ein Programm (RNAVR) was ir einen fertigen Code für Bascom liefert. Leider finde ich auf anhieb keinen Link dazu. Aber irgendwo in Downloadbereich muss es das auch geben.
    https://www.roboternetz.de/phpBB2/dload.php

    If A = 1 Then
    (jetzt soll der Timer0 loslegen und wenn inerhalb dieser 2 sec ein weiteres Zeichen bei INPUTBIN A kommt soll es mit GOSUB weitergehen)
    If A = 1 Then Enable Timer1

    Ich hab's so noch nicht probiert, könnte aber klappen.

    Du solltest dir aber überlegen, ob für dein Anwendungsfall der Timer benötigt wird.
    Du kannst ja auch so Warteschleifen einfügen.
    Wait 2 'Pause von 2 Sekunden
    Waitms 2000 'Pause von 2000 Milisekunden.

    Also:
    If A = 1 Then Waitms 2000

    Und schon wird eine Pause eingelegt.
    Oder:

    If A = 1 Then
    Waitms 2000
    Gosub Unterprogramm
    End If

    Das wäre ja das was du haben wolltest.

    PS: Waitms erzeugt einen kleineren Code als Wait.

    Wann du einen Timer verwendest, kann das Programm in der Zeit noch weiter laufen. Wait(ms) wartet an der Stelle solange, bis die Zeit vorbei ist. Kommt halt immer drauf an, was grade günstiger ist und was gefordert wird.

    Und Hellmut's Rat solltest du berücksichtigen. Man kann die Zeiten nicht unendlich wählen. Die maximale Zeit ist abhänig von der Frequenz und vom gewählten Timer (0 oder 1 oder ...).
    Ein Trick wäre, wenn du 10 Sekunden haben willst, aber nur eine maximal möglich ist, in der Routine für den Timer eine Variable hochzählen zu lassen und wenn sie bei 10 ist, wieder auf 0 setzen und den Code für 10 Sekunden, der dann kommen soll, ausführen lassen.

    Es ist auch nicht immer günstig, in der Timerroutine in ein anderes SUB zu springen. Der Code könte auch in der Routine (ISR = Interrupt Service Routine, das SUB, das im Falle des Interrupts aufgerufen wird) stehen.

Berechtigungen

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

12V Akku bauen