8051 / Interrupts

T

Tilo Gockel

Guest
Liebe Kollegen,

zu den Interrupts des 8051 hätte ich da mal eine (vielleicht blöde)
Frage:

Anscheinend hat der 6 Interrupts, zwei externe, vier interne (drei
Zähler/Timer, einmal Serielle Schnittstelle).

Wenn ich nun die zwei externen benutze, mir hierfür selbst in der ISR
eine Zählroutine schreibe (also keinen Zähler verbrauche), gehe ich
dann recht in der Annahme, dass ich noch die drei Timer frei hab?

Generell quasi: wieso macht man das nicht immer so? Wieso koppelt man
manchmal externe Interrupts an Timer und verschenkt diese?


Danke und Grüße

Tilo

-
http://wwwiaim.ira.uka.de
 
Tilo Gockel schrieb:

zu den Interrupts des 8051 hätte ich da mal eine (vielleicht blöde)
Frage:

Anscheinend hat der 6 Interrupts, zwei externe, vier interne (drei
Zähler/Timer, einmal Serielle Schnittstelle).

Wenn ich nun die zwei externen benutze, mir hierfür selbst in der ISR
eine Zählroutine schreibe (also keinen Zähler verbrauche), gehe ich
dann recht in der Annahme, dass ich noch die drei Timer frei hab?

Generell quasi: wieso macht man das nicht immer so? Wieso koppelt man
manchmal externe Interrupts an Timer und verschenkt diese?
Weil das Rechenzeit kostet und somit auch die Zählgeschwindigkeit
stärker begrenzt ist als wenn Du einen autarken Counter benutzt
der erst bei erreichen bestimmter Zustände bzw. zum Auslesen
Rechenleistung benötigt.

Die Interruptroutinen sollten immer möglichst kurz sein sonst kommst Du
bald nicht mehr hinterher die Interrupts auch abzuarbeiten. Dann kann
der Stack überlaufen und Dein Programm abstürzen.

Gerald
 
In article <3589ed0e.0409010757.30c2ea5c@posting.google.com>,
tilo.gockel@web.de (Tilo Gockel) writes:
Anscheinend hat der 6 Interrupts, zwei externe, vier interne (drei
Zähler/Timer, einmal Serielle Schnittstelle).

Wenn ich nun die zwei externen benutze, mir hierfür selbst in der ISR
eine Zählroutine schreibe (also keinen Zähler verbrauche), gehe ich
dann recht in der Annahme, dass ich noch die drei Timer frei hab?
Das stimmt. Allerdings verlierst du deine externen Interrupts und Rechenzeit.
Zusätzlich fängst du dir jitter auf der ensprechenden Interruptebene ein
und brauchst eine externe Taktquelle.

Generell quasi: wieso macht man das nicht immer so? Wieso koppelt man
manchmal externe Interrupts an Timer und verschenkt diese?
Wer macht denn sowas. Jeder Timer hat seinen eigenen Interrupt.
Manchmal mißbraucht man vieleicht einen Timereingang um einen zusätzlichen
externen Interrupt zu bekommen, aber andersrun eigendlich kaum.


--
MFG Gernot
 
Tilo Gockel schrieb:

Wenn ich nun die zwei externen benutze, mir hierfür selbst in der ISR
eine Zählroutine schreibe (also keinen Zähler verbrauche), gehe ich
dann recht in der Annahme, dass ich noch die drei Timer frei hab?
Zwei (echte) beim Ur51er

Generell quasi: wieso macht man das nicht immer so? Wieso koppelt man
manchmal externe Interrupts an Timer und verschenkt diese?
Weil die Timer als Zähler schneller sind als Softwareschleifen? Weil man
den Timer zufällig eh für nichts anderes braucht? Weil der Prozessor
besseres zu tun hat als interruptgetriggert (= großer Overhaed wegen
Register retten) eine blöde Zählschleife zu in- oder decrementieren und
abzufragen? Weil die Ext. Interruptpins bereits belegt sind? Weil das
Routing der Leiterplatte einfacher ist?

Such dir was aus, die reale Welt ist nicht schwarzweiß ;-)


Gruß

Uwe
 

Welcome to EDABoard.com

Sponsor

Back
Top