架构师_程序员_码农网

L Saņemt paroli
Reģistrēties

QQ登录

Tikai viens solis, lai sāktu

Meklēt
Skatīt:5109|Atbilde: 0
打印 上一主题 下一主题

[Translate] Zigbee Journey (IV): Daži svarīgi CC2430 pamata eksperimenti - taimera pārtraukums

[Kopēt saiti]
P 跳转到指定楼层
ēkas īpašniekam
发表于 2014-10-30 23:17:29|只看该作者回帖奖励|Atgriezeniskāpārlūkošana|Lasīšanas režīms
I. Turpinot iepriekšējo rakstu

  Iepriekšējā nodaļā mēs uzzinājām par vienkāršu ārējo pārtraukumu kopīgu īstenošanu. Pēc tam, kad esam guvuši praktisku pieredzi ar pārtraukumiem, šajā nodaļā aplūkosim taimeru pārtraukumus. CC2430 ir 4 taimeri, kurus var iedalīt 3 kategorijās: Timer1, Timer2, Timer3/4 (3 un 4 izmantošana ir vienāda).

  Tā kā arī autors tikai pieskaras CC2430, pieredze projektā, kas saistīts ar taimeriem, būtībā ir nulle, tāpēc es neplānoju (un nevaru palīdzēt) padziļināti analizēt taimerus. Šis raksts attiecas tikai uz taimera 1 skaitīšanas pārplūdes pārtraukuma izmantošanu, lai veiktu vienkāršu eksperimentālu izpēti, jo tā ieejas uztveršanas/izvades salīdzināšanas/PWM funkcija ir izlaista. Arī 2. taimeris un 3/4 taimeris ir tikai īsi aprakstīti. Gaidot, kad autora jauda sasniegs noteiktu ugunsgrēka līmeni, un tad stāvēt Zigbee kaujas pieredzes augstumā, lai uzlabotu šo eseju.

Taimeris 1

  Taimeris1 ir 16 bitu taimeris ar taimera/skaitītāja/pulsa platuma modulācijas funkcijām. Tam ir trīs individuāli programmējami ieejas uztveršanas/izvades salīdzināšanas kanāli, no kuriem katru var izmantot kā PWM izeju vai izmantot, lai uztvertu ieejas signāla malas laiku (sīkāku informāciju par to, kas ir ieejas uztveršana/izvades salīdzināšana un kā īstenot PWM izeju, lasītāji var paši izlasīt CC2430 ķīniešu valodas rokasgrāmatā).

  Taimerim ir ļoti svarīgs jēdziens: darbības režīms.

  Darbības režīmi ir šādi: brīvais,modulo un augšupejošais-dolupejošais.

  Tālāk ir sniegts ieskats par šiem trim režīmiem no CC2430 ķīniešu valodas rokasgrāmatas:

2011022119590527.jpg



  Salīdzinot trīs režīmus, var redzēt, ka: brīvās darbības režīma pārplūdes vērtība ir 0xFFFF, kas nav maināma; savukārt pārējos divus režīmus var precīzi kontrolēt, piešķirot vērtību T1CC0, lai precīzi kontrolētu taimera pārplūdes vērtību. Šajā eksperimentā šī funkcija tiek izmantota, lai liktu taimerim izraisīt pārtraukumu ik pēc 1s, izmantojot īpašo T1CC0, tādējādi precīzi kontrolējot LED mirgošanas intervālu 1s.

(1) Eksperimenta ievads

  Taimera modulo režīmā LED mirgošanas intervāls tiek precīzi kontrolēts 1s, t. i.: gaisma 0,5s → tumsa 0,5s → gaisma 0,5s → tumsa 0,5s ....... → gaisma 0,5s → tumsa 0,5s (t. i., pārejas brīdis no tumsas uz gaismu ir 1s). Gaismas/tumsas maiņu īsteno ar pārplūdes pārtraukumu.

(2) Programmas plūsmas shēma

(3) Saistītie aprēķini

  Kā minēts iepriekš, LED stāvoklis ir šāds: gaišs 0,5s → tumšs 0,5s → gaišs 0,5s → tumšs 0,5s → tumšs 0,5s ....... → gaišs 0,5s → tumšs 0,5s, un ir jāpanāk pārplūdes pārtraukums, tāpēc nepieciešams, lai taimera pārplūdes periods būtu 0,5 s. Šim nolūkam jāaprēķina atbilstošā pārplūdes vērtība (uz laiku iestatīta uz N).

  Sistēmas pulksteņa frekvence ir izvēlēta 32 MHz, un taimerim nodrošinātā pulksteņa frekvence pēc noklusējuma ir 16 MHz (abas šīs frekvences tiek konfigurētas ar speciālo funkciju reģistru CLKCON, kas atrodams CC2430 ķīniešu valodas rokasgrāmatā).

  Timerim 1 iestatiet tā takts frekvenci uz 128 dalījumiem.

  Rezumējot, formulu var izteikt šādi:

2011022120560133.jpg
c

  Uzziniet, ka N = 62500, tā heksadecimālā vērtība ir 0xF424, tas ir, jums ir nepieciešams iestatīt T1CC0H = 0xF4, T1CC0L = 0x24, kas ir .








(
4) Eksperimenta avota kods un analīze/* Eksperimenta apraksts: Timer1 eksperiments, taimera skaitļa pārplūšana, LED1 mirgošana */ #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; /* sistēmas pulksteņa inicializācija-------------------------------------------------------*/void xtal_init( void ) { SLEEP &=~0x04;&
nbsp; // abi ieslēdzaswhile (!
(SLEEP & 0x40 )); //kristāliskais oscilators ieslēgts un stabils CLKCON &=~0x47; &







nbsp; //izvēlēt 32 MHz kristāla oscilatoru SLEEP |=0x04; }/*LED inicializācija-------------------------------------------------------*/void led_init( void ) { & &
nbsp; P1SEL = 0x00; //P1 ir parastais I/O ports P1DIR |=0x0F; &

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






nbsp; //Izslēgt visus gaismas diodes led2 =1; led3 =1; led4 =1; }/*T1 inicializācija---------------------------



- ---------------------------*/void timer1_init( void ) {EA=1; // ieslēdz kopējo pārtraukumu &
nbsp; T1IE=1; // ieslēdz T1 pārtraukumuOVFIM=1; // ieslēdz T1 pārplūdi



p ārrāvumsT1CC0L=0x24; //pārplūdes vērtība zemā 8 bitu līmenī T1CC0H=0xF4; //pārplūdes vērtība augstā 8 bitu līmenī &

nbsp; T1CTL =0x0e; //128 dalījumi; modulo režīms (0x0000->T1CC0); sāk darboties;T1IF=0; &




nbsp; // izdzēst pārtraukuma karogu }/* galvenā funkcija-------------------------------------------------------*/void main( void





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





nbsp; //gaida pārplūdes pārtraukumu }/*T1 termināļa apkalpošanas apakšprogramma-------------------------------------------------------*/#pragma vektor=T1_VECTOR__interrupt



v oid T1_ISR( void ) {EA=0; //izslēgt pārtraukumu led1 = !


led1; //LED ieslēgts otrādiEA=1; //Uz pārtraukumu &nbsp

; T1CTL &=~0x10; // dzēš pārtraukuma karogu }

  Labi, kompilēt programmu un tiešsaistes atkļūdošanu, attīstības plate uz LED1 mirgo, kā paredzēts, jūtams mirgošanas intervāls apmēram 1 s. Bet tas nav pietiekami, lai pierādītu eksperimenta veiksmi, ja jūs varat stingri noteikt intervālu 1s būtu ideāls ~ tāpēc es atvērtu WIN 7 pulksteni (noklikšķiniet uz uzdevumjoslas labajā pusē laiks var būt). Kamēr vēroju sekundes rādītāju, acs kaktiņā ieskatījos mirgojošajā LED1. Rezultāts ir šāds: divu minūšu laikā to temps būtībā ir identisks (šo precizitāti var pieļaut ~). Šajā brīdī var teikt, ka eksperiments būtībā ir pabeigts, hehehe~.

Treškārt, 2. taimeris

  Taimeris 2, kas pazīstams arī kā MAC taimeris, ir īpaši izstrādāts, lai atbalstītu notikumu izsekošanas protokolu IEEE 802.15.4 MAC. Taimerim ir 8 bitu pārpildes skaitītājs, ko var izmantot, lai reģistrētu notikušo ciklu skaitu; tam ir 16 bitu uztveršanas reģistrs, ko izmanto, lai reģistrētu precīzu kadra sākuma norobežotāja saņemšanas/pārraides laiku vai precīzu laiku, kad pārraide ir pabeigta; tajā ir arī 16 bitu izejas salīdzināšanas reģistrs, ko izmanto, lai ģenerētu dažādus komandu selektīvus sakaru signālus bezvadu modulim noteiktā laikā (sākt saņemšanu, sākt raidīšanu utt.).

Taimeris 3/4

  Timeris 3/4 ir 8 bitu taimeris ar taimera/skaitītāja/PWM funkcijām. t3/t4 ir divi izejas salīdzināšanas kanāli, no kuriem katru var izmantot kā PWM izeju.

V. Secinājumi

  Šajā nodaļā mēs esam apguvuši 1. taimera pārplūdes pārtraukuma skaitīšanas metodi un panākuši precīzu LED mirgošanas intervāla kontroli 1 s. Pārējos taimerus mēs aplūkosim tikai pavirši un vēlāk atgriezīsimies, lai tos papildinātu. Nākamajā nodaļā mēs iepazīstināsim ar CC2430 sērijas porta komunikāciju.






Iepriekšējais: [Re-]Zigbee ceļojums (III): Daži svarīgi CC2430 pamata eksperimenti - ārējie pārtraukumi
Nākamo: [Atkārtota] Zigbee ceļojums (V): Daži svarīgi CC2430 pamateksperimenti - sērijveida saziņa
Kods lauksaimnieku tīkls, publicēts tikai prakses procesā, saskārās ar tehniskām grūtībām, nevis maldina citus.
Jums ir jāpiesakās, pirms varat rakstīt atpakaļ Log in | Reģistrēties

Šī integrēto noteikumu versija


PAZIŅOJUMS: Visas Code Farmer publicētās programmatūras, programmēšanas materiāli vai raksti ir izmantojami tikai mācību un pētniecības nolūkos; iepriekš minēto saturu nedrīkst izmantot komerciālos vai nelikumīgos nolūkos, pretējā gadījumā visas sekas sedz paši lietotāji. Šīs vietnes informācija no tīkla, strīdam par autortiesībām nav nekāda sakara ar šo vietni. Iepriekš minētais saturs 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 saņemiet labāku oriģinālu pakalpojumu. Ja ir kāds pārkāpums, lūdzu, sazinieties ar mums pa e-pastu, lai to risinātu.

E-pasts To:help@itsvse.com

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

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

Ātrā atbildeAtgriezties uz augšuAtgriezties pie saraksta