User Manual

81
4.6.3. Funkce zpoždění a časovače
Mikroprocesorové programy mají často vytvořit zpoždění nebo musí určitý čas počkat než se
provede nějaká akce.
K tomuto účelu nabízí funkce také knihovna RP6Library. Pro zajištění relativně přesného
zpoždění funkce využívají jeden ze tří časovačů ATmega32, který je nezávislý na běhu
programu nebo přerušení, které by mohlo narušit zpožďovací rutiny.
Při používání těchto funkcí musíte být opatrní! Použi těchto funkcí během automatické
regulace rychlosti a ACS (bude vysvětleno později) může způsobit problémy. Pokud potřebujete
používat automatickou regulaci rychlosti a ACS, používejte pouze velmi krátká zpoždění, menší
než 10 milisekund. Místo blokování programu pomocí zpoždění, můžete upřednostnit funkci
stopky, která bude probrána v sledující části.
void sleep(uint8_t time)
Tato funkce zastaví normální provádění programu na definovanou časovou periodu. Zpoždění
se specifikuje s rozlišením 100µs (100µs = 0,1ms = 0.0001s, což je pro vnímání lidskými smysly
příliš krátčas...). Použi proměnné s velikos 8 bitů umňuje nastavení zpoždění až 25500
µs = 25,5 ms. Zatímco normální program spí, přerušení se stále zpracovává. Tato funkce
pouze zpozdí zpracování normálního programu. Jak bylo uvedeno dříve, využívá funkce
hardwaročasovač a příliš neovlivňuje další události přerušení.
Příklady:
sleep(1); // zpozdeni 100µs
sleep(10); // zpozdeni 1ms
sleep(100); // zpozdeni 10ms
sleep(255); // zpozdeni 25.5ms
void mSleep(uint16_t time)
Pokud ak potřebujete delší zpoždění, můžete preferovat funkci mSleep, která umňuje
definovat periodu zpoždění v milisekundách. Maximální perioda zpoždění je 65535 ms, neboli
65.5 sekund.
Příklady:
mSleep(1); // zpozdeni 1ms
mSleep(100); // zpozdeni 100ms
mSleep(1000); // zpozdeni 1000ms = 1s
mSleep(10000); // zpozdeni 10 seconds
mSleep(65535); // zpozdeni 65.5
Stopky
Problém těchto standardních zpožďovacích funkcí je v tom, že zcela zastaví běh normálního
programu. To lze akceptovat pouze, kd určitá část programu musí čekat určitou časovou
periodu, zamco u jičásti se předpokládá, že pokračují ve zpracování úkolu...
Jedna z hlavních hod používání hardwarových časovačů je nezávislost na běhu normálního
programu. Pomocí těchto časovačů implementuje RP6Library univerzální takzvané Stopky.
Autor si vybral tento neobvyklý název pro podobnost se skutečnými stopkami.
Tyto Stopky budou jednoduše zvyšovat počet zpracování. obvykle se funkce časovače
přizpůsobuje potřebám jednotlivých programů, ale stopky umňují součas zpracování
několika úloh aspoň z vnějšího pohledu na mikroprocesor.