Forum: Mikrocontroller und Digitale Elektronik LPC2148 - mehr als 4 externe Interrupts


von yyyyy (Gast)


Lesenswert?

Hi,

hat jemand eine Idee wie man beim LPC2148 mehr als 4 externe Interrupts
realisieren kann ?

Gibt es so was wie eine Art einfachen externen Interrupt Controller?

Danke

von Peter D. (peda)


Lesenswert?

Gegenfrage, wozu?

Tasten liest und entprellt man ja mit dem Timerinterrupt.

von yyyyy (Gast)


Lesenswert?

Das ist, mit Verlaub, eine dumme Antwort!

von (prx) A. K. (prx)


Lesenswert?

Um solche hilfreichen Dialoge abzukürzen wäre es nützlich, die 
eigentliche Problemstellung zu kennen. Immerhin kann man an eine 
Interrupt-Leitung auch dann mehrere Interrupt-Quellen hängen, wenn kein 
Interrupt-Controller dazwischen sitzt.

von Peter D. (peda)


Lesenswert?

yyyyy schrieb:
> Das ist, mit Verlaub, eine dumme Antwort!

Nö.
Aber Deine Reaktion ist es.

Zu 99% ist nämlich schon die Frage nach mehr Interrupts falsch.
Sei es für alle Arten mechanischer Kontakte.
Oder sei es für Peripherie (SJA1000, ENC28J60), die sich problemlos an 
einem Interrupt anschließen lassen, da Open-Drain.

Ich lese hier ja schon länger mit.
Und bisher war in keinem einzigen Fall die Frage nach mehr Interrupts 
zielführend.

Und das entspricht auch meiner Programmierpraxis, die Interrupts waren 
immer dicke ausreichend.

von AnotherGuest (Gast)


Lesenswert?

yyyyy schrieb:
> Gibt es so was wie eine Art einfachen externen Interrupt Controller?

http://de.rs-online.com/web/c/?sra=oss&searchTerm=interrupt+controller&x=0&y=0


Musst halt das Timing hinbasteln.

Wennn ich schon nen Chip mehr brauche würde ich das mit nem 2. µC 
machen.

von yyyyy (Gast)


Lesenswert?

AnotherGuest schrieb:
> http://de.rs-online.com/web/c/?sra=oss&searchTerm=...
>
>
> Musst halt das Timing hinbasteln.
>
> Wennn ich schon nen Chip mehr brauche würde ich das mit nem 2. µC
> machen.

Danke für den ernsthaften Versuch mir zu helfen.

Aber den 8259 habe ich schon zu meinen 8085 Zeiten verbaut und er würde
etwas zu dick aufgetragen sein und auch vom Anschluss schlecht passen.
Auch ein zweiter MC nicht.

Beim LPC2148 sind die vier Interrupteingänge sehr schnell nicht
mehr nutzbar, wenn man viel interne Peripherie braucht. Deshalb brauche
ich eine andere Lösung um überhaupt ein oder zwei externe Interrupts
nutzen zu können.

Ich finde schon eine Lösung, aber wohl nicht hier.

Danke jedenfalls nochmals.

von Peter D. (peda)


Lesenswert?

yyyyy schrieb:
> Deshalb brauche
> ich eine andere Lösung um überhaupt ein oder zwei externe Interrupts
> nutzen zu können.

EINT0, EINT2 sind schon mal durch andere Peripherie nicht blockiert, 
also immer verfügbar.
Auch gibt es noch andere Eingänge, die Interrupts auslösen können, z.B. 
die 8 Capture.

yyyyy schrieb:
> Ich finde schon eine Lösung, aber wohl nicht hier.

Wie kommst Du auf diesen komische Trichter?
Nur weil Du genervt bist und keiner weiß, warum.

Es ist nunmal so, daß man besser helfen kann, je konkreter die Frage 
ist.
Es spielt durchaus eine wichtige Rolle, wie schnell reagiert werden muß, 
also was die Interruptquellen sind.

von (prx) A. K. (prx)


Lesenswert?

yyyyy schrieb:
> Beim LPC2148 sind die vier Interrupteingänge sehr schnell nicht
> mehr nutzbar, wenn man viel interne Peripherie braucht.

Der hat zwar nur 16 Vektoren für je nach Zählung 20-23 
Interrupt-Quellen, aber deswegen sind jene, für die es nicht mehr zu 
einem eigenen Vektor reicht, ebenso nutzbar. Sie landen dann eben im 
Default-Handler und werden abgefragt. Ob das wohl langsamer als ein 
extern rangewürgter Interrupt-Controller ist?

von (prx) A. K. (prx)


Lesenswert?

Peter Dannegger schrieb:
> Es ist nunmal so, daß man besser helfen kann, je konkreter die Frage
> ist.

Konkret war sie, eher zu konkret. Er sucht einen Interrupt-Controller, 
den er extern an den LPC2148 anschliessen kann. Noch viel konkreter geht 
eigentlich nicht. ;-)

Nur riecht es ziemlich streng nach Holzweg oder Missverständnis und 
daraus resultierender falscher Frage.

von (prx) A. K. (prx)


Lesenswert?

Mal sehen, wie man zu diesem Problem mit den Interrupts kommt. Spielen 
wir mal 10 - äh 23 - kleine Menschlein schwarzafrikanischer Herkunft:

- Einer ist keiner Hardware zugeordnet. Da waren es nur noch 22.

- Zwei gehören einem Hardware-Debugger. Da waren es nur noch 20.

- Einer gehört zum PLL Lock. Wozu man da überhaupt einen braucht, 
erschliesst sich mir nicht wirklich. Da waren es nur noch 19.

- Einer gehört dem Watchdog. Wer den hochfrequent einsetzt hat definitiv 
etwas falsch verstanden. Da waren es nur noch 18.

- Einer gehört dem Brownout Detector. Wenn der hochfrequent auslöst, 
dann hat man nicht so sehr ein Problem mit Interrupts. Da waren es nur 
noch 17.

- Einer gehört zur RTC. Die löst meist einmal die Sekunde aus, oder 
seltener. Geht auch locker ohne Vektor. Da waren es nur noch 17.

Wie haben also 16 maximal Interrupt-Quellen, für Vektoren einigermassen 
interessant sein könnten. Und da sind die 4 externen Interrupts mit 
drin. Und wir haben 16 Vektoren zur Verfügung.

von Peter D. (peda)


Lesenswert?

A. K. schrieb:
> Nur riecht es ziemlich streng nach Holzweg oder Missverständnis und
> daraus resultierender falscher Frage.

Meine Rede.

Ich hab z.B. mal 10 MAX3100 benötigt, um 10 Netzteile (20kV) per 
Lichtleiter zu steuern.
Ich hab dann einfach die 10 INTs parallel geschaltet und im 
Interrupthandler werden die 10 Statusregister ausgelesen, wer der 
auslösende war.

von Wilhelm F. (Gast)


Lesenswert?

Es gibt glaube ich in den 74xx-TTL-Bausteinserien auch einfache 
Prioritäts-Encoder. Möglicherweise kann man auch schon damit was machen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn du noch normale freie Ports hast, kannst du z.B. per Dioden ein 
'Mehrfach' Interrupt bauen. Jede externe Quelle zieht dann sowohl die 
Interrupt Leitung als auch den anderen Port auf low. Deine IRQ Routine 
prüft dann, welche der Portleitungen noch auf low war, als der Interrupt 
ausgelöst wurde. Hab ich mal mit 8051ern gemacht als mir die externen 
Ints ausgingen. Wenn die allerdings sehr schnell kommen, musst du 
vermutlich die Signale noch latchen.

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.