架构师_程序员_码农网

P Získanie hesla
Registrácia

QQ登录

Stačí jeden krok, aby ste mohli začať

Vyhľadávanie
Zobrazenie:5109|Odpoveď: 0
打印 上一主题 下一主题

[Translate] Zigbee Journey (IV): Niekoľko dôležitých základných experimentov s CC2430 - prerušenie časovača

[Kopírovať odkaz]
V 跳转到指定楼层
majiteľovi budovy
发表于 2014-10-30 23:17:29|只看该作者回帖奖励|Reverznéprehliadanie|Režim čítania
I. Pokračovanie predchádzajúceho článku

  V predchádzajúcej časti sme sa spoločne dozvedeli o implementácii jednoduchých externých prerušení. Po praktických skúsenostiach s prerušeniami sa v tejto časti budeme venovať prerušeniam časovačov. CC2430 má 4 časovače, ktoré možno rozdeliť do 3 kategórií: Timer1, Timer2, Timer3/4 (použitie 3 a 4 je rovnaké).

  Keďže aj autor sa CC2430 len dotýka, skúsenosti s projektom zahŕňajúcim časovač sú v podstate nulové, preto sa nechystám (a ani nemôžem pomôcť) hĺbkovou analýzou časovača. Tento článok len o použití prerušenia počítadla 1 preplnenia časovača na jednoduchý experimentálny prieskum, pre jeho zachytenie vstupov/porovnanie výstupov/PWM funkcie je vynechaný. Časovač 2 a časovač 3/4 sú tiež predstavené len stručne. Čaká sa, kým autorská sila dosiahne určitú úroveň ohňa, a potom sa postaví do výšky bojových skúseností Zigbee na zlepšenie tejto eseje.

Časovač 1

  Timer1 je 16-bitový časovač s funkciami časovača/počítača/ modulácie šírky impulzu. Má tri individuálne programovateľné kanály na zachytávanie vstupov/porovnávanie výstupov, z ktorých každý možno použiť ako výstup PWM alebo použiť na zachytávanie času hrany vstupného signálu (viac informácií o tom, čo je to zachytávanie vstupov/porovnávanie výstupov a ako implementovať výstupy PWM, si čitatelia môžu sami nájsť v čínskej príručke CC2430).

  Časovač má veľmi dôležitý pojem: režim prevádzky.

  Medzi režimy prevádzky patria: voľný chod, modulo a hore-dole.

  Nasleduje predstavenie týchto troch režimov z čínskej príručky CC2430:

2011022119590527.jpg



  Pri porovnaní týchto troch režimov je vidieť, že: hodnota pretečenia v režime voľného behu je 0xFFFF, ktorá sa nedá zmeniť; zatiaľ čo ostatné dva režimy sa dajú presne ovládať priradením hodnoty T1CC0, aby sa presne kontrolovala hodnota pretečenia časovača. Tento experiment využíva túto funkciu na to, aby časovač spúšťal prerušenie každú 1s prostredníctvom špecifickej hodnoty T1CC0, a tak presne riadil interval blikania LED diódy 1s.

(1) Úvod do experimentu

  V režime modulo časovača sa interval blikania LED presne riadi tak, aby bol 1s, t. j.: svetlo 0,5s → tma 0,5s → svetlo 0,5s → tma 0,5s ...... → svetlo 0,5s → tma 0,5s (t. j. okamih prechodu z tmy do svetla je 1s). Zmena smeru svetla/tmy sa realizuje pomocou prerušenia pretečenia.

(2) Bloková schéma programu

(3) Súvisiace výpočty

  Ako už bolo uvedené, stav LED diódy je: jasná 0,5s → tmavá 0,5s → jasná 0,5s → tmavá 0,5s ...... → svetlý 0,5s → tmavý 0,5s a je potrebné dosiahnuť prerušenie pretečenia, takže je potrebné, aby perióda pretečenia časovača bola 0,5s. Na tento účel je potrebné vypočítať príslušnú hodnotu pretečenia (dočasne nastavenú na N).

  Systémová hodinová frekvencia je zvolená ako 32 MHz a hodinová frekvencia poskytovaná časovaču je štandardne 16 MHz (obe sa konfigurujú pomocou špeciálneho funkčného registra CLKCON, ktorý nájdete v čínskej príručke CC2430).

  Pre časovač 1 nastavte jeho hodinovú frekvenciu na 128 delení.

  Ak to zhrnieme, vzorec môže byť nasledovný:

2011022120560133.jpg
c

  Zistite N = 62500, jeho hexadecimálna hodnota je 0xF424, to znamená, že musíte nastaviť T1CC0H = 0xF4, T1CC0L = 0x24 to znamená .








(
4) zdrojový kód experimentu a analýza/* Popis experimentu: Experiment s časovačom1, pretečenie počtu časovačov, blikanie LED1 */ #include #define led1 P1_0 # define led2 P1_1 #define led3 P1_0 #define led3 P1_1

1 #define led3 P1_2 #define led4 P1_3 &





