www.mikrocontroller.net

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


Autor: Jens __ (botro)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: grrrrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer sagt das du eine Antwort bekommst?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.