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
Dennis schrieb: > Wie lange muss ein high Signal vorhanden sein, damit ein externer > Interrupt ausgelöst wird, wenn dieser auf 'rising edge' konfiguriert > ist? "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."
Soll heißen, das externe Signal muss eine (oder eine halbe?) clock-Periode anliegen?
Kann leider auch nichts finden, aber eventuell kann man die PCINTn Diagramme aus neueren AVR's als Richtwert nehmen: 3 Clocks oder 375ns bei 8 MHz. Oder eben: messen!
Datenblatt, externe Interrupts Table 36. Asynchronous External Interrupt Characteristics Symbol Parameter Condition Min Typ Max Units tINT Minimum pulse width for asynchronous external interrupt 50 ns
Aber nur INT2: async, also ohne Clock im "Tiefstsachlaf", 50ns minimal
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
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.
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!
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..
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.
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.
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...
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...
c-hater schrieb: > Mir scheint, du hast den wirklichen Bedeutungsgehalt von "asynchron" > nicht verstanden... Das sieht man leider an seinem Post sehr deutlich. Nach dem Motto: "Ich lese zwar asyncron, allein mir fehlt der Glaube". Doch wahrlich ich sage dir: "Fürchte dich nicht, glaube nur".
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.
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.