Forum: Mikrocontroller und Digitale Elektronik Fragen zu Datenblattangeben von ATTINY13


von gast (Gast)


Lesenswert?

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?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>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)

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Travelrec hat recht... :)

von gast (Gast)


Lesenswert?

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?

von gast (Gast)


Lesenswert?

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.

von Johannes M. (johnny-m)


Lesenswert?

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"!

von gast (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.