Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 9306|Odpoveď: 0

Zigbee Journey (8): Niekoľko dôležitých základných experimentov CC2430 – strážne psy

[Kopírovať odkaz]
Zverejnené 30. 10. 2014 23:23:37 | | | |
1. Prepojenie hornej a dolnej úrovne

Nezáleží na tom, aký dobrý je operačný systém, či už ide o aktuálny Win7 alebo budúce Win8 a Win9, vždy tu bude BlueScreen, nehovoriac o malom mikrokontroléri~ Nepredvídateľné dôvody ako elektrický šum, výpadok napájania, elektrostatický výboj a podobne môžu spôsobiť abnormálnu prevádzku zabudovaného systému.

Presnejšie povedané, Watch Dog by mal byť watchdog časovač, čo je obvodová štruktúra špeciálne používaná na monitorovanie bežiaceho stavu programu mikrokontroléra. Základný princíp je: po spustení watchdog časovača začne odpočítavať od 0, ak program nevymaže časovač včas v stanovenom časovom intervale, watchdog časovač resetuje systém (čo je ekvivalent reštartu počítača), ako je znázornené na obrázku nižšie (nakreslené vo Worde, kresba je ešte väčšia otrava~):

Predstavme si jednoduchú metódu aplikácie strážneho psa: Ako pustiť psa? Ako sa kŕmiť? Čo sa stane, ak ho nenakŕmiš?

2. Príbeh strážneho psa(1) Úvod do experimentu

Ak je pes kŕmený, systém beží normálne; Ak psa nenakŕmiš, systém sa stále reštartuje.

(2) Schéma toku programu

(3) Experimentálny zdrojový kód a analýza/*
    Popis experimentu: V experimente so strážnym psom, ak pes nie je kŕmený, systém sa stále reštartuje.
*/

#include

#define viedol1 P1_0         
#define LED2 P1_1         
#define LED3 P1_2         
#define Lead4 P1_3   

