ja, ich verwende den SCNT für mehrere routinen - aber immer nur in EINER aktiv.Zitat von oberallgeier
zb. OPNDOOR: hier wird TSEC auf 5 sekunden timeout gesetzt. wenn nun der timeout tatsächlich eintritt (oder auch nicht) wird der timer wieder gestoppt, bevor DOORIMP und damit WAIT (mit str und stptmr) aufgerufen wird.
somit sehe ich keine möglichkeit von "nested interrupts" und auch keine doppelverwendung des registers von 2 routinen gleichzeitig.
richtig, aber diese routinen laufen NACHEINANDER ab.Zitat von oberallgeier
die WAIT routine wird nur über die routine DOORIMP aufgerufen. sonst nirgendwo. also auch nichts "nested".
in welcher ISR meinst du? es gibt deren nur 2: IMPULS und TMROVFZitat von oberallgeier
und beide haben kein rcall WAIT.
alle timerfunktionen, ob 1 oder 5 sekunden werden abgeschlossen und auch der timer gestoppt, bevor die nächste aufgerufen wird.
wenn du mir sagst, wie ich interrupts enablen kann OHNE den befehl SEI zu verwenden. soweit ich das datenblatt verstanden habe werden interrupts nur dann abgearbeitet, wenn das "I" bit (7, global interrupt enable) gesetzt ist, sonst wird zwar das interrupt bit des entsprechenden interrupts gesetzt, aber keine ISR ausgeführt. habe ich das falsch verstanden?Zitat von oberallgeier
halt, aber gerade jetzt fällt mir was ein/auf - ich stoppe zwar den timer aber mache kein CLI !!!
da mag was drin liegen ...
werde es am abend probieren.
aber nochmal: brauche ich das "I" bit on oder nicht zum ausführen der ISR?
noch eine frage ist aufgetaucht, die ich auf die schnelle dem datenblatt nicht zu entnehmen vermag:
was passiert, wenn der timer gestoppt und wieder gestartet wird?
werden seine internen register zurück gesetzt oder läuft er bei dem wert weiter, bei dem er gerade gestoppt wurde?
meine register TIM1 + TIM2 werden ja wieder neu gesetzt - bis auf eines: TIM2 sehe ich gerade!
werde das auch noch berichtigen und testen!!
Lesezeichen