LPC 2148

Gast #547875
Lesenswert?
• ▲
▼
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;
}
Gast #548199
Lesenswert?
• ▲
▼
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
Gast #548244
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren