Forum: Mikrocontroller und Digitale Elektronik Interrupt 8051


von TomTom (Gast)


Lesenswert?

Hallo!

Wenn bei einem 8051 MC ein Interrupt (INT0) durch eine negative Flanke 
ausgeführt werden soll, muss dann INT0 bei der Initialisierung auf High 
gesetzt werden, oder kann man diesen befehl auch weglassen???

Danke

von Franz-Rainer (Gast)


Lesenswert?

Lieber TomTom...
So weiß ich das auch nicht.
Hast du kein Datenblatt?
Dort müsste ich es auch erst herauslesen.
Also.....

von TomTom (Gast)


Lesenswert?

Also, im Datenblatte steht...INTO wird 0 gesetzt, das bedeutet doch, das 
ich zuerst immer auf 1 setzen muss, und wenn dann eine Negative Flanke 
(Interrupt) auftritt, wird geschalten, oder seh ich das falsch???

Das Problem ist nur, das in meinen Unterlagen INT0 nicht immer zuerst 
auf 1 gesetzt wird....

von TomTom (Gast)


Lesenswert?

Hab jetzt nochmal geschaut...

INT0= aktiv LOW, also mit einer 0

Muss man dann bei der initialisierung, wenn man mit einer negativen 
Flanke schalten will, immer vorher INT0 auf 1 setzen???

von Joe (Gast)


Lesenswert?

Nach einem Reset sind alle Ports FF und da läßt du sie auch 
(zumindestens den INT0 Pin).

Wie soll ein Portpin eine Null erkennen wenn er immer 0 ist ?

von jack (Gast)


Lesenswert?

SFR: TCON
Hier wird das Bit IT0 auf 1 gesetzt --> fallende Flanke löst den INT0
aus.

>Das Problem ist nur, das in meinen Unterlagen INT0 nicht immer zuerst
>auf 1 gesetzt wird....

Was meinst Du damit?

von Dirk H. (arm-dran)


Lesenswert?

TomTom wrote:
> Also, im Datenblatte steht...INTO wird 0 gesetzt, das bedeutet doch, das
> ich zuerst immer auf 1 setzen muss, und wenn dann eine Negative Flanke
> (Interrupt) auftritt, wird geschalten, oder seh ich das falsch???
>
> Das Problem ist nur, das in meinen Unterlagen INT0 nicht immer zuerst
> auf 1 gesetzt wird....

Theoretisch sind alle Portpins nach dem Reset auf 1, also mit internem
pullup.
Kannst Ihn aber sicherheitshalber nochmal auf 1 setzen.
Wenn Du den INT0 oder INT1 zugelassen hast, kannst Du sogar durch setzen
des Ports auf 0, künstlich einen ext. Interrupt erzeugen.

Dirk

von jack (Gast)


Lesenswert?

>Nach einem Reset sind alle Ports FF und da läßt du sie auch
>(zumindestens den INT0 Pin).

Das ist großer Quatsch.
Der Resetwert des TCON ist 0000 0000!

Also muß IT0 gesetzt werden.

von jack (Gast)


Lesenswert?

Das SFR TCON ist ja kein Port!

von Dirk H. (arm-dran)


Lesenswert?

jack wrote:
> Das SFR TCON ist ja kein Port!

Er meinte wohl die Konfiguration des PortPins INT0!
Der Zustand der PortPins nach Reset ist 1.

TCON ist ein SFR und kein Port.
Die Defaultwerte der SFRs stehen im Datenblatt.

Dirk

von TomTom (Gast)


Lesenswert?

Also ist INT0 bzw INT1 nach einem Reset "HIGH", aber zur Sicherheit kann 
man
ihn trotzdem nochmal auf "HIGH" setzen, hab ich das jetzt richtig 
verstanden?

Bin ganz durcheinander von den ganzen Meldungen...

von jack (Gast)


Lesenswert?

Na dann.
Ich dachte, er wollte den Interrupt konfigurieren (im TCON).

@joe

Tut mir leid, den "Quatsch" nehme ich sofort zurück.

von jack (Gast)


Lesenswert?

Wenn Du die fallende Flanke im TCON-Register eingestellt hast,
brauchst Du nichts weiter zu tun.
Natürlich kann man einen Port, der bereits high ist nochmal high setzen,
da geht nichts kaputt.

von daniel (Gast)


Lesenswert?

Hallo,
da ich selbst mal dieses Thema jetzt brauche, setz ich mal ein Fazit.
Wenn man Flankengesteuert interrupts mit einem 8051 auslosen moechte und 
zwar genauer gesagt eine HIGH - LOW Flanke dann :

SETB EX0
SETB IT0   ; HIGH -> LOW (fallende Flanke) loest den Interrupt aus

und bei LOW - HIGH Flanke ist es dann also ?! :

SETB EX0
CLR  IT0   ; LOW -> High (steigende Flanke) loest interrupt aus

Der Interrupt ist LOW aktiv, bedeutet eine Flanke von 1 nach 0 loest im 
allgemeinen den Reset aus.

Ist das Fazit richtig?

Daniel

von Cri G. (crigri)


Lesenswert?

daniel wrote:
> und bei LOW - HIGH Flanke ist es dann also ?! :
>
> SETB EX0
> CLR  IT0   ; LOW -> High (steigende Flanke) loest interrupt aus
>
> Der Interrupt ist LOW aktiv, bedeutet eine Flanke von 1 nach 0 loest im
> allgemeinen den Reset aus.
>
> Ist das Fazit richtig?
>
> Daniel

Hi Daniel!

Dein Fazit ist falsch. Wenn du IT0 = 0 setzt, so wird nicht auf Flanken 
reageiert (H -> L) sondern auf den Pegel des Pins (L). D.h., dass dein 
INT0-Pin = 1 ist und sobald eine L anliegt wird der Interrupt ausgelöst.

lg Cri

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.