Forum: Mikrocontroller und Digitale Elektronik 8051 Interrupt Verzögerung bis erster Befehl ?


von Dumme Frage (Gast)


Lesenswert?

Hallöchen!


Weiss vielleicht jemand wieviele Zyklen so ein alter 8051 benötigt, bis 
der erste Befehl in der Interrupt-Routine beginnt (nach dem 
Interrupt-Auslösen) ? Ich finde mit google nichts passendes.

von Ingo L. (corrtexx)


Lesenswert?

Das hängt von der verwendeten Programmiersprache ab.

von Helmut L. (helmi1)


Lesenswert?

Ingo L. schrieb:
> Das hängt von der verwendeten Programmiersprache ab.

Bestimmt nicht!

http://eia.udg.es/~gomis/all8051.pdf

Seite 3-25 steht etwas ueber die Reponse Time.

von Boris K. (Gast)


Lesenswert?

Hallo Dummchen,

miete dir etwas Hirn und lese das Datenblatt deines 8051-Derivats durch.

Boris.

von Stephan (Gast)


Lesenswert?

Kommt auf den gerade laufenden Befehl an. Der braucht X Zyklen. Bei 12 
Takten pro Zyklus...also x mal 12 Takte sofern kein andrer Int. läuft 
der das verbietet. Die Anzahl der Zyklen/ Befehl steht im DB.

von Einer (Gast)


Lesenswert?

Dumme Frage schrieb:
> Ich finde mit google nichts passendes.
Falsch gesucht?


http://public.beuth-hochschule.de/~rozek/pdf/MC65-Teil6.pdf

von Achim S. (Gast)


Lesenswert?

für die bestenfalls erreichbaren Werte siehe z.B. Abschnitt 2.16.3 von

http://ww1.microchip.com/downloads/en/DeviceDoc/doc4316.pdf

von foobar (Gast)


Lesenswert?

Eher von der verwendeten CPU.  Der 8051 braucht 3-9 Maschinenzyklen, 
jeder Maschinenzyklus ist 12 Taktzyklen.  Moderne Versionen sind meist 
schneller.  Stichworte zum Suchen "interrupt latency" oder "interrupt 
response time"

von Bernd K. (prof7bit)


Lesenswert?

Beim Silabs ist das Stichwort im Manual "Interrupt Latency" und es 
beträgt im Minimum 5 Taktzyklen (das 12-Takte-pro-Zyklus-Ding gehört der 
Vergangenheit an), kann aber je nachdem was der Prozessor gerade macht 
im schlimmsten Fall auch mal bis zu 18 Takte dauern.

: Bearbeitet durch User
von Stephan (Gast)


Lesenswert?

Bernd K. schrieb:
> (das 12-Takte-pro-Zyklus-Ding gehört der
> Vergangenheit an),

ja ja lesen. Er sprach von dem ALTEN 8051. Das es mit Silabs schneller 
geht wissen wir.

von Thomas Z. (usbman)


Lesenswert?

mul braucht im Original 4 Zyklen bei einem 12 Cocker sind das 48 Quarz 
Takte dazu kommt die Zeit um die Return Addresse auf den Stack zu 
schreiben das sind (aus der Erinnerung) noch mal 24 Takte. Das sind bei 
12MHz 6us bis der Interrupt aktiv wird.
Dazu kommt ein delay aus einem bereits laufenden Interrupt falls der 
neue Interrupt eine geringere Priorität hat.

Thomas

: Bearbeitet durch User
von Holm T. (Gast)


Lesenswert?

Stephan schrieb:
> Bernd K. schrieb:
>> (das 12-Takte-pro-Zyklus-Ding gehört der
>> Vergangenheit an),
>
> ja ja lesen. Er sprach von dem ALTEN 8051. Das es mit Silabs schneller
> geht wissen wir.

Nicht nur Silabs, auch olle Temic (später Atmel) sind schneller, wies 
bei den Winbond mit 40Mhz aussieht weiß ich nicht...

Gruß,

Holm

von MaWin (Gast)


Lesenswert?

Stephan schrieb:
> Kommt auf den gerade laufenden Befehl an. Der braucht X Zyklen.
> Bei 12 Takten pro Zyklus...also x mal 12 Takte sofern kein andrer Int.
> läuft der das verbietet. Die Anzahl der Zyklen/ Befehl steht im DB.

Richtig.

http://www.cast-inc.com/blog/8051-interrupt-latency-designing-with-modern-8-bit-mcus

von MaWin (Gast)


Lesenswert?

Hängt vom Befehl und der CPU ab! Die aktuellen 8051er brauchen keine 12 
Takte mehr!

(der echte MaWin)

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
Noch kein Account? Hier anmelden.