Depends how accurate it needs to be. You could sleep the process for 100ms, then do all the stuff on wakeup. Time per iteration will be 100ms plus processing time. So if it needs to be exactly 10 times a second, every second, best bet is to wakeup more frequently than that (say every 10ms) then check the system clock and see if it's 100ms later than the last time you did stuff: if not go back to sleep, if so then do the processing. You'll still get a bit of jitter this way but you can reduce the amount of jitter by reducing the sleep time. If it needs to be *exactly* every 100ms then you will need an RTOS.