Tyto obvody mají funkcí
hlídacích (nebo též dohlížecích) obvodů, což v případě mikroprocesorové techniky
znamená, že dohlížejí na správný chod programu (obvody Watchdog) nebo že
dohlížejí na dodržení základní podmínky, za které je mikroprocesor schopen
bezporuchově pracovat, tedy na dodržení odpovídající hodnoty napájecího napětí
(obvody Power-Fail).
Obvod může být buď
integrován přímo v daném typu mikroprocesoru jako jeho
nedílná součást, nebo může být konstruktérovi k dispozici ve formě externí
součástky (IO), kterou je ke stávajícímu mikroprocesoru nutné připojit. Záleží
na konstruktérovi, pro kterou možnost se rozhodne, integrovaný watchdog má
výhodu v tom, že ušetříme místo na DPS, obvykle je jednodušší obsluha, nevýhodou
může být použití určité typu mikroprocesoru, který nám nemusí vyhovovat z jiného
hlediska a s tím souvisí i pevně dané vlastnosti watchdogu. Použijeme-li externí
watchdog, zabere nám obvod nějaké místo na DPS a "ukradne" si pro sebe jeden pin
portu (Px.x), ale máme zase možnost výběru watchdogu, který nám svými
vlastnostmi nejvíce vyhovuje.
Obvod watchdog funguje jako časovač (v
podstatě jde o čítač), jež časuje po určitý interval. Tento interval je buď
pevně dán, nebo ho lze nastavit zapojením a hodnotami vnějších součástek, příp.
ho lze nastavit programově. Pokud tedy watchdog dočasuje celý interval, vyvolá
automaticky RESET mikroprocesoru. Aby k RESETu nedošlo, musíme zajistit jeho
vynulování (inicializaci) před dosažením časového intervalu. To provedeme buď
externím signálem, nebo znovuzapsáním hodnoty do řídícího registru watchdogu a
nebo speciální instrukcí. První možnost platí pro externí watchdog, další dvě
pro integrovaný watchdog.
A k čemu tedy vlastně obvod watchdog slouží?
Jednoduše řečeno - k ochraně proti "zakousnutí" nebo též "zatuhnutí" programu.
Pokud píšeme jakýkoliv rozsáhlý program, vždy se nám může stát, že za určitých
okolností může dojít k zacyklení programu, třeba vlivem náhodné změny dat v
paměti nebo neošetřené kombinace vstupních dat. Další chybou může být chybné
maskování přerušovacího signálu, chybná konfigurace periferních obvodů, chyba u
sériového kanálu atd. Tyto chyby (včetně elmag.rušení, pokud je zařízení v takovém
nepříznivém prostředí umístěno) mohou vést k nedefinovatelnému chování programu.
Protože naprostá většina aplikací s mikroprocesory vyžaduje chod v reálném čase
( tj. i zpracování časově kritických událostí), výše uvedeným chybovým stavům je
nutné zabránit i za cenu RESETu mikroprocesoru. K tomu využijeme obvod watchdog
a to následovně - do našeho programu vložíme instrukce, kterými zajistíme
obnovování (přesně nulování) hodnoty časovače, čímž zajistíme, že při správném
chodu programu nedojde k dočasování časového intervalu watchdogu a tím nedojde
ani k RESETu. Z toho vyplývá, že musíme zajistit potřebnou periodu obnovování
(nulování) časovače watchdogu.
Uvedeme si příklad integrovaného a
externího watchdogu.
Integrovaný watchdog - mikroprocesor ATMEL
AT89C55WD
Jde o nejjednodušší realizaci watchdogu, signál pro čítač je
brán z vnitřního oscilátoru (čítač je inkrementován každý strojový cyklus).
Časový interval 14-bitového čítače je pevně nastaven, a to dosažením
odpovídající hodnoty 16383 stroj.cyklů, tj. asi 16 ms při 12 MHz krystalu. Tato
nevýhoda může u složitější aplikace představovat komplikovanější programování.
Watchdog se v programu aktivuje zapsáním kombinace 01EH a 0E1H do registru
WDTRST (nový SFR), stejnou kombinací se čítač watchdogu nuluje. Po aktivaci
watchdogu ho již samozřejmě nelze vypnout, vypne se pouze RESETem mikroprocesoru
(ať už vlivem watchdogu nebo normálním hardwarovým resetem). Dále je možné
nastavit (v reg. AUXR), zda bude watchdog čítat i v režimu se sníženou
spotřebou. Navstává otázka, proč je čítač watchdogu nulován postupným zápisem
kombinace 01EH a 0E1H do registru WDTRST. Je to proto, že že watchdog musí být
chráněn proti náhodnému nulování chybně běžícím programem. K tomu by mohlo
dojít, pokud by k nulování stačila např. změna hodnoty jediného bitu v řídícím
registru. Watchdog musí mít též ošetřenu možnost náhodného vypnutí, u tohoto
mikroprocesoru ATMEL je to ošetřeno tím, že watchdog lze v programu pouze
aktivovat, ale ne už vypnout. U jiných mikroprocesorů může být ochrana proti
náhodnému vypnutí řešena obdobně, i třeba trochu benevolentněji - konfigurace
watchdogu je povolena pouze v omezeném čas.intervalu po RESETu.
Externí
watchdog - integ.obvod MAX690
Většina vyráběných integr.obvodů plnících
funkci watchdogu v sobě integruje i funkci obvodu hlídání napájení, integ.obvodů
čistě jen s funkcí watchdogu je minimum. Integrace obou funkcí do
jednoho obvodu (pouzdra) totiž představuje výhodu v malé ploše potřebné na DPS a
i v nepatrně nižší ceně, než kdybychom použili dva samostatné IO.
Integrovaný
obvod MAX690 je členem řady hlídacích IO (MAX690-MAX695) vyráběných firmou
Maxim. Tyto obvody v sobě sdržují kromě funkcí obvodu watchdog i další funkce
jako je obvod power-fail, power-up, power-down atd. My si tedy blíže popíšeme
obvod MAX690, který v sobě integruje jednoduchý watchdog s pevným časovým
intervalem 1,6 sekundy, dále obvod hlídání napájecího napětí včetně obvodu pro
přepnutí na záložní zdroj (baterii) a dále obvod zajišťující bezpečný RESET při
náběhu napájecího napětí (Power-up) a při odpojení napájení (Power-down).
A
tady přišel čas na to, vysvětlit si, jak fungují obvody hlídající napájení
mikroprocesoru. Částečně už byla jejich funkce vysvětlena výše - tyto obvody
monitorují hodnotu napájecího napětí, pokud dojde k poklesu nap.napětí pod
stanovenou mez, jsou schopny o tomto stavu předat informaci do připojeného
mikroprocesoru. Mikroprocesor tak dostane možnost (získá krátký čas) bezpečně
ukončit svou funkci před nádcházejícím výpadkem napájení, stihne tak např. u
systému bez zálohování napájení pro mikroprocesor nebo paměť RAM uložit rychle
důležité údaje do paměti EEPROM a nedovolit další zápis do této paměti. Některé
obvody mají navíc možnost přepnutí na záložní baterii při poklesu nap.napětí, a
tím je bezpečnost bezchybného uložení údajů do EEPROM ještě zvýšena. Pokud
použijeme baterii s dostatečnou kapacitou, můžeme ji pak po přepnutí využít k
napájení paměti RAM, samotného mikroprocesoru, příp. dalších log.obvodů s malým
příkonem. Odpadne tak nutnost použít pamět EEPROM (při krátkodobém výpadku
napájení). Hlídací obvody bývají ještě doplněny o obvody zajišťující bezpečný
RESET při náběhu napájecího napětí (Power-up nebo též Power-on) a při odpojení
napájení (Power-down nebo též Power-off).
Dále budeme pokračovat v popisu
obvodu MAX690. Obvod se vyrábí v pouzdře DIP o 8 vývodech. V
současnosti je asi nejpoužívanějším obvodem typu watchdog + power-fail, i když
je poslední dobou vytlačován funkčně obdobnými, ale mnohem levnějšími obvody.
Více najdete v dokumentaci k tomuto obvodu, existují také další více či méně zdařilá řešení, jak obejít použití těchto specializovaných obvodů.
|
© DH servis 2002 - |