n bsp; /* inicializácia systémových hodín-------------------------------------------------------*/void xtal_init( void ) { SLEEP &=~0x04;&
nbsp; // obidve napájaniawhile (!
(SLEEP & 0x40 )); //kryštálový oscilátor zapnutý a stabilný CLKCON &=~0x47; &







nbsp; //zvoľte 32MHz kryštálový oscilátor SLEEP |=0x04; }/*Inicializácia LED-------------------------------------------------------*/void led_init( void ) { &
nbsp; P1SEL = 0x00; //P1 je normálny I/O port P1DIR |=0x0F; &

nbsp; //P1.0 P1.1 P1.2 P1.3 výstupy led1 =1; &






nbsp; //Vypnúť všetky LEDl ed 2 = 1; led3 =1; led4 =1; }/*Inicializácia T1---------------------------



- ---------------------------*/void timer1_init( void ) {EA=1; // zapnúť celkové prerušenie &
nbsp; T1IE=1; // zapnúť prerušenie T1OVFIM=1; // zapnúť pretečenie T1



p rerušenieT1CC0L=0x24; //hodnota pretečenia nízka 8 bitov T1CC0H=0xF4; //hodnota pretečenia vysoká 8 bitov &

nbsp; T1CTL =0x0e; //128 delení; modulový režim (0x0000->T1CC0); spustenie chodu;T1IF=0; &




nbsp; // vymazať príznak prerušenia }/* hlavná funkcia-------------------------------------------------------*/void main( void





) { xtal_init(); led_init(); timer1_init();while ( 1); &





nbsp; //čakanie na prerušenie preplnenia }/* Podprogram obsluhy terminálu T1-------------------------------------------------------*/#pragma vector=T1_VECTOR__interrupt



v oid T1_ISR( void ) {EA=0; //vypnutie prerušenia led1 = !


led1; //LED sa obrátiEA=1; //Na prerušenie &nbsp

; T1CTL &=~0x10; //vymazať príznak prerušenia }

  OK, skompilujte program a online ladenie, vývojová doska na LED1 bliká podľa očakávania, cítiť interval blikania asi 1 s. Ale to nestačí na preukázanie úspešnosti experimentu, ak sa dá striktne určiť interval 1 s, bolo by to perfektné ~ tak som otvoril hodiny WIN 7 (kliknite na pravej strane panela úloh čas môže byť). Pri sledovaní sekundovej ručičky som sa kútikom oka pozrel na blikajúcu LED1. Výsledok je nasledovný: za dve minúty je ich tempo v podstate identické (túto presnosť možno tolerovať ~). V tomto momente možno povedať, že experiment je v podstate ukončený, hehehe~

Po tretie, časovač 2

  Časovač 2, známy aj ako časovač MAC, je špeciálne navrhnutý na podporu protokolu sledovania udalostí v IEEE 802.15.4 MAC. Časovač má 8-bitový čítač pretečenia, ktorý možno použiť na zaznamenanie počtu cyklov, ktoré sa vyskytli; má 16-bitový register zachytávania, ktorý sa používa na zaznamenanie presného času prijatia/odoslania vymedzovača začiatku rámca alebo presného času ukončenia prenosu; a obsahuje aj 16-bitový výstupný porovnávací register, ktorý sa používa na generovanie rôznych príkazovo selektívnych komunikačných signálov pre bezdrôtový modul v určitom čase (začiatok prijímania, začiatok vysielania atď.).

Časovač 3/4

  Časovač 3/4 je 8-bitový časovač s funkciami časovača/počítača/PWM. t3/t4 má dva výstupné porovnávacie kanály, z ktorých každý možno použiť ako výstup PWM.

V. Záver

  V tejto časti sme sa naučili metódu počítania prerušenia preplnenia časovača 1 a dosiahli sme presné riadenie intervalu blikania LED 1 s. Ostatné časovače len preletíme a neskôr sa k nim vrátime. V ďalšej časti sa oboznámime s komunikáciou cez sériový port CC2430.






Predchádzajúci: [Re-]Zigbee Journey (III): Niekoľko dôležitých základných experimentov s CC2430 - externé prerušenia
Nasledujúci: [Opätovná zmena] Zigbee Journey (V): Niekoľko dôležitých základných experimentov s CC2430 - sériová komunikácia
Kód farmárskej siete, zverejnený len v procese praxe, vyskytli sa technické ťažkosti, nie zavádzanie ostatných.

T áto verzia integrálnych pravidiel


VYHLÁSENIE: Všetok softvér, programové materiály alebo články uverejnené Code Farmer sa môžu používať len na vzdelávacie a výskumné účely; uvedený obsah sa nesmie používať na komerčné alebo nezákonné účely, inak všetky dôsledky znášajú samotní používatelia. Táto stránka informácie zo siete, spor o autorské práva nemá s touto stránkou nič spoločné. Vyššie uvedený obsah musíte do 24 hodín od stiahnutia úplne odstrániť z počítača. Ak sa vám program páči, podporte prosím 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 e-mailom, aby sme to mohli riešiť.

Mail To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Mapa stránok

GMT+8, 2024-9-17 14:50

Rýchla odpoveďSpäť na začiatokSpäť na zoznam