架构师_程序员_码农网

F Jelszó lekérése
Regisztráció

QQ登录

Csak egy lépés az induláshoz

Keresés
Megtekintés:5109|Válasz: 0
打印 上一主题 下一主题

[Translate] Zigbee Journey (IV): Néhány fontos CC2430 alapvető kísérletek - időzítő megszakítása

[Link másolása]
L 跳转到指定楼层
az épület tulajdonosához
发表于 2014-10-30 23:17:29|只看该作者回帖奖励|ReverseBrowse|Read Mode
I. Az előző cikk folytatásaként

  Az előző részben az egyszerű külső megszakítások megvalósítását ismertük meg közösen. A megszakításokkal kapcsolatos gyakorlati tapasztalatok megszerzése után ebben a részben az időzítő megszakításokat tárgyaljuk. 4 időzítővel rendelkezik a CC2430, amelyek 3 kategóriába sorolhatók: Timer1, Timer2, Timer3/4 (a 3 és 4 használata megegyezik).

  Mivel a szerző is csak megérinti a CC2430-at, az időzítővel kapcsolatos projekt tapasztalata alapvetően nulla, ezért nem szándékozom (és nem tudok segíteni) az időzítő mélyreható elemzését. Ez a cikk csak az időzítő 1 számolásának túlcsordulási megszakítási használatáról szól, hogy egyszerű kísérleti feltárást végezzen, a bemeneti rögzítés / kimeneti összehasonlítás / PWM funkciója kimarad. A 2. időzítő és a 3/4. időzítő szintén csak röviden kerül bemutatásra. Várva, hogy a szerző hatalma elérje a tűz egy bizonyos szintjét, majd álljon a Zigbee harci tapasztalatainak magasságában, hogy javítsa ezt az esszét.

Időzítő 1

  Az időzítő1 egy 16 bites időzítő időzítő / számláló / impulzusszélesség-modulációs funkciókkal. Három külön-külön programozható bemeneti rögzítő / kimeneti összehasonlító csatornával rendelkezik, amelyek mindegyike PWM-kimenetként használható, vagy a bemeneti jel élidejének rögzítésére használható (további információkért arról, hogy mi a bemeneti rögzítés / kimeneti összehasonlítás és hogyan kell megvalósítani a PWM-kimeneteket, az olvasók saját maguk olvashatják a CC2430 kínai kézikönyvét).

  Az időzítőnek van egy nagyon fontos fogalma: működési mód.

  A működési módok közé tartoznak: szabadonfutás, modulo és fel-le.

  Az alábbiakban a három üzemmód bemutatása következik a CC2430 kínai kézikönyvéből:

2011022119590527.jpg



  A három üzemmódot összehasonlítva látható, hogy: a szabadon futó üzemmód túlcsordulási értéke 0xFFFF, ami nem változtatható; míg a másik két üzemmód pontosan szabályozható a T1CC0 értékének hozzárendelésével, hogy az időzítő túlcsordulási értéke pontosan szabályozható legyen. Ez a kísérlet ezt a funkciót használja ki, hogy az időzítő 1s-ként megszakítást indítson a specifikus T1CC0-n keresztül, hogy pontosan szabályozza az 1s LED villogási intervallumát.

(1) A kísérlet bevezetése

  Az időzítő modulo üzemmódjában a LED villogási időközét pontosan 1s-re szabályozzuk, azaz: világos 0,5s → sötét 0,5s → világos 0,5s → sötét 0,5s ...... 0,5s → sötét 0,5s. → világos 0,5s → sötét 0,5s (azaz a sötétből világosba való átmenet pillanata 1s). A világos/sötét átváltás a túlcsordulás megszakításával valósul meg.

(2) A program folyamatábrája

(3) Kapcsolódó számítások

  Mint már említettük, a LED állapota: világos 0,5s → sötét 0,5s → világos 0,5s → sötét 0,5s ...... → világos 0,5s → sötét 0,5s, és a túlcsordulás megszakítással kell elérni, ezért az időzítő túlcsordulási periódusa 0,5s. Ehhez ki kell számítani a megfelelő túlcsordulási értéket (ideiglenesen N-re kell állítani).

  A rendszeróra frekvenciája 32MHz-re van beállítva, és az időzítő számára biztosított órajel frekvenciája alapértelmezés szerint 16MHz (mindkettőt a CLKCON speciális funkcióregiszterrel lehet konfigurálni, amely a CC2430 kínai kézikönyvében található).

  Az 1. időzítőhöz állítsa be az órajel frekvenciáját 128 osztásra.

  Összefoglalva, a képlet a következő lehet:

2011022120560133.jpg
c

  Derítsd ki, hogy N = 62500, annak hexadecimális értéke 0xF424, azaz be kell állítani T1CC0H = 0xF4, T1CC0L = 0x24 azaz .








(
4) kísérleti forráskód és elemzés/* Kísérlet leírása: Timer1 kísérlet, időzítő számláló túlcsordulása, LED1 villogása */ #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; /* rendszeróra inicializálás-------------------------------------------------------*/void xtal_init( void ) { SLEEP &=~0x04;&
nbsp; // mindkettő bekapcsolwhile (!
(SLEEP & 0x40 )); //kristályos oszcillátor bekapcsolva és stabil CLKCON &=~0x47; &







nbsp; // 32MHz-es kristályoszcillátor kiválasztása SLEEP |=0x04; }/*LED inicializálás-------------------------------------------------------*/void led_init( void ) { &
nbsp; P1SEL = 0x00; //P1 egy normál I/O port P1DIR |=0x0F; &

nbsp; //P1.0 P1.1 P1.2 P1.3 kimenetek led1 =1; &






nbsp; //A LED-ek kikapcsolása led2 =1; led3 =1; led4 =1; }/*T1 inicializálás---------------------------



- ---------------------------*/void timer1_init( void ) {EA=1; // teljes megszakítás bekapcsolása &
nbsp; T1IE=1; // T1 megszakítás bekapcsolásaOVFIM=1; // T1 túlcsordulás bekapcsolása



m egszakításT1CC0L=0x24; // túlfolyási érték alacsony 8 bit T1CC0H=0xF4; // túlfolyási érték magas 8 bit &

nbsp; T1CTL =0x0e; //128 osztás; modulo mód (0x0000->T1CC0); futás indítása;T1IF=0; &




nbsp; // megszakításjelző törlése }/* főfüggvény-------------------------------------------------------*/void main( void





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





nbsp; //várakozás a túlcsordulás megszakítására }/*T1 terminál szerviz alprogram-------------------------------------------------------*/#pragma vector=T1_VECTOR__interrupt



v oid T1_ISR( void ) {EA=0; //megszakítás kikapcsolása led1 = !


led1; //LED-ek fordítvaEA=1; //megszakításon &nbsp

; T1CTL &=~0x10; // megszakításjelző törlése }

  OK, fordítsuk le a programot és online hibakeresés, a fejlesztői kártya a LED1 villog fel a vártaknak megfelelően, érezzük a villogó intervallumot kb. 1s. De ez nem elég a kísérlet sikerének bizonyítására, ha szigorúan meg tudjuk határozni az 1s intervallumot, az tökéletes lenne ~ így megnyitottam a WIN 7 órát (kattintsunk a jobb oldalon a feladatsor idő lehet). Miközben a másodpercmutatót figyeltem, a szemem sarkából a villogó LED1-re pillantottam. Az eredmény: két perc múlva a kettő tempója lényegében megegyezik (ez a pontosság tolerálható ~). Ezen a ponton a kísérlet lényegében befejezettnek mondható, hehehe~

Harmadszor, a 2. időzítő

  Az IEEE 802.15.4 MAC-ben lévő eseménykövető protokoll támogatására kifejezetten az IEEE 802.15.4 MAC-ben lévő eseménykövető protokollt támogatja az időzítő2, más néven MAC időzítő. Az időzítőnek van egy 8 bites túlcsordulásszámlálója, amely a bekövetkezett ciklusok számának rögzítésére használható; van egy 16 bites rögzítő regisztere, amely a keretkezdet-határoló pontos időpontjának rögzítésére szolgál, amikor egy keretkezdet-határoló érkezik / továbbításra kerül, vagy amikor egy átvitel befejeződik; és tartalmaz egy 16 bites kimeneti összehasonlító regisztert is, amely arra szolgál, hogy különböző parancsszelektív kommunikációs jeleket generáljon a vezeték nélküli modulnak egy adott időpontban (vétel megkezdése, adás megkezdése stb.).

Időzítő 3/4

  A 3/4-es időzítő egy 8 bites időzítő időzítő/számláló/PWM funkciókkal. t3/t4 két kimeneti összehasonlító csatornával rendelkezik, amelyek mindegyike PWM kimenetként használható.

V. Következtetés

  Ebben a szakaszban megtanultuk az 1. időzítő túlcsordulási megszakításának számlálási módszerét, és elértük a LED villogó 1 s-os intervallumának pontos vezérlését. Csak átfutjuk a többi időzítőt, majd később visszatérünk, hogy hozzáadjuk őket. A következő szakaszban bemutatjuk a CC2430 soros port kommunikációjáról szóló információkat.






Előző: [Re-]Zigbee utazás (III): Néhány fontos CC2430 alapkísérlet - Külső megszakítások
Következő: [Újra megváltoztatva] Zigbee utazás (V): Néhány fontos CC2430 alapkísérlet - soros kommunikáció
Kódgazda hálózat, csak a gyakorlati folyamatban közzétett, technikai nehézségekbe ütközött, nem vezethet félre másokat.
Be kell jelentkezned, mielőtt hozzászólhatnál Bejelentkezés | Regisztráció

E z a verzió az integrál szabályok


KIZÁRÓLAG: A Code Farmer által közzétett minden szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra használható; a fenti tartalmak nem használhatók fel kereskedelmi vagy illegális célokra, ellenkező esetben minden következményt a felhasználók maguk viselnek. Ez az oldal információ a hálózatról, a szerzői jogi vitának semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltést követő 24 órán belül teljes mértékben el kell távolítania a számítógépéről. Ha tetszik a program, kérjük, támogassa az eredeti szoftvert, vásárolja meg a regisztrációt, és jobb valódi szolgáltatást kap. Ha bármilyen jogsértés történt, kérjük, lépjen kapcsolatba velünk e-mailben, hogy foglalkozzunk vele.

Mail To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

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

Gyors válaszVissza a tetejéreVissza a listához