Minimale Dauer für ext. AVR Interrupt

Gast #4408830
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe eine (vermutlich) recht simple Frage, zu der ich im Datenblatt 
des ATMEGA16 nichts gefunden habe:

Wie lange muss ein high Signal vorhanden sein, damit ein externer 
Interrupt ausgelöst wird, wenn dieser auf 'rising edge' konfiguriert 
ist?

lg
Dennis
#4408862
Lesenswert?
• ▲
▼
Dietrich L. schrieb:
> "Note that recognition of falling or rising edge interrupts on INT0 and
> INT1 requires the presence of an I/O clock, described in “Clock Systems
> and their Distribution” on page 24."

Ergänzung:
Quelle:
http://www.atmel.com/images/atmel-8154-8-bit-avr-atmega16a_datasheet.pdf
Kapitel 13. (Seite 66)

Dennis schrieb:
> Soll heißen, das externe Signal muss eine (oder eine halbe?)
> clock-Periode anliegen?

Ich interpretiere den Text als eine Clock-Periode.

Gruß Dietrich
#4408967
Lesenswert?
• ▲
▼
Dietrich L. schrieb:
> Ergänzung:
> Quelle:
> http://www.atmel.com/images/atmel-8154-8-bit-avr-atmega16a_datasheet.pdf
> Kapitel 13. (Seite 66)
>
> Dennis schrieb:
>> Soll heißen, das externe Signal muss eine (oder eine halbe?)
>> clock-Periode anliegen?
>
> Ich interpretiere den Text als eine Clock-Periode.

Ich interpretiere ihn so, dass ein Takt anliegen muss, damit die 
Flankenerkennung überhaupt funktioniert. Wie lang ein Impuls sein muss, 
damit er noch erkannt wird, steht da erstmal nicht.
Gast #4409006
Lesenswert?
• ▲
▼
Rolf M. schrieb:

> Ich interpretiere ihn so, dass ein Takt anliegen muss, damit die
> Flankenerkennung überhaupt funktioniert.

Und das ist auch korrekt für INT0 und INT1 eines ATmega16. Es ist aber 
nicht korrekt für INT2. Der funktioniert asynchron.

> Wie lang ein Impuls sein muss,
> damit er noch erkannt wird, steht da erstmal nicht.

Das geben wichtige Grundgesetze der Informatik zumindest als Grenzwert 
vor. Abtastheorem. D.h.: die Untergrenze für eine zuverlässige Erkennung 
einer Flanke ist natürlich (etwas über) eine Periode der Abtastfrequenz. 
Und genau so steht es (vermutlich nicht ganz zufällig) auch im DB, 
identisches Originalzitat von Seite 68 (INT1) und 69 (INT0):

> If edge or toggle interrupt is selected, pulses that last longer than
> one clock period will generate an interrupt.

Für level-triggered hingegen:

> ...the level must be held until the completion of the currently
> executing instruction to generate an interrupt.

Oder anders ausgedrückt: Da die längsten Instruktionen eines Mega16 
(ret/reti) vier Takte lang sind: mindestens vier Takte.

Aber, wie oben schon gesagt: für INT2 läuft der Hase völlig anders. Der 
ist in seinem Verhalten eher mit den PCINT moderner AVRs zu vergleichen. 
Aber wie der Zufall so will, hat sich auch hier Atmel zu einer konkreten 
Aussage hinreißen lassen, nämlich in Tabelle 36 auf Seite 69 des DB:

     Typ Units
tINT 50  ns

@Dennis: Mein Gott, wo zum Teufel ist das Problem, einfach mal die zwei 
relevanten Seiten des DB SELBER zu lesen? Da steht doch ganz 
offensichtlich alles sehr eindeutig drin. Die Ausrede "nicht gefunden" 
lasse ich nicht gelten. Das ganze Kapitel zu den externen Interrupts ist 
beim Mega16 nur ganze drei Seiten lang. Du warst einfach zu faul, den 
Kram zu lesen. So sieht's aus!
Gast #4409011
Lesenswert?
• ▲
▼
c-hater schrieb:
> @Dennis: Mein Gott, wo zum Teufel ist das Problem, einfach mal die zwei
> relevanten Seiten des DB SELBER zu lesen? Da steht doch ganz
> offensichtlich alles sehr eindeutig drin. Die Ausrede "nicht gefunden"
> lasse ich nicht gelten. Das ganze Kapitel zu den externen Interrupts ist
> beim Mega16 nur ganze drei Seiten lang. Du warst einfach zu faul, den
> Kram zu lesen. So sieht's aus!

Diesen Absatz hättest nicht schreiben müssen, weil er:
-Niemandem hilft
-Du damit offenbar (wie so oft) Stunk provozieren willst
-Herauskehren möchtest, daß Du eben doch der Größte bist

