8051-Timer Interrupt erfolgt nur einmal

Gast #212309
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.
Gast #212311
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.
Gast #212312
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
Gast #212313
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
Gast #212314
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.