Make ISR function from polling function

What is 'precise' in this environment ( µs, ms? ). Maybe your main code is written with blocking functions?
You cannot turn your peakAndHold into an ISR. An ISR cannot have parameters, and it must be short. delay() is not allowed in an ISR. Your peakAndHold runs much too long for an ISR.

Maybe you need timer functions to generate this signal.