Interrupts¶
Event-Driven Timing Execution
Overview¶
Interrupts allow REVA to execute timing-critical functions independently from the main loop.
This is essential because display updates, button scanning and menu logic are not suitable for precise waveform timing.
Purpose¶
The interrupt system provides:
- deterministic scheduling,
- repeatable timing,
- independence from loop execution speed,
- separation between user interface and waveform generation.
Firmware Relationship¶
loop()
Buttons
Display
Menus
EEPROM
↓
Interrupt System
↓
Timer2 Scheduler
↓
Timer1 Carrier Engine
↓
D9 / D10
Interrupt Hierarchy¶
Timer2
↓
Packet Scheduling
Timer1
↓
Carrier Generation
Timer2 controls the packet envelope.
Timer1 provides the carrier waveform.
Slow and Fast Work¶
Slow work belongs in the main loop.
Fast work belongs in the timer system.
| Work Type | Location |
|---|---|
| Display update | loop() |
| Button scan | loop() |
| EEPROM decision | loop() |
| Packet scheduling | Timer2 |
| Carrier generation | Timer1 |
Design Philosophy¶
Waveform generation should not depend on software execution speed.
Interrupt-driven timing gives REVA a stable timing foundation even while the user interface remains active.