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
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.
..zieh doch mal das serielle Kabel und resette...besser? Ulli
Würde den Pin entweder toggeln oder zeitlich begrenzt setzen. Dann weißt du sofort mehr. SG Josef
Das mit dem Abziehen des seriellen Kabels funktioniert nicht! Aber ich werde den Bit mal zeitlich begrenzen, Danke! MfG Christian
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.