Das aber ist Dir in unzähligen Beiträgen bis heute nicht gelungen. Laß 
es gut sein..
Gast #4409020
Lesenswert?
• ▲
▼
Vollkommen Entspannter schrieb:
> c-hater schrieb:
>> @Dennis: Mein Gott, wo zum Teufel ist das Problem, einfach mal die zwei
>> ...
>
> Diesen Absatz hättest nicht schreiben müssen, weil er:
> -Niemandem hilft
> -Du damit offenbar (wie so oft) Stunk provozieren willst
> -Herauskehren möchtest, daß Du eben doch der Größte bist
>
> Das aber ist Dir in unzähligen Beiträgen bis heute nicht gelungen. Laß
> es gut sein..

@Vollkommen Entspannter:
Das alles hat jetzt niemandem geholfen
Hast dich wohl provozieren lassen
Um im Datenblatt zu lesen muß man nicht groß sein.
#4409038
Lesenswert?
• ▲
▼
Im IC gibt es keinen versteckten, höheren Takt.

Also muss auch die Erkennung diesem "Rhythmus" folgen.

Da das Ganze auch noch Asynchron (klar: von außen) erfolgen soll, sollte 
der Zeitpunkt für die, im Manual auftauchenden, 50 ns auch nicht egal 
sein.

Meine Rechnung geht daher in Richtung: 1 Programmzyklus plus die 50 
nanu. Und mehr.

Ich bin mir aber nicht sicher, dass die Nanosekundenzählerei soll, wenn 
danach eine (relativ) langatmige Auswertung erfolgen muss. Es sei denn 
die Erkennung ist Selbstzweck.
Gast #4409080
Lesenswert?
• ▲
▼
Vollkommen Entspannter schrieb:

> Diesen Absatz hättest nicht schreiben müssen, weil er:
> -Niemandem hilft

Ich hoffe doch...

> -Herauskehren möchtest, daß Du eben doch der Größte bist

Weil ich ein Datenblatt lesen kann? Das ist doch vollkommen lächerlich. 
Ich bin ganz sicher, dass es hier noch sehr, sehr viele andere Leute 
gibt, die das ebenfalls können (und die es eben auch tun!).

Und all diese Leute haben absolut kein Verständnis für Faule, die es 
nicht tun, obwohl es ihnen problemlos möglich wäre...
Gast #4409111
Lesenswert?
• ▲
▼
Sebastian S. schrieb:

> Im IC gibt es keinen versteckten, höheren Takt.

Falsch. Das gilt nur für alle synchronen Baugruppen. Beim Mega16 ist 
INT2 ist aber gerade dies nicht. Hier wird der externe Signalwechsel zum 
"Takt".

Das gilt ganz generell für alle asynchrone Baugruppen. Beim Mega16 z.B. 
auch für den Timer2 mit externer Taktquelle. Bei anderen AVRs gibt es 
teilweise noch mehr solcher asynchronen Baugruppen. Prominentestes 
Beispiel sind natürlich die externen PCINT-Interrupts.

Mir scheint, du hast den wirklichen Bedeutungsgehalt von "asynchron" 
nicht verstanden...

> Da das Ganze auch noch Asynchron (klar: von außen) erfolgen soll, sollte
> der Zeitpunkt für die, im Manual auftauchenden, 50 ns auch nicht egal
> sein.

Ist er aber. Die 50ns sind hier nur dafür verantwortlich, die 
Zeitkonstanten von Gatterlaufzeiten zu überwinden. Sie haben aber rein 
garnix mit dem Takt der synchronen Taktdomäne zu schaffen. Was man im 
Übrigen schon mit minimalen Fähigkeiten zur logischen Deduktion allein 
daraus entnehmen kann, das sie eben (deutlich abweichend) NICHT in 
irgendeiner Form relativ zu diesem Takt angegeben werden...
#4409217
Lesenswert?
• ▲
▼
Rolf M. schrieb:
>
> Ich interpretiere ihn so, dass ein Takt anliegen muss, damit die
> Flankenerkennung überhaupt funktioniert. Wie lang ein Impuls sein muss,
> damit er noch erkannt wird, steht da erstmal nicht.

Natürlich steht das da. Auf Seite 66 kurz vor Tabelle 31:

"The value on the INT1 pin is sampled before detecting edges. If edge or 
toggle interrupt is selected, pulses that last longer than one clock 
period will generate an interrupt. Shorter pulses are not guaranteed to 
generate an interrupt"

Für die Interruptauslösung bei steigender Flanke muß der Pin also für 
mindestens eine Periode des IO-Clocks auf H liegen damit garantiert ein 
Interrupt ausgelöst wird. Kürzere Impulse können einen Interrupt 
auslösen, es wird aber nicht garantiert.

Schaltungstechnisch wird das einfach so aussehen, daß da zwei in Serie 
geschaltete D-FF an dem Pin hängen, die mit clk_IO getaktet sind. Wenn 
zum Zeitpunkt N das erste FF ein H enthält und das zweite ein L, dann 
erkennt die Logik eine steigende Flanke. An verschiedenen anderen 
Stellen (z.B. bei Input-Capture) gibt es sogar ein diesbezügliches 
Prinzipschaltbild.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.