Forum: Mikrocontroller und Digitale Elektronik Problem: Interupt der ser. Schnittstelle


von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Hi!

Ich habe hier ein kleines Testprogramm geschreiben, welches bei einem
Interupt der seriellen Schnittstelle den Pin 2.0 löschen soll.

Mein Problem ist, dass offensichtlich direkt nach dem Reset das Bit
gelöscht wird. Warum???
Es sollte normalerweise erst bei einem interupt gelöscht werden.

Ich verwende einen AT89C51ED2, an den Schnittstellenleitungen ist ein
MAX232 angeschlossen.
Die Schnittstelle funktioniert aber, ich kann darüber mein Programm
laden.

Weis jemand was da falsch läuft?

MfG Christian

von thkais (Gast)


Lesenswert?

Das kann verschiedene Ursachen haben.
Ein kleiner "Einschaltknacks" an der RXD-Leitung, und schon ist es
passiert. Eine weitere Fehlerquelle: Die Reihenfolge der
Initialisierung der SFR. Ich umgehe diese Fallen immer mit dem
manuellen Rücksetzen der Interrupt-Flags, bevor ich den Interrupt
freigebe.

von Ulli (Gast)


Lesenswert?

..zieh doch mal das serielle Kabel und resette...besser?
Ulli

von Josef (Gast)


Lesenswert?

Würde den Pin entweder toggeln oder zeitlich begrenzt setzen.
Dann weißt du sofort mehr.

SG Josef

von Christian (Gast)


Lesenswert?

Das mit dem Abziehen des seriellen Kabels funktioniert nicht!

Aber ich werde den Bit mal zeitlich begrenzen, Danke!

MfG Christian

von Dirk (Gast)


Lesenswert?

Hallo,

kann es sein das du das bit erst mal setzen mußt ... beim einschalten
waren glaube ich immer alle bit an den audgängen gelöscht beim 80c51
...

CA

von Markus_8051 (Gast)


Lesenswert?

Hallo Christian,

beim 8051 werden die Bits TI und RI, die geodert den seriellen
Interrupt erzeugen, nicht per Hardware wieder gelöscht. Sprich, das
mußt Du per Software in der seriellen Interrupt-Routine erledigen,
sonst springt der µC da sofort wieder rein, sobald er sie verläßt.

also etwa so:

SER_IRQ:  CLR RI
          CLR TI
          CLR P2.0
          RETI

(Da Du in deinem Beispiel nichts sendest, würde es auch genügen, nur
den RI zu löschen.)
Am besten löschst Du die beiden Bits auch nochmal in der
Initialisierungsphase (nach dem setzen der SFRs, vor der Freigabe der
IRQs). Dann kannst Du sicher sein, daß der µC nicht - durch
irgendwelcher Einschaltimpulse gestört - in den SER-IRQ verzweigt.

Hoffe, das hilft,

Markus_8051

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.