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.
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.
> 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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.