/*系统时钟初始化
-------------------------------------------------------*/
prázdnotaxtal_init(prázdnota)
{
  SPAJ &= ~0x04;            //都上电
  zatiaľ čo(! (SLEEP &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Vyberte 32MHz kryštálový oscilátor
  SPAK |=0x04;
}

/*LED初始化
-------------------------------------------------------*/
prázdnotaled_init(prázdnota)
{
  P1SEL =0x00;              P1 je bežný I/O port
  P1DIR |=0x0F;              P1.0 P1.1 P1.2 P1.3 výstup
  
  led1 =1;                  //关闭所有LED
  led2 =1;
  LED3 =1;
  LED4 =1;
}

/*看门狗初始化
-------------------------------------------------------*/
prázdnotawatchdog_Init(prázdnota)   
{
  WDCTL =0x00;              //看门狗模式,时间间隔一秒
  WDCTL |=0x08;            //启动看门狗
}

/*喂狗程序
-------------------------------------------------------*/
prázdnotaFeetDog(prázdnota)   
{
  WDCTL =0xa0;
  WDCTL =0x50;
}

/*延时函数(小于1秒。读者可以想一下,若大于1秒,会出现什么情况)
-------------------------------------------------------*/
prázdnotaOneskorenie(prázdnota)
{
  nepodpísané intn;
  pre(n=50000; n>0; n--);
  pre(n=50000; n>0; n--);
  pre(n=50000; n>0; n--);
  pre(n=50000; n>0; n--);
  pre(n=50000; n>0; n--);
  pre(n=50000; n>0; n--);
  pre(n=50000; n>0; n--);
}

/*主函数
-------------------------------------------------------*/
prázdnotamain(prázdnota)
{
  xtal_init();  
  led_init();
  watchdog_Init();

  Delay();
  led1 =0;         //点亮led1
  
  zatiaľ čo(1)
  {
    FeetDog();      Príkaz na kŕmenie psom (systém sa po pripojení neresetuje a malé svetlo nebliká; Ak je anotovaný, systém sa bude naďalej resetovať a malé svetlo bliká každých 1 sekundu)
  }
}

Ako môžete vidieť zo zdrojového kódu vyššie, spôsob ovládania Watch Dog je veľmi jednoduchý a celý proces zahŕňa iba nový SFR, konkrétneWDCTL。Nasleduje konkrétny popis CC2430 v čínskom manuáli:

Použitie strážnych psov možno zhrnúť takto:Vyberte režim → časovač → dajte psa → kŕmiť psa

(1) Výber režimu:

Watchdog časovač má dva režimy, a to "watchdog režim" a "timer" režim.

V režime časovača je ekvivalentný bežnému časovaču a keď sa dosiahne interval časovača, vytvorí prerušenie (nájdete ho v súbore ioCC2430.h s vektorom prerušenia WDT_VECTOR); V watchdog režime, keď sa dosiahne plánovaný interval, nedochádza k prerušeniu, namiesto toho sa systému pošle signál resetu.

V tomto experimente prešlaWDCTL. MODE=0na výber režimu strážcu brány.

  (2) Vyberte plánovaný interval:

Ako je znázornené na obrázku vyššie, na výber sú štyri hodinové periody, a pre pohodlie testu volíme časový interval 1s (t. j. poradie).WDCTL.INT=00)。

  (3) Pustite psa:

PoradieWDCTL.EN=1Na spustenie watchdog časovača.

  (4) Nakŕmte psa:

Keď sa časovač spustí, začne odpočítavať od nuly. Predtým, než jeho počet dosiahne 32768 (t. j. <1s), ak psa nakŕmime nasledujúcim kódom:

  WDCTL =0xa0;
  WDCTL =0x50;  

Potom sa hodnota počítača vyčistí na 0 a začne opäť odpočítavať od 0x0000, čo zabraňuje odoslaniu resetovacieho signálu, ktorý sa prejaví na vývojovej doske: LED1 bude vždy zapnutý a nebude blikať;

Ak psa nenakŕmime (t.j. nekomentujeme tento kód), keď časovač dosiahne 32768, vydá sa signál resetu a program sa spustí od začiatku, čo sa prejaví na vývojovej doske: LED1 neustále bliká a interval blikania je 1s. (Poznámka: Program kŕmenia psa musí byť prísne v súlade s vyššie uvedeným kódom a ak je príkaz obrátený/nesprávny/napísaný, menej nebude hrať úlohu pri vyčistení 0.) )

Tipy na CC2430
Dve ďalšie poznámky:
(1) VRežim Watch DogAk bol watchdog časovač zapnutý, nastavenie 0 na WDCTL.EN je neplatné (t. j. tento bit nemôže plniť úlohu zastavenia časovača);
(2) VRežim časovača, môžete zapísať 1 do WDCTL.CLR[0] na vymazanie časovača; Zapísaním 0 do enable bitu WDCTL.EN sa časovač zastaví, zatiaľ čo zápisom 1 do enable bitu sa časovač od 0x0000 znovu spustí.


(4) Experimentálne výsledky:

Ak pridáte funkciu FeedDog, spustíte kód a zistíte, že LED1 je stále zapnutý (systém sa neresetuje);

Ak zadáte funkciu FeedDog, spustíte kód a zistíte, že LED1 bliká v intervaloch 1 s (systém sa resetuje každých 1 s).

3. Záver

Táto časť popisuje princíp a použitie watchdog časovacích obvodov. V praktických aplikáciách, ak je požadovaná vysoká spoľahlivosť, môže byť watchdog použitý v systéme. Keď systém z nejakého dôvodu zlyhá (už nemôže psa nakŕmiť), pes, ktorého nikto nekŕmi, začne štekať: "Majster, je tu anomália, je tu anomália! ”

Pre bezdrôtovú senzorovú sieť je jej spotreba energie počas prevádzky kľúčovým aspektom hodnotenia výkonu. V ďalšej časti sa budeme venovať spánku systému CC2430 a jeho prerušenému budeniu.






Predchádzajúci:Zigbee Journey (7): Niekoľko dôležitých základných experimentov CC2430 - DMA prenos
Budúci:Zigbee Journey (9): Niekoľko dôležitých základných experimentov CC2430 – systematický spánok a prerušovaná bdelosť
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com