mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt 8051


Autor: TomTom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Franz-Rainer (Gast)
Datum:

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

Autor: TomTom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: TomTom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dirk Hofmann (arm-dran)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das SFR TCON ist ja kein Port!

Autor: Dirk Hofmann (arm-dran)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: TomTom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann.
Ich dachte, er wollte den Interrupt konfigurieren (im TCON).

@joe

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

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Cri Gri (crigri)
Datum:

Bewertung
0 lesenswert
nicht 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

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.