Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 7780|Atbildi: 0

Zigbee ceļojums (4): Vairāki svarīgi CC2430 pamata eksperimenti - taimera pārtraukums

[Kopēt saiti]
Publicēts 30.10.2014 23:17:29 | | | |
1. Augšējā un apakšējā līmeņa savienošana

Iepriekšējā rakstā mēs kopā uzzinājām par vienkāršu ārējo pārtraukumu ieviešanu. Tagad, kad mums ir praktiska pieredze ar pārtraukumiem, šajā sadaļā parunāsim par taimera pārtraukumiem. CC2430 kopumā ir 4 taimeri, kurus var iedalīt 3 kategorijās: taimeris 1, taimeris 2, taimeris 3/4 (3 un 4 lietojums ir vienāds).

Tā kā autors ir arī jauns CC2430 un viņam būtībā nav praktiskas pieredzes projektos, kuros iesaistīti taimeri, es neplānoju (un neko nevaru darīt) padziļināti analizēt taimeri. Šajā rakstā ir sniegts tikai īss eksperimentāls pētījums par taimera 1 izmantošanu skaita pārplūdes pārtraukumos, un nav pieminētas tā ievades uztveršanas/izvades salīdzināšanas/PWM funkcijas. Taimeris 2 un taimeris 3/4 ir tikai vienkārši funkciju ievadi. Pēc tam, kad autora prasmes sasniegs noteiktu karstuma līmeni, es stāvēšu Zigbee praktiskās pieredzes augstumā, lai uzlabotu šo eseju.

2. Taimeris 1

Taimeris 1 ir 16 bitu taimeris ar taimeri/skaitītāja/impulsa platuma modulāciju. Tam ir 3 individuāli programmējami ieejas uztveršanas / izejas salīdzināšanas kanāli, no kuriem katru var izmantot kā PWM izeju vai kā malas laiku ieejas signāla uztveršanai (informāciju par to, kas ir ieejas uztveršanas / izejas salīdzinājums un kā ieviest PWM izeju, lasītāji var skatīt CC2430 ķīniešu rokasgrāmatu).

Taimeriem ir ļoti svarīgs jēdziens:Darbības veids

Darbības režīmi ietver: Brīvs darbības režīms (brīva darbība), pelējuma režīms (modulo) un pozitīvā skaitīšanas/atpakaļskaitīšanas režīmā (Uz augšu-uz leju)。

Šis ir fragments no CC2430 ķīniešu rokasgrāmatas par 3 režīmu ieviešanu:



Salīdzinot trīs režīmus, var redzēt, ka brīvā darbības režīma pārplūdes vērtība ir 0xFFFF nemainīga; Pārējie divi režīmi ļauj precīzi kontrolēt taimera pārplūdes vērtību, piešķirot vērtību T1CC0. Šis eksperiments izmanto šo funkciju, lai aktivizētu pārtraukumu ik pēc 1s ar taimeri caur konkrētu T1CC0, lai precīzi kontrolētu LED gaismas mirgošanas intervālu līdz 1s.

(1) Ievads eksperimentā

Taimera modulo režīmā LED gaismas mirgojošo intervālu precīzi kontrolē 1s, proti: spilgti 0,5 s → tumši 0,5 s → spilgti 0,5 s → blāvi 0,5 s ...... → Gaišs 0,5 sekundes → Tumšs 0,5 sekundes (t.i., laika intervāls no tumsas līdz gaismai ir 1 s). Gaismas / tumsas inversija tiek panākta ar pārpildītiem pārtraukumiem.

(2) Programmas plūsmas diagramma

3) Attiecīgie aprēķini

Kā minēts iepriekš, LED gaismas statuss ir: spilgts 0,5 s → tumšs 0,5 s → spilgts 0,5 s → blāvs 0,5 s ...... → 0,5 sekundes gaišas → 0,5 sekundes tumšas, un tas ir jāīsteno ar pārplūdes pārtraukumiem, tāpēc taimera pārplūdes periodam ir jābūt 0,5 sekundēm. Lai to izdarītu, ir jāaprēķina atbilstošā pārplūdes vērtība (īslaicīgi iestatīta uz N).

Sistēmas pulksteņa frekvence ir izvēlēta kā 32 MHz, un norādītā pulksteņa frekvence pēc noklusējuma ir 16 MHz (abas nosaka speciāli funkciju reģistri).CLKCONSīkāku informāciju skatiet CC2430 ķīniešu rokasgrāmatā).

Taimeri 1 iestatiet pulksteņa krustojumu uz 128 nodaļām.

Rezumējot, saraksts ir šāds:

Lai atrastu N=62500, tā heksadecimāls ir 0xF424, tas ir, jums jāiestata T1CC0H=0xF4, T1CC0L=0x24 .

(4) Eksperimentālais pirmkods un analīze/*
    Eksperimenta apraksts: Taimeris Taimeris1 eksperiments, taimera skaita pārplūde, LED1 mirgo
*/

#include

#define led1 P1_0         
#define led2 P1_1         
#define led3 P1_2         
#define led4 P1_3         

/*系统时钟初始化
-------------------------------------------------------*/
Tukšumsxtal_init (Tukšums)
{
  MIEGS &= ~0x04;            //都上电
  kamēr(! (MIEGS &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Izvēlieties 32MHz kristāla oscilatoru
  MIEGS |=0x04;
}

/*LED初始化
-------------------------------------------------------*/
Tukšumsled_init (Tukšums)
{
  P1SEL =0x00;            P1 ir parastais I/O ports
  P1DIR |=0x0F;            P1.0 P1.1 P1.2 P1.3 izeja
  
  led1 =1;                  //关闭所有LED
  led2 =1;
  led3 =1;
  led4 =1;
}

/*T1初始化
-------------------------------------------------------*/
Tukšumstimer1_init (Tukšums)
{
  EA =1;            //开总中断
  T1IE =1;           //开T1中断
  OVFIM =1;         //开T1溢出中断
  
  T1CC0L =0x24;      //溢出值低8位
  T1CC0H =0xF4;      //溢出值高8位
  
  T1CTL =0x0e;     128 krosovers; modulo režīms (0x0000->T1CC0); Sāciet skriet;
  T1IF=0;           Notīriet pārtraukuma zīmi  
}

/*主函数
-------------------------------------------------------*/
Tukšumsgalvenais(Tukšums)
{
  xtal_init ();
  led_init ();
  timer1_init ();

  kamēr(1);            //等待溢出中断
}

/*T1终端服务子程序
-------------------------------------------------------*/
#pragma vektors=T1_VECTOR
__interruptTukšumsT1_ISR (Tukšums)
{
  EA =0;               //关中断
  
  led1 = !led1;      //LED灯反转

  EA =1;               //开中断
  
  T1CTL &= ~0x10;     //清中断标志
}

Labi, kompilējiet programmu un atkļūdojiet tiešsaistē, LED1 uz izstrādes plates mirgo, kā plānots, un šķiet, ka mirgojošais intervāls ir aptuveni 1s. Bet ar to nepietiek, lai pierādītu eksperimenta panākumus, ja intervālu var stingri noteikt kā 1s, tas būs ideāls ~ Tāpēc es ieslēdzu WIN 7 pulksteni (noklikšķiniet uz laika uzdevumjoslas labajā pusē). Skatoties uz otro roku, viņš paskatījās uz LED1 mirgošanu no acs kaktiņa. Rezultāts: divu minūšu laikā abu temps būtībā ir tieši tāds pats (šī precizitāte ir pieļaujama~). Šajā brīdī var teikt, ka eksperiments būtībā ir pabeigts, hehe~

3. Taimeris 2

Taimeri 2 sauc arī parMAC taimeris, ir īpaši izstrādāts, lai atbalstītu notikumu izsekošanas protokolu IEEE 802.15.4 MAC. Taimeri ir 8 ciparu pārplūdes skaitītājs, ko var izmantot, lai reģistrētu notikušo ciklu skaitu; Ir 16 bitu uztveršanas reģistrs, kas ieraksta precīzu laiku, kad kadrs sāk saņemt / sūtīt vai precīzu laiku, kad pārraide ir pabeigta. Tajā ir arī 16 bitu izejas salīdzināšanas reģistrs, kas ģenerē dažādus komandu signālus (sākt pieņemt, sākt sūtīšanu utt.) uz bezvadu moduli noteiktā laikā.

4. Taimeris 3/4

Taimeris 3/4 ir 8 bitu taimeris ar taimeri/skaitītāju/PWM funkciju. T3/T4 ir 2 izejas salīdzināšanas kanāli, no kuriem katru var izmantot kā PWM izeju.

5. Secinājums

Šajā sadaļā galvenokārt tiek apgūta taimeri 1 skaita pārplūdes pārtraukuma metode un precīzi kontrolēta LED gaismas mirgošanas intervāls 1s. Tikai daži citi taimeri ir tikai insults, un es atgriezīšos, lai tos pievienotu vēlāk. Nākamajā sadaļā mēs iepazīstināsim ar CC2430 seriālā porta sakariem.






Iepriekšējo:Zigbee ceļojums (3): Vairāki svarīgi CC2430 pamata eksperimenti - ārējs pārtraukums
Nākamo:Zigbee ceļojums (5): Vairāki svarīgi CC2430 pamata eksperimenti - sērijveida komunikācija
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com