mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik wieviele Taktzyklen bis in Interrupt?


Autor: hmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Kann mir jemand sagen wieviele Taktzyklen ein Mega16 braucht um in eine
Interruptroutine zu springen?

danke
 hmann

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

in dem 349 Seiten starken Datenblatt des mega16 steht bereits auf Seite
16 ein eigenes Kapitel "Interrupt response time", in dem die Sache
erklärt ist.
Bis zum Schluß braucht man also gar nicht zu lesen, nützt aber immer.
Link gibt's hier unter "Datenblätter". Die Anzahl Taktzyklen kann
man auch im Simulator ausprobieren.

GRuß

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich rate, würde ich sagen: einen.

Aber  es wird (wenn du in C programmierst) in der IR noch einiges
gemacht (Register sichern), bevor deine erste Zeile Code abgearbeitet
wird.
Sieht man schön im Assembler Listing.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

S. 13 des ATMega16 Datenblattes sagt dazu folgendes:

>Interrupt Response Time
>
>The interrupt execution response for all the enabled AVR interrupts
>is four clock cycles minimum.
>After four clock cycles the program vector address for the
>actual interrupt handling routine is executed.
>During this four clock cycle period, the Program Counter is pushed
>onto the Stack.

Gruß,
Patrick...

Autor: hmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten. Obwohls im Datenblatt steht.

Steh wohl heute a weng aufm Schlauch. Habs im Datenblatt übersehen.

ciao

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn er es nicht mehr nachschauen muß, benötigt der hmann vielleicht
noch eine Übersetzung.

Und der momentane Befehl wird noch zu Ende gemacht. Und manche Befehle
dauern länger als 1 Takt. Oder?

Gruß

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber  es wird (wenn du in C programmierst) in der IR noch einiges
>gemacht (Register sichern), bevor deine erste Zeile Code abgearbeitet
>wird.
>Sieht man schön im Assembler Listing.

Kleiner Tip:
Im IR möglichst KEINE ander Funktion aufrufen, sondern Spagetticode
schreiben. Dann kann der gcc das Sichern der Register optimieren und
muss nicht alle wegspeichern. I.d.R. werden dann nur 3-4 Register
gespeichert statt alle 32.

Stefan

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
um noch ein wenig zur Verwirrung beizutragen:
Da ein Interrupt asynchron zum Takt auftreten kann ist die erste
variable Zeit: 0 bis 1 Taktzyklus.
Dazu kommen noch die bereits genannten vier Zyklen und die Abarbeitung
des aktuellen Befehls (ein bis zwei Zyklen).
Zusätzlich sind noch ein paar Zyklen zum Register retten udgl.
einzurechnen.
Bei assembler-Programmen kann man mit etwa 15 Taktzyklen rechnen. Dazu
kommen noch max. 1,99999 Taktzyklen, die leider nicht vorhersagbar
sind. Wenns Timing sehr kritisch ist kann man den uP vor Auftreten des
Ints schlafen schicken, dann reduziert sich der Fehler auf +null bis
+0,99999 Taktzyklen.

grüsse leo9

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.