function scheduler (i.e. not preemptive, using multi shot functions) based on shot rate