Hallo allemaal,
Een klein probleempje. (hoop ik)
Ik wil met een Philips P89LPC902 controller de frequentie (ca. 400 Hz) van een pulserend signaal inlezen.
Omdat er geen gewone externe INT pin is, gebruik ik de keyboard interrupt functie. Hieronder zie je hoe ik eea. heb geconfigureerd.

Zelf zie ik niet wat ik verkeerd gedaan heb. Maar in de simulator van uVision2 wordt de interrupt vlag KBIF niet gereset. Code wordt wel doorlopen maar de simulator reageert er niet op.
Tot nu toe was het zo dat de simulator gelijk had. Wanneer tijdens simuleren iets niet werkte , had ik een foutje gemaakt. Ik vrees dat de simulator weer gelijk heeft.
Wie ziet de haper?

#include "REG902.h"

#ifndef byte
#define byte unsigned char
#define word unsigned int
#define TRUE 1
#define FALSE 0
#endif

#define MAXPULSEN 400 //400 is PTO 600 opm
#define MAXALARMDUUR 10 // 10 sec

sbit tPtoBoxOk = P0^4;
sbit tPtoVeilig = P0^5;
sbit tPtoPulse = P0^6;

int iPulsteller;
byte bAlarmfase;

void main (void){
// Init IO p154
P0M1 = 0x40; // P0.6 input only
P0M2 = 0x30; //P0.4 + p0.5 push pull

// interrupt mbv keyboard interrupt module p173
KBMASK = 0x40;
// KBPATN = 0xFF; // maak-kontakt
KBCON = 0x0; // Vlag resetten, signalen niet inverteren
EKBI = 1; // Keyboard interrupt vrijgeven

//Real time clock p229
WDCON = 0xF0; //WDT stoppen
RTCCON = 0x62; //RC-Osc gebruiken
RTCL = 0x00;
RTCH = 0xE1; //Reload 1 sec 57600 = 0xE100
RTCCON = RTCCON | 1; // start RTC
EWDRT = 1;

EA = 1; //enable interrupts

tPtoBoxOk = TRUE; //altijd aan
tPtoVeilig = TRUE;

while(1);
}

void vIntKeyboard()interrupt 7{
iPulsteller++;
KBCON = 0x0; //KBIF reset, >>>>>>> DIT WERKT DUS NIET ??
}

void vIntRTC()interrupt 10{
RTCCON = RTCCON & 0x7F; // reset RTCF
if(iPulsteller >= MAXPULSEN)
bAlarmfase++;
else
bAlarmfase = 0;

if(bAlarmfase >= MAXALARMDUUR){
bAlarmfase = MAXALARMDUUR;
tPtoVeilig = FALSE;
}
else
tPtoVeilig = TRUE;

if(iPulsteller == 0)
tPtoVeilig = TRUE;

iPulsteller = 0; //reset
}

Ik denk dat ik op de goede weg zit. Tijdens uitvoering interrupt KBPATN aanpassen helpt. K'ga nog even verder.