Обычно всё работает по прерываниям таймера, даже УАРТЫ, I2C и остальная хрень, где не нужно СИНХРОНИЗИРОВАТЬ с внешним воздействием.