interrupt
Interrupt (přerušení) je mechanismus, kterým hardware nebo software asynchronně upozorní procesor, že nastala událost vyžadující pozornost.
Když přijde interrupt, procesor přeruší aktuální provádění, uloží kontext (registry, program counter) a skočí do interrupt handleru — funkce, která událost obslouží. Po dokončení se vrátí k původnímu kódu.
Interrupt vs. Polling
Dva přístupy ke zjišťování událostí:
- Polling — procesor se v smyčce opakovaně ptá “stalo se něco?”. Jednodušší na pochopení, ale plýtvá cykly CPU.
- Interrupt — hardware sám oznámí procesoru, že se něco stalo. Efektivnější — procesor dělá jinou práci a reaguje jen když je potřeba.
Interrupt vs. Event
- Interrupt — vyvolá skok do handleru (přeruší aktuální kód)
- Event — jen nastaví příznak, který lze pollingem kontrolovat, nebo probudí procesor z low-power režimu. Nevyvolá handler.
NVIC
Viz NVIC.
Edge Detection
Interrupt může být nakonfigurován na detekci:
- Rising edge — přechod signálu z LOW do HIGH (0→1)
- Falling edge — přechod z HIGH do LOW (1→0)
- Both edges — obojí
Debouncing
Mechanické spínače (tlačítka) při stisku generují rychlé zákmity (bouncing) — signál několikrát poskočí mezi 0 a 1 během pár milisekund. Řeší se dvěma mechanismy:
- Časový debounce — ignoruj události po dobu N ms po posledním stisku
- Edge detection — reaguj jen na přechod (náběžnou hranu), ne na stav. Kombinace obou přístupů je nejspolehlivější.