Forum: Mikrocontroller und Digitale Elektronik LPC2106 CAP1.0 + Interrupt geht nicht


von Jens _. (botro)


Lesenswert?

Hallo miteinander, ich hab einen LPC2106 der am Eingang von CAP1.0 ab 
und an eine Flanke bekommt (high und low) und er soll mir die Zeit 
dazwischen messen. Das ganze soll mittels Interrupt laufen, nur leider 
macht er es nicht. Hier mal der Code:

void init_rpm_mess_ISR(void);
void rpm_mess_ISR (void) __attribute__((interrupt("IRQ")));

void init_rpm_mess_ISR()
{
  T1_TCR = 0x02;   // disable Timer_1 and reset
  VICIntEnClr = (1<<5);  // disable Timer 1 VIC interrupt

  PINSEL0 &= ~(3<<20);  // reset P0.10
  PINSEL0 |=  (2<<20);  // set P0.10 to Cap1.0

  // setting up Timer_1

  T1_TC = 0x00;    // reset Timer Counter value
  T1_PC = 0x00;  // reset Prescale Counter value
  T1_PR = 0x00;   // set Prescaler Counter
  T1_CR0 = 0x00;  // reset Capture Register
  T1_CCR = 0x05;  // set Cap1.0 to falling edge | set Cap1.0 to 
interrupt
  T1_TCR = 0x01;   // enable Timer_1

  // setting up VIC for Timer_1
  VICIntEnClr |= (1<<5);
  VICIntSelect &= ~(1<<5);   // set Timer_1 interrupt to IRQ

  VICVectAddr2 =  (u32)rpm_mess_ISR;  // interrupt routine to handle 
Cap1.0
  VICVectCntl2 =  0x20 | 5;   // enable VIC 1 and set it to Timer_1
  VICIntEnable = (1<<5);  // enable Timer_1 VIC interrupt

}

void rpm_mess_ISR()
{

  PROP_LED_PORT_SET |= PROP_LED;

  T1_IR = (1<<4); // clear Cap1.0 interrupt

  VICVectAddr = 0;
}

Das I-Bit im CPSR ist 0, IRQs sollten also akzeptiert werden. Das 
Hauptprogramm ruft nur die Initialisierung auf und wartet dann 
(while(1);)

Die Initialisierung wird ordnungsgemäß durchlaufen, nur leider kann ich 
die Flanken am Eingang ändern wie ich will, es passiert nix. Er springt 
die Interruptroutine nicht an. So, falls irgendjemand eine Idee hat, 
woran es liegen kann, immer her damit. Ich such schon seit Tagen. Ach 
ja, ich verwende Yagarto.

Schonmal schönen Danke an die Antworter.

von grrrrrr (Gast)


Lesenswert?

Wer sagt das du eine Antwort bekommst?

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