- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 13

Thema: Watchdog Interrupt?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Als sehr einfach zu realisierende "Pi-mal-Daumen"-Zeitbasis, an die keine hohe Präzisionsforderung gestellt wird,
    ist der WD-Timer sehr gut geeignet. Die anderen Timer bleiben dann anderweitig nutzbar.

    Für die Attinys u.A. geht das auch ganz simpel:

    Config watchdog = 8000 'nach meiner Erfahrung läuft der wd-Timer damit schon los, auch ohne "start"-Befehl
    Set Wdtcr.wdie 'wd in Interrupt-Modus versetzen, statt reset-Modus


    If Wdtcr.wdif = 1 Then 'zeitintervall abgelaufen
    set Wdtcr.wdif ' das wdif-flag sofort wieder löschen, indem man es setzt
    Incr wd_tick
    end if


    Damit wird die Zählvariable "wd_tick" jedesmal wenn das wdif-flag gesetzt wird incrementiert,
    und das wdif_flag bis nach Ablauf des nächsten Zeit-Intervalls zurückgesetzt,
    ohne dass man eine WD-Interruptroutine aufrufen bzw. ausführen muss. (= Polling)

    Zu beachten ist, dass das vom Timer gesetzte wdif-flag dadurch gelöscht wird, dass man es setzt(!),
    also mit einer 1 beschreibt, obwohl es schon gesetzt ist.

    Man braucht hierbei auch keine 4-Takte-Sequenz einhalten, wie oft irrtümlich geschrieben wird.

    Dieses einfache Polling des Interrupt-Flags geht auch bei anderen Timern oder anderen Interruptquellen, wenn man die zeitraubenden Pushs und Pops der Interruptroutinen vermeiden will.
    Geändert von stemmy (20.02.2022 um 13:39 Uhr)

Berechtigungen

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

12V Akku bauen