Hallo Ich habe da ein kleines Verständniss-Problem bezüglich Low-Level-Interrupt und Interrupt durch fallende Flanke. So wie ich das verstanden habe, wird beim Low-Level-Irq ein Interrupt ausgelöst, wenn z.B. der Pin INT0 auf Low geht. Das heisst aber doch, das er vor dem IRQ auf High gewesen sein muss und dann auf Low ging. Also praktisch auch auf eine fallende Flanke reagiert. Worin besteht also der Unterschied zu einem IRQ der durch eine fallende Flanke ausgelöst wird ?
@ Hans I. (obiwahn) >reagiert. Worin besteht also der Unterschied zu einem IRQ der durch eine >fallende Flanke ausgelöst wird ? Die fallende Flanke kann sehr kurz sein und schon nach wenigen Dutzend ns wieder auf HIGH gehen. So ein IRQ benötigt einen laufenden CPU-Takt, um erkannt zu werden. Ein LOW Level IRQ muss deutlich länger auf LOW bleiben, einige Dutzend us. Er kann auch ohne laufenden CPU-Takt erkannt werden und somit die CPU aus einem tiefen sleep mode wecken.
> ... fallende Flanke... So ein IRQ benötigt einen laufenden CPU-Takt, um erkannt
zu werden.
Weshalb wacht dann z.B. ein ATmega328 damit aus Power-down auf?
Hans I. schrieb: > Das heisst aber doch, das er vor dem IRQ auf High gewesen sein muss und > dann auf Low ging. Also praktisch auch auf eine fallende Flanke > reagiert. Worin besteht also der Unterschied zu einem IRQ der durch eine > fallende Flanke ausgelöst wird ? Der LowLevel triggert so lange der Level low ist, der Edge nur bei einmal bei fallender Flanke.
Beitrag #5497201 wurde von einem Moderator gelöscht.
Schon mal versucht, auf einen pegelgetriggerten Interrupt mehrere Interrupt-Quellen zu legen?
Hans I. schrieb: > So wie ich das verstanden habe, wird beim Low-Level-Irq ein Interrupt > ausgelöst, wenn z.B. der Pin INT0 auf Low geht. Falsch. Der wird ausgelöst, sobald für eine gewisse Mindestzeit (siehe DB) Low-Pegel anlag. Und er bleibt auch aktiv, solange dieser Low-Pegel weiterhin anliegt, auch wenn die ISR bereits durchlaufen wurde. Sie wird also immer und immer wieder durchlaufen, wenn man nix dagegen tut. Beim Falling-Edge-Interrupt hingegen löst tatsächlich bereits die fallende Flanke den IRQ aus. Und er wird beseitigt, wenn die ISR aufgerufen wird. Erst die nächste fallende Flanke kann ihn erneut auslösen. Aber mal 'ne Frage: warum fragst du uns das? Das steht doch alles haarklein im DB beschrieben. Kannst du nicht lesen oder willst du nur nicht?
A. K. schrieb: > Schon mal versucht, auf einen pegelgetriggerten Interrupt mehrere > Interrupt-Quellen zu legen? Witzig. Tatsächlich ist das sogar der einzige zuverlässige Weg. Benötigt aber natürlich ggf. externe Logik... Oft ist die Logik in Peripherie aber eigentlich genau schon dafür ausgelegt. Siehe z.B. RFM12 (aber auch sehr viele andere, z.B. die Interruptcontroller von PCs). Solche Peripherie ist explizit dafür gedacht, an (Low-)Level Interrupteingängen betrieben zu werden. Betrieb an Edge-Interrupts gebiert hier die Gefahr von race conditions (nicht erkannte Interruptanforderung) und damit in der Folge ein "Einschlafen" der Peripherie. Die scheint dann nix mehr zu tun, tatsächlich wartet sie aber sehnsüchtig darauf, dass du was tust und zeigt das auch eindringlich durch den Low-Pegel an, von dem du allerdings eben u.U. nix mitbekommst, weil es keine Flanke zwischendurch gab, weil die neue IRQ-Situation eintrat, bevor die alte vollständig abgehandelt war und damit die IRQ-Leitung zwischenzeitlich kein High-Level erreichen konnte...
c-hater schrieb: > Witzig. Tatsächlich ist das sogar der einzige zuverlässige Weg. Benötigt > aber natürlich ggf. externe Logik... Yep. Das war ein Schreibfehler.
Ok. Aus euren Antworten wird schon klar, welcher IRQ für welche Anwendungen sinnvoller ist. Danke Leute. Bin wieder ein Stückchen schlauer. An c-hater Das DB ist in Englisch und das ist leider nicht meine stärke. In meinem Fall ist das mehr ein zusammenreimen als ein übersetzen. Zu meiner Verteidigung kann ich nur sagen , das zu der Zeit, als ich in der Schule Englisch lernen sollte (das war kurz nach dem Urknall), brauchte man Englisch nur, wenn man in England Urlaub machen wollte. Dementsprechend gering war damals meine Motivation das zu lernen. Heute sieht die Welt anders aus und ja, ich muss zugeben, das ich mich heute darüber ärgere.
Hans I. schrieb: > Heute sieht die Welt anders aus und ja, ich muss zugeben, das ich > mich heute darüber ärgere. Seit einigen Jahren gibt es auch mehr und mehr Bauteile, für die gar keine englischsprachigen Datenblätter mehr erhältlich sind, sondern nur nur welche auf Chinesisch (Hochchinesich bzw. Mandarin). Meist hat man aber das Glück, dass zumindest wichtige Parameter mit lateinischen Buchstaben und arabischen Zahlen dargestellt sind. In ein paar Jahren kann das aber komplett anders aussehen. Wenn sich der Handelskrieg mit den USA auch auf elektronischen Bauteile ausweiten sollte, werden wir künftig wesentlich häufiger mit solchen Datenblättern konfrontiert werden.
S. Landolt schrieb: > Weshalb wacht dann z.B. ein ATmega328 damit aus Power-down auf? Das ist eine Besonderheit der PC Interrupts, die ich auch lernen musste. Im Powerdown reicht ein Flankenwechsel auf INT0 oder INT1 nicht aus, da nur level-getriggerte Interrupts erkannt werden. Bei PC Interrupts hingegen wird der Flankenwechsel unabhängig vom aktiven Takt erkannt, also auch bei Power Down. Die Fussnote 3 ist hierbei das entscheidende. Das ist allerdings kein grosses Problem, da sowohl INT0 als auch INT1 auf PC Interrupts konfiguriert werden können.
:
Bearbeitet durch User
Ich wollte nur auf den Fehler von Falk Brunner hinweisen.
@S. Landolt (Gast)
>Ich wollte nur auf den Fehler von Falk Brunner hinweisen.
Soso, wolltest du das? Ist wohl nicht ganz gelungen.
Meine Aussagen sind korrekt, denn vom Pin Change Interrupt war nie die
Rede, auch wenn die ebenfalls flankengetriggert sind. Die Frage bezog
sich auf die "klassischen", externen Interrupts.
Falk Brunner schrieb: > Die fallende Flanke kann sehr kurz sein und schon > nach wenigen Dutzend ns wieder auf HIGH gehen. > So ein IRQ benötigt einen laufenden CPU-Takt, > um erkannt zu werden. >Die Frage bezog sich auf die "klassischen", externen Interrupts. Mir ist nicht ganz klar, was Sie unter "klassisch" verstehen. Ich bezog mich auf die AVR8. Der ATmega16 als schon älterer uC hat den INT2 (kein Pin-Change-Interrupt), der eine Flanke asynchron erkennt, folglich keinen > ... laufenden CPU-Takt ... benötigt. > Die fallende Flanke kann sehr kurz sein und schon nach > wenigen Dutzend ns wieder auf HIGH gehen. > ,,, denn vom Pin Change Interrupt war nie die Rede ... Und dies hier bekomme ich dann auch nicht zusammen, denn im Datenblatt des alten ATmega8 z.B. lese ich "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", wird also mit > wenigen Dutzend ns nicht funktionieren.
@S. Landolt (Gast) >>Die Frage bezog sich auf die "klassischen", externen Interrupts. >Mir ist nicht ganz klar, was Sie unter "klassisch" verstehen. Eben das, was das Wort klassisch bedeutet. https://de.wikipedia.org/wiki/Klassik Eben die Interrupts, welche die AVRs seit ihrer ersten Generation haben. >Ich bezog mich auf die AVR8. Das interessiert mich keine Sekunde, denn der OP hat davon auch nicht gesprochen. Also hör auf den Schlauberger zu spielen und auf andere Leute "Fehler hinzuweisen".
Falk B. schrieb: > Also hör auf den Schlauberger zu spielen und auf andere > Leute "Fehler hinzuweisen". Hm, das machst Du selbst aber nur zu gerne mein lieber Falk und das dann auch oft in einem recht robusten Ton. Sein mal nicht so dünnhäutig, das darf man bei Dir schliesslich auch nicht sein.
@Michael K. (Firma: Knoelke Elektronik) (knoelke) >> Also hör auf den Schlauberger zu spielen und auf andere >> Leute "Fehler hinzuweisen". >Hm, das machst Du selbst aber nur zu gerne mein lieber Falk und das dann >auch oft in einem recht robusten Ton. Nur mit dem "kleinen" Unterschied, daß ich sachliche Argumente bringe und damit meisten recht habe, ich Gegensatz zu unserem neunmalklugen Besserwisser. >Sein mal nicht so dünnhäutig, das darf man bei Dir schliesslich auch >nicht sein. Ich muss nicht jeden kleinen Kläffer rumbellen lassen, da darf und muß man auch mal ne Ansage machen. Done!
In Deiner Wahrnehmung mag das so sein.
Merkwürdiger Umgangston - definitiv nicht mein Kollege. Und eine fachliche Erwiderung kam auch nicht.
Ihr wisst aber schon, dass es auch Latches gibt, oder? Damit kann ich auch ausm Tiefschlaf ohne Clock aufwachen.
Falk ist bestimmt nicht der umgänglichste oder der mit den besten Manieren, aber fachlich zieht er den Schnitt hier kräftig nach oben. Nur Nette ohne Plan ist auch keine Lösung. Wenn da wieder so ne 'ich bin der geilste und eure Stümperei kotzt micht an' Nummer kommt, roll ich mit den Augen und zieh mir das nicht so rein.
Michael K. schrieb:
> Falk ... fachlich zieht er den Schnitt hier kräftig nach oben
Seine Fachkompetenz ist unbestritten; das heißt aber nicht, dass ihm
keine Fehler unterlaufen. Und als solchen betrachte ich einen Teil
seines allerersten Beitrages, das wird man doch diskutieren dürfen,
davon lebt schließlich dieses Forum.
@S. Landolt (Gast)
>Und eine fachliche Erwiderung kam auch nicht.
Das mit dem sinnerfassenden Lesen üben wir dann doch besser noch mal.
@Erik B. (erik_b976) >Ihr wisst aber schon, dass es auch Latches gibt, oder? Ach was? >Damit kann ich auch ausm Tiefschlaf ohne Clock aufwachen. Das ist gar nicht die Frage, sondern wie sich die klassischen Interrupt des AVR verhalten. Eben das wurde KORREKT von mir beschrieben. Was THEORETISCH sowie PRAKTISCH bei den neueren Generationen von AVRs mit Pin Change Interrupt möglich ist, war gar nicht gefragt.
Na, wir beide kommen, zumindest heute, nicht zusammen. Der Rest sei den Mitlesenden überlassen.
S. Landolt schrieb: > das wird man doch diskutieren dürfen, Falk B. schrieb: > Das mit dem sinnerfassenden Lesen üben wir dann doch besser noch mal. Hahahaha ... Genau so ! Dieses Spiel könnt ihr jetzt den ganzen Tag weiterspielen bis der Thread wegen wüster Beleidigungen gesperrt wird. Einfach mal locker lassen. Jeder ist alles losgeworden ausser dem eigenen Ego ... Wenn ihr das jetzt auch noch klären wollt dann geht bitte vor die Tür.
@ S. Landolt (Gast) >> Falk ... fachlich zieht er den Schnitt hier kräftig nach oben >Seine Fachkompetenz ist unbestritten; das heißt aber nicht, dass ihm >keine Fehler unterlaufen. Das habe ich nie behauptet. Und ich stehe zu meinen Fehlern. Aber dann sollten es schon wirklich Fehler sein und nicht naseweise Korrekturen, die keine sind. >Und als solchen betrachte ich einen Teil >seines allerersten Beitrages, das wird man doch diskutieren dürfen, Ja, aber deine Argumente waren falsch, weil am Thema vorbei! Wenn ich sage 1+1=2 kannst du nicht schreien, falsch, 2+2=4!
@Michael K. (Firma: Knoelke Elektronik) (knoelke) >Wenn da wieder so ne 'ich bin der geilste und eure Stümperei kotzt micht >an' Nummer kommt, roll ich mit den Augen und zieh mir das nicht so rein. Ja, solche Auftritte gibt es hier, aber eher selten von mir. Da sind MaWin, c-hater und Konsorten eher vorn dabei.
Falk B. schrieb: > sondern wie sich die klassischen Interrupt > des AVR verhalten Du musst eine Glaskugel besitzen, im Ursprungspost war kein Prozessor genannt und trotzdem deine Antwort, dass für Flanken-IRQ eine Clock benötigt wird. Deshalb meine Anmerkung, dass es für die Erkennung bzw. das Aufwachen dank Latches völlig unerheblich ist, welcher Art ein IRQ Signal ist. Wichtig ist lediglich, dass ein Flanken IRQ als Event im IRQ Controller gespeichert und dann gecleart werden muss, während ein Level IRQ solange pending bleibt bis entweder die Ursache beseitigt oder er maskiert wird.
@Erik B. (erik_b976) >> sondern wie sich die klassischen Interrupt >> des AVR verhalten >Du musst eine Glaskugel besitzen, im Ursprungspost war kein Prozessor >genannt und trotzdem deine Antwort, dass für Flanken-IRQ eine Clock >benötigt wird. Ja, hab ich. Nennt sich Statistik und Intuition. Damit ist der AVR der beste Kandidat. >Deshalb meine Anmerkung, dass es für die Erkennung bzw. das Aufwachen >dank Latches völlig unerheblich ist, welcher Art ein IRQ Signal ist. Dumm nur, daß das der AVR anders sieht. >Wichtig ist lediglich, dass ein Flanken IRQ als Event im IRQ Controller >gespeichert und dann gecleart Jaja, gecleart, schon clear. OMG! >werden muss, während ein Level IRQ solange >pending bleibt pending bleibt, soso. > bis entweder die Ursache beseitigt oder er maskiert wird. Wer nicht mal eine klare Sprache benutzen kann, kann auch nicht klar denken.
> dann geht bitte vor die Tür Nein, hier im Forum. > Die fallende Flanke kann sehr kurz sein und schon > nach wenigen Dutzend ns wieder auf HIGH gehen. > So ein IRQ benötigt einen laufenden CPU-Takt, > um erkannt zu werden. Dies eben lese ich aus dem Datenblatt anders heraus, da steht "one clock period ... Shorter pulses are not guaranteed to generate an interrupt", also reichen "wenige Dutzend ns" nicht - oder wie kann man das anders verstehen?
Falk B. schrieb: > Wer nicht mal eine klare Sprache benutzen kann, kann auch nicht klar > denken. Kannst du auch noch etwas anderes ausser beleidigen? Soll ich dir alles nochmal eindeutschen?
Falk B. schrieb: > Ja, solche Auftritte gibt es hier, aber eher selten von mir. Da sind > MaWin, c-hater und Konsorten eher vorn dabei. Nö, so einen Auftritt lieferst Du jetzt gerade live ab. Aber Du merkst das nicht. Die anderen schon. Völlig unmöglich zuzugeben das Du auf eine allgemeine Frage eine Antwort gegeben hast die zwar in einem bestimmten Kontex stimmt aber eben nicht generell. Aber macht nur, hat einen gewissen Unterhaltungswert.
> Aber macht nur
Mach' ich, im Wortsinne. Heute abend krame ich meinen ältesten AVR8
heraus und schaue, was er aus einem Impuls von sagen wir 50 ns macht.
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.