LPC2148: Probleme mit Timer0 Capture-Interrupt

Gast #1106131
Lesenswert?

Moin,

ich möchte bei einem LPC2148 den Port P0.28 als externen
Interrupt benutzen, Entwicklungsumgebung ist WinArm.
Aber irgendwie wird der Interrupt nicht ausgelöst, obwohl
das Signal sehr wohl am entsprechenden Pin zu messen ist.

Kann mir jemand sagen, was ich bei der Initialisierung falsch mache?
1
// initialize the interrupt vector 
2
VICIntSelect &= ~VIC_BIT(VIC_TIMER0);  // TIMER0 selected as IRQ 
3
VICVectCntl4 = VIC_ENABLE | VIC_TIMER0;  // TIMER0 on VIC vector 4 
4
VICVectAddr4 = (uint32_t)ButtonISR;  // address of the ISR 
5
VICIntEnable = VIC_BIT(VIC_TIMER0);  // TIMER0 interrupt enabled 
6
// Port P0.28 -> AD0.1/Capture 0.2
7
// PIN 25:24
8
PINSEL0 = (PINSEL0 & ~0x03000000) | 0x02000000;
9
// enable timer0 interrupt on faling edge of CR2 capture
10
T0CCR |= TCCR_CR2_I | TCCR_CR2_F;

Gruß
LastPub
#1106233
Lesenswert?

PINSEL0 = (PINSEL0 & ~0x03000000) | 0x02000000;
ist falsch!!!

versuche mal das hier:
PINSEL1 = (PINSEL1 & ~(1L<<25) ) | (1L<<24);

eventuell muss der Timer noch gestartet werden:
T0TCR = 1;

enableIRQ();// Interrupts erlauben

Ich gehe mal davon aus, dass Du EINT0-3 anderwertig belegt hast, sonst 
währen diese die richtige Wahl.
Gast #1106284
Lesenswert?

Ups ... stimmt PINSEL0 ist falsch. Wer lesen kann ist
klar im Vorteil :-)), vielen Dank.

Aber es geht immer noch nicht.

EINT0-3 sind bei mir leider schon belegt, deswegen wollte
ich auf die Capture-Eingänge ausweichen.

Gruß
LastPub

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