Reading a tachogenerator
There's an obvious code problem in your blink() function:

state != state;


The above statement will never modify your state variable. The != operator in C/C++ does not perform an assignment (unlike operators such as += and -=). It's a comparison operator which just tests for inequality. You presumably meant to do this:

state = !state;


That may not fix your problem entirely though. You might find that the interrupt doesn't get reliably triggered anyway because it's not designed to handle AC. I'd recommend using an external comparator circuit to generate a clean digital signal, such as a Schmitt trigger.