Hallo ich hab hier einen 8051 Controller (genau gesagt ein Phytec-Board) und zur Zeit versuche ich eienn einfachen Timerinterrupt zu erzeugen. Aber so wie es aussieht klappt das nicht. Vielleicht hat jemand mehr erfahrung damit und kann mir sagen, wo mein Fehler liegt. startQNewARun() wird aus einem Menü heraus aufgerufen und soll den timer starten. Der Timer soll einfach nur einen Zähler erhöhen, der dann in runQNewARun() auf einem LCD ausgegeben wird. Leider steht der zähler immer bei 0. Mike
Du musst den Timer in der ISR wieder neu initialisieren und starten: void v_Timer0(void) interrupt 1 using 2 { TR0 = 0; // Timer0: STOP TL0 = 0x00; // Timer0: Wertuebergabe TH0 = 0x00; // TR0 = 1; // Timer0: START test++; } Gruss, Jan
Danke für den Tip, aber leider hilft er nicht. Irgendwie wird die ISR nie aufgerufen udn ich weiß nicht wiso. Muß die ISR an irgendeine bestimtme Stelle oder brauch ich noch ein Header-file? MfG Mike
Ist wie oben geschrieben ein Phytec-Modul mit einem Infineon C515 Controller (Genauer: SAB-C515-LN)
Man müßte schon ein komplettes Programm sehen und nicht nur einzelne Kodeschnipsel. "interrupt 1" sollte stimmen. Das "using" laß bloß weg, wenn Du nicht weißt, wozu das nütze ist. Das ist ein Schalter um eventuell geringste Laufzeitoptimierungen zu Lasten der SRAM-Nutzung vorzunehmen, nachdem das Programm bereits lauffähig ist. Bei "using" geht der Compiler davon aus, daß Du weißt, was Du tust, d.h. wenn es kracht, ist es Deine Schuld. Peter
Ich hab' mal ein Testprogramm geschrieben und mit dem Simulator getestet. Ist eigentlich genauso wie Du's beschrieben hast. Vielleicht deaktivierst Du in einem anderen Progammteil Deine IRs? Ein Header-File brauchst Du auf jedenfall nicht. Ist vielleicht das Source-File mit der ISR nicht includet? Teste doch mal das angehängte Programm mit deinem Simulator. Wenn Du im Debug-Modus bist kannst Du Dir unter Peripherals die Register des Timer0 anzeigen lassen. Lege außerdem die Testvariable uiTest in's Watch-Fenster. Mehr fällt mir im Moment leider auch nicht ein. Gruss, Jan
Viel dank schon mal soweit, mit dem Programm von dir funktioniert es. Hab damit gerade mal Pulse mit einer Frequenz von ziemlich konstant 3.906kHz erzeugt. Jetzt muß ich mal suchen, warum es in dme eigentlichen Programm nicht klappt. Leider stammt der Quellcode dort nicht von mir und os weiß ich nicht, was das alles programmiert ist. Aber ich werde mal suchen. Mike
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.