Also ich programiere Gerade an einem ATTiny13 herum und hab da noch 2 grundlegende Fragen: 1. Drückt mich schon sehr lange und ich finds nirgends: ist wohl zu selbstverständlich. Wenn da steht "the SE bit in MCUCR must be written to logic one" bedeutet das ich muss ne "1" reinschreiben oder? das logic irritiert mich so. Also beispiel: MCUCR |= (1<<SE); (Das ist auf Seite 30 im Datenblatt. Punkt 7.1, direkt unter der Tabelle.) 2. Ferner auf seite 30 in Punkt 7.1 steht eine Fußnote unter der Tabelle. Diese sagt "For INT0, only level interrupt." Was ist ein level interrupt? Und gehört der Timer Overflow dazu?
1) korrekt 2) ein Levelinterupt tritt auf solange eine bestimter Pegel (high oder low) anliegt ein Pegelinterupt tritt (einmalig) bei einme Wechsel von High nach Low (oder low nach high) auf.
>2) ein Levelinterupt tritt auf solange eine bestimter Pegel (high oder >low) anliegt ein Pegelinterupt tritt (einmalig) bei einme Wechsel von >High nach Low (oder low nach high) auf. Level: englisch für "Pegel". Was Läubi meint, heißt Flankeninterrupt (englisch: edge triggered)
Hmm OK. Ich verstehe das jetzt mal so: Ein Pegelinterrupt ist z.B. ein gesetztes Bit. Dieses bleibt dauerhaft gesetzt und kann daher auch im Sleepmode erkannt werden. Ein edge interrupt ist nur eine kurzzeitige Flanke und wird daher nicht erkannt. Daraus folgere ich, dass ein Timer Overflow zu den level interrupts gehört da er ja ein Bit setzt und damit einen konstanten Pegel hält bis das Bit gelöscht wird. Richtig?
Ok Frage hat sich erledig. Da ja der Timer/Counter an CLKio hängt und diese nur im idle-mode weitettacktet, kommt auch nur der idle mode in Frage. Alle anderen Sleepmodes in denen die Frage relevant wäre scheiden also aus.
gast wrote: > Hmm OK. > Ich verstehe das jetzt mal so: > Ein Pegelinterrupt ist z.B. ein gesetztes Bit. Dieses bleibt dauerhaft > gesetzt und kann daher auch im Sleepmode erkannt werden. Ein edge > interrupt ist nur eine kurzzeitige Flanke und wird daher nicht erkannt. > Daraus folgere ich, dass ein Timer Overflow zu den level interrupts > gehört da er ja ein Bit setzt und damit einen konstanten Pegel hält bis > das Bit gelöscht wird. Richtig? Nein. "Level Interrupt" bezieht sich ausschließlich auf die externen Interrupts. Es gibt (das haben andere oben schon mehrfach geschrieben) bei den externen Interrupts 2 Möglichkeiten, nämlich flankengetriggert ("edge triggered", auch ereignisgetriggert genannt) und pegelgetriggert ("level triggered", auch als zustandsgetriggert bezeichnet). Bei einem flankengetriggerten Interrupt wird das Interrupt-Flag bei einem Pegel- Wechsel (also von 0 auf 1 oder umgekehrt) gesetzt. Wenn das Flag gelöscht wird, dann wird es erst wieder gesetzt, wenn die nächste entsprechende Flanke (Pegelwechsel) auftritt. Bei einem pegelgetriggerten Interrupt ist die Bedingung für das Setzen des Interrupt-Flags ein betimmter Pegel an dem entsprechenden Pin. D.h., wenn an dem Pin z.B. Low-Pegel (logisch 0) anliegt, dann wird das Flag gesetzt. Wenn das Flag gelöscht wird, der Low-Pegel am Pin aber immer noch da ist, wird das Flag sofort wieder gesetzt. Im ersten Fall wird auf ein Ereignis reagiert. Mit einem solchen Interrupt kann man z.B. zählen. Im zweiten Fall wird auf einen Zustand getriggert. Damit kann man nicht sinnvoll zählen. Für die Auswertung von ereignisgetriggerten Interrupts benötigt der µC i.d.R. zur Synchronisation einen Takt (bei sog. synchronen Interrupts). Wenn dieser aber deaktiviert ist (sleep-Modus), dann können keine Ereignisse ausgewertet werden, weshalb INT0 in dem Modus zum Aufwecken nur als Pegel-Interrupt funktioniert. Für pegelgetriggerte Interrupts wird kein Takt benötigt. "Takt" schreibt man übrigens immer noch ohne "c" vor dem "k"!
Aha ja jetzt glaube hab auch ich das verstanden. Vielen Dank. Ja das mit dem Takt ist mir auch aber leider zu spät aufgefallen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.