Hallo miteinander Ich habe wiedereinmal eine Frage: Wie gross ist die Zeit, die ein Prozessor (PIC oder AVR) in etwa benötigt, bis die ISR ausgefürht wird, respektive wie lange braucht er dann wieder um zurück zu springen? Ein Interrupt kann ja nicht sofort ausgefürht werden, da die entsprechenden Daten (Variablen, Werte...) zwischengespeichert werden müssen, und später wieder aufgerufen werden. Wie schnell kann man einen Timer-Interrupt (in abhängigkeit zum Quarz) maximal aufrufen, damit noch etwas anderes bearbeitet werden kann? Besten Dank für die Antworten MFG
Das Datenblatt verrät so einiges: Wenn der Interrupt erkannt wurde: -*wird der gerade in Arbeit befindliche Befehl "fertig bearbeitet" -*dann Sprung zur Interrupt-Vektor-Tabelle, -*dann Sprung zur Interrupt-Service-Routine -*dann müssen die Register gerettet werden (Abzählen wie viele das sind) -dann die Interrupt-Service-Routine selber -*gerettete Register zurück speichern -*Abschließender RETI -* ist der sogenannte Overhead, wie lange der Dauert findet sich im Datenblatt, (Anzahl der Zyklen! pro Befehl) Bei bekannter Frequenz läßt sich somit die Zeit berechenen! Ein gutes Neues!
Patrick B. schrieb: > Wie schnell kann man einen Timer-Interrupt (in abhängigkeit zum Quarz) > maximal aufrufen, damit noch etwas anderes bearbeitet werden kann? Beim AVR: Beliebig schnell. Da ist sichergestellt, dass zwischen zwei ISR-Aufrufen auch immer mindestens ein Nicht-ISR-Befehl abgearbeitet wird. Nicht sichergestellt ist natürlich, dass dir keine Interrupts verloren gehen, wenn sie zu schnell kommen.
Also bei mir sind so typische Interrupt-Durchlaufzeiten beim AVR (ATMEGA32) ca 60-70 Takte (4-5us bei 16 MHz) z.B. für ADC-Messung und Abspeicherung in einen Ring-Puffer und beim PIC16 ca 25-40 Takte (5-8us) bei 20 MHz) Ausgabe 3 Soft-Pwms mit 8 bzw. 12 Bits. Gruß Anja
Die Interrupt-Latenzzeit bei einem Timerinterrupt scheint bei AVR und Pics identisch zu sein, wenn man der Quelle glauben darf: http://www.electricstuff.co.uk/picvsavr.html
Die Quelle ist recht zweifelhaft, da scheint vieles falsch bzw. überholt zu sein, aber naja. Beim AVR ist das eigentlich recht simpel: Der Eintritt kostet laut Datenblatt 7..9 Takte (8 und 9, wenn die gerade ausgeführte Instruktion 2 oder 3 Takte braucht), der Rücksprung kostet 4. Alles weitere -- etwa das Sichern von Registern -- ist Compiler-Voodoo und auf Ebene der Hochsprache in aller Regel nicht vorhersehbar.
hier wird für PIC's eine Zeit von 3-4 Cycles angegeben. http://www.chatzones.co.uk/discus/messages/5557/5869.html Dies scheint mir nach der Auflistung von oben, was alles abgearbeitet wird, doch sehr wenig. Also einen Timer mit ~40-70kHz sollte machbar sein, wenn der Interrupt selber "nur" etwa die halbe Periode benötigt? MFG
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.