Hej!

Ich bin leider noch nicht dazugekommen die Lösung zu posten, aber jetzt ist es so weit!
Also das ganze funktioniert so:

Code:
void extISR(void) interrupt 0x18
{
	counter = counter +1;
}

void main(void){
//Pin Konfig
DP1H_P0 = 0;
DP1H_P4 = 0;
	
//1.
//Mode Register auf Capture setzen
CC2_M4 |= 0x0200;

//2.
MAIN_vUnlockProtecReg();
//ConRegister auf falling edge setzen
EXICON |= 0x0002; 
	
//Interrupt LVL und GVL setzen
CC1_CC8IC = 0x0059;

//
...
//

PSW_IEN = 1;

//
...
//

}
1. Das Moderegister ist hier komplett unnötig!
2. Die Unlockroutine direkt vor dem Setzen des entsprechenden Registers aufrufen

Will man außerdem nicht nur Fast External Interrupts verwenden, sondern diese auch noch aus dem Interrupt Cache aufrufen, muss man die entsprechenden ISR´s im Cache regestrieren:

Code:
FINT0CSP   = SEG(extISR) | 0x8C00;
FINT0ADDR  = SOF(extISR);
Dazu braucht man entweder folgende Macros:
Code:
//Defines/oder eher Macros
#define SEG(func) (unsigned int)(((unsigned long)((void (far *) (void))func) >> 16))
#define SOF(func) (unsigned int)(((void (far *) (void))func))
oder man schaut einfach im Debugger nach und holt von dort die entsprechende Adresse.

Zu beachten: LVL und GVL des Controllregisters (hier: CC1_CC8IC) und des Regestrationsregisters (hier: FINT0CSP) müssen gleich sein. Sonst gehts nicht!

lg Manta22