User Manual
74
4.4.10. Tok programu a přerušení
Jak bylo probráno dříve, program bude zpracovávat základní instrukce postupně shora dolů.
Vedle tohoto standardního chování existuje řízení běhu programu pomocí podmíněných skoků,
cyklů a funkcí.
Mimo těchto obvyklých prostředků existují takzvaná “přerušení”. Tato přerušení může generovat
několik hardwarových modulů (časovač, TWI, UART, externí přerušení atd.) a vyžadují
okamžitou pozornost od mikroprocesoru. Správnou odezvu mikroprocesor zajistí opuštěním
normálního běhu programu a skokem na takzvanou rutinu pro obsluhu přerušení (ISR). Tato
reakce na přerušení je virtuálně nezávislá na toku programu. Nemějte obavy! Všechny potřebné
ISR byly připraveny do knihovny RP6Library a postarají se o všechny nezbytné události.
Nemusíte implementovat vlastní obsluhu přerušení. V této části rychle probereme všechny
základní věci, které musíte znát o těchto speciálních funkcích přerušení.
Základní struktura ISR je následující:
ISR ( <vektor přerušení> )
{
<blok příkazů>
}
tj. pro levý enkodér, připojený na externí přerušení 0:
ISR (INT0_vect)
{
// Na každé hraně signálu provedeme zvýšení dvou čítačů:
mleft_dist++; // ujetá vzdálenost
mleft_counter++; // měření rychlosti
}
Tyto ISR obsluhy přerušení nemůžeme volat přímo! Volání obslužné ISR se provádí
automaticky a může se vyskytnout kdykoliv! Kdykoliv a v libovolné části programu může volání
obsluhy přerušení zastavit normální běh programu (s výjimkou vlastní rutiny pro obsluhu
přerušení nebo v případě zakázaného přerušení). Při události přerušení se provádí příslušná
funkce ISR a po skončení ISR bude pokračovat provádění programu od místa, kde byl normální
běh opuštěn. Toto chování vyžaduje zařazení všech časově kritických částí programu do funkcí
ISR (nebo zákaz přerušení na krátký okamžik). Pokud se zpoždění nezpracuje jako událost
přerušení, mohou se prodloužit periody zpoždění, které mikroprocesor počítá pomocí
instrukčních cyklů.
Knihovna RP6Library používá přerušení ke generování modulovaného signálu 36kHz pro
infračervené snímače a IR komunikaci. Dále se používají pro dekódování RC5, funkce časování
a zpoždění, měření z enkodérů, obsluhu modulu TWI (sběrnice I
2
C) a několik dalších aplikací.