Hallo.Sitze jetzt hier schon set stunden und komme nicht mehr weiter. Möchte eigentlich nur beim Arm LPC2148 den timer0 benutzen und einen Interrupt auslösen.Das haut aber nicht hin,da mein Programm nicht in die S.Routine spring.Vielleicht kann mir da jemand helfen. Hier sind noch die einstellungen: void init_timer(void) { T0PR = 2; T0MR0 = 1900; //Match Register T0MCR = 3; //Interrupt and Reset on MR0 T0TCR = 1; //TIMER0 enable VICVectAddr0 = (unsigned long)tc0; VICVectCntl0 = 0x20 | 4; VICIntEnable = 0x00000010; //enable Timer0 interrup } void tc0(void) __irq { ausgabe(); T0IR=1; VICVectAddr =0; }
Hast du im startup-file den VIC-Vector beim IRQ eingetragen? Vectors LDR PC, Reset_Addr LDR PC, Undef_Addr LDR PC, SWI_Addr LDR PC, PAbt_Addr LDR PC, DAbt_Addr NOP ; Reserved Vector ; LDR PC, IRQ_Addr LDR PC, [PC, #-0x0FF0] ; Vector from VicVectAddr LDR PC, FIQ_Addr
In dem Codeausschnitt kann ich keinen Fehler entdecken. Sind Interrupts global aktiviert (I-Bit im CPSR)? Benutzt du Thumb-Code? Der GCC erzeugt dann falschen Code für die Interrupt-Handler. Für weitergehende Analysen solltest du ein compilierbaren Code anhängen. Sonst artet das nur in ein Ratespiel aus - sofern überhaupt noch jemand antwortet. - Michael
Vorsichtshalber sollte man vorher den Counter auf 0 setzen. Oder besser gleich den ganzen Timer zurücksetzen.
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.