Why are you resetting beats to 0 in the interrupt handler. Does the heartbeat monitor generate two pulses per heartbeat?
edit:
I looked at some information on the hardware you are using, it seems it sends an analog output. I am not sure if you will get reliable triggering of the interrupt from this. I noticed some sample code that monitors the output using the equivalent of analogRead and you could do something like that, or you could condition the signal using a Schmitt trigger or similar. But the Sparkfun part looks like it outputs a 1ms pulse so it may not be worth the trouble trying to get the analog signal working. But if you do want to, you can read more about Schmitt triggers here: Schmitt trigger - Wikipedia