Forum: Mikrocontroller und Digitale Elektronik 8051-Timer Interrupt erfolgt nur einmal


von Martin Kerner (Gast)


Lesenswert?

Guten Morgen,

ich versuche gerade, mit dem Timer0 beim 8051er (Cypress AN2131)
regelmäßig einen Interrupt auszulösen. Als Initialisierung verwende ich
folgendes:

MOV TMOD,#00010001b  ;TMOD-Register: Timer, 16bit
SETB ET0    ;Timer0-Interrupt freigeben
SETB TR0    ;Timer 0 starten
SETB EA      ;Alle Interrupts freigeben

In der Interrupt-Routine steht folgendes:

CLR TF0
SETB TR0

Der Interrupt wird jedoch nur einmal ausgelöst, dann nicht
mehr. Wo liegt der Fehler?

Gruß, Martin.

von crazy horse (Gast)


Lesenswert?

reti?

von Martin Kerner (Gast)


Lesenswert?

Hallo,

@crazy horse

>reti?

das habe ich gemacht. Interessant ist, daß die Funktion mit
dem Cypress FX2 funktioniert, jedoch nicht mit dem AN2131.
Offensichtlich gibts da Unterschiede zwischen den 8051-Kernen.

von Peter Dannegger (Gast)


Lesenswert?

> In der Interrupt-Routine steht folgendes:
>
> CLR TF0
> SETB TR0


Das ist völlig überflüssig !

TF0 wird beim Eintritt automatisch gelöscht.
Wäre TR0 nicht bereits gesetzt, gäbe es erst gar keinen Interrupt.

Wo steht denn das RETI ?


Peter

von F. Haase (Gast)


Lesenswert?

Hallo,

ist sichergestellt das wichtige Register wie z.B. das TMOD, TCON und IE
nicht an anderer Stelle im Programm überschrieben werden!? ... auch
nicht die relevanten Bits davon/darin. Gruß Frank

von Markus_8051 (Gast)


Lesenswert?

So wie ich das sehe, sollte Dein Programm laufen. Denkst Du daran, daß
der Timer0 im 16bit-Modus keine Auto-Reload-Funktion hat? Sprich, Du
mußt den Startwert jedesmal selbst reinschreiben, sonst fängt er halt
bei null an zu zählen.

Poste mal den vollständigen Source-Code. Wie Frank schon geschrieben
hat, evtl. wird irgendwo an anderer Stelle etwas Böses mit den
Timerbits angestellt.

Gruß,
Markus_8051

von Niels H. (monarch)


Lesenswert?

Moment! Wie sieht denn der Vektor für den Timerinterrupt aus?

Ich hab, als ich noch noob war, statt JMP ein JSR gemacht. Das ging
natürlich fürchterlich in die Hose.

von Peter Dannegger (Gast)


Lesenswert?

Leute, der Thread ist 10 Tage alt.

Wohl ein typischer Fall von "Problem gelöst -> Schweigen im Walde"

Spart Euch also Eure Mühe.


Peter

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.