www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fragen zu Datenblattangeben von ATTINY13


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Travelrec hat recht... :)

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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"!

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.