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 zajis 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 virtlně nezávislá na toku programu. Nemějte obavy! Všechny potřebné
ISR byly připraveny do knihovny RP6Library a postarají se o echny nezbyt události.
Nemusíte implementovat vlastní obsluhu přerušení. V této části rychle probereme echny
základní věci, které musíte zt o těchto speciálních funkcích přerušení.
Základní struktura ISR je sledující:
ISR ( <vektor přerušení> )
{
<blok příkazů>
}
tj. pro le 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ž 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 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š
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í ech časově kritických čás programu do funkcí
ISR (nebo zákaz přerušení na krát 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í.