I am not sure about the nature of the signals you are handling. If all of them are reaching the peak value at the same time, you can use the ADC to trigger the range interrupt. Inside the ADC ISR, you can continue taking the sample values for the duration you have mentioned and check for the peak value. The count value returned by the ADC for each channel can be checked, and inside the firmware you can make sure that the current sample value is greater than the previous sample value. Even if the three signals are independent and reach the peak value at different instances of time, same method can be extended. Only thing to take care will be how to handle peak value from the previous sample. This will be purely software based solution (as you may require) but it can be CPU intensive too.