How Embedded Systems Keep Track of Time: Timers, Counters, and System Ticks