Hi,
Your fomula is correct. Pulsein works well for slower speed signals (6ms is slow) at 500RPM you would have to count 20 pulses for 5% (25RPM) resolution This would take 2.4 seconds between readings or 1.2 s for 50RPM resolution. Measuring the period takes only 0.12s with the full 16bit (0.15RPM) resolution of pulsein.
Below is some code I wrote as part as a gas turbine (jet) engine controller.
Pulsein_max colud de reduced to 15000 (0.15 seconds) for your 500RPM lower limit. This stops the program waiting for a pulse (default is 65 seconds) when the engine is not turning.
HTH,
Robert G8RPI.

'Start sequencer for gas turbine engines
'PIC16F877, XT, 4MHz
'Robert Atkinson G8RPI 29/01/03

'INPUTS------------------------------------------------------------

'HP Tacho input 70Hz = 100%

HPTACH VAR PORTB.0 'HP TACHOMETER INPUT
DEFINE PULSIN_MAX 41000 ' LIMIT MAXIMUM COUNT TIME TO 0.41S



'VARIABLES-----------------------------------------
HPRPM VAR WORD 'PERCENT HP RPM

HPPW VAR WORD 'ACTUAL PULSE WIDTH HP TACHO

'************************************************* *****************************

GOTO MAIN 'JUMP PAST SUBROUTINES


HPRPMCAP: 'RPM CAPTURE MODULE


PULSIN HPTACH, 1, HPPW

HPRPM = 35700 / (HPPW / 2) 'CALCULATION OF PERCENT BASED ON 2 POLE 4200 RPM = 100%
'35700 USED DUE TO 16 BIT MATH LIMIT
IF HPPW <400 OR HPPW >40000 THEN 'TRAP UNDER AND OVER PULSE WIDTHS
HPRPM = 0
ENDIF