架构师_程序员_码农网

K Parooli taastamine
Registreeri

QQ登录

Ainult üks samm, et alustada

Otsi
View:5109|Reply: 0
打印 上一主题 下一主题

[Translate] Zigbee Journey (IV): Mõned olulised CC2430 põhilised katsed - taimer katkestada

[Kopeeri link]
L 跳转到指定楼层
hoone omanikule
发表于 2014-10-30 23:17:29|只看该作者回帖奖励|ReverseBrowse|Read Mode
I. Jätkates eelmisest artiklist

  Eelmises osas õppisime koos lihtsate väliste katkestuste rakendamist. Pärast praktiliste kogemuste omandamist katkestustega, käsitleme selles osas taimerite katkestusi. CC2430-l on 4 taimerit, mida võib jagada 3 kategooriasse: Taimer1, Taimer2, Taimer3/4 (3 ja 4 kasutamine on sama).

  Kuna autor on ka lihtsalt puutub CC2430, projekti, mis hõlmab taimer kogemus on põhimõtteliselt null, nii et ma ei kavatse (ja ei saa aidata) põhjalik analüüs taimer. See artikkel ainult taimer 1 loenduri ülevoolu katkestuse kasutamise kohta, et teha lihtsat eksperimentaalset uurimist, selle sisendi hõivamise / väljundi võrdlemise / PWM-funktsiooni jaoks on välja jäetud. Taimer 2 ja taimer 3/4 on samuti tutvustatud ainult lühidalt. Oodates, et autori võimsus jõuab teatud tasemele tule ja seejärel seisab Zigbee võitluse kogemuse kõrgusel, et parandada seda esseed.

Taimer 1

  Taimer1 on 16-bitine taimer, millel on taimeri/loenduri/impulsside laiuse modulatsiooni funktsioonid. Sellel on kolm individuaalselt programmeeritavat sisendi hõivamise / väljundi võrdluskanalit, millest igaüht saab kasutada PWM-väljundina või kasutada sisendsignaali serva aja hõivamiseks (lisateavet selle kohta, mis on sisendi hõivamine / väljundi võrdlus ja kuidas PWM-väljundeid rakendada, võivad lugejad ise vaadata CC2430 hiina kasutusjuhendit).

  Taimeril on väga oluline mõiste: töörežiim.

  Töörežiimid on järgmised: vabakäik, modulo ja üles-alla.

  Järgnevalt tutvustatakse neid kolme režiimi CC2430 hiina kasutusjuhendist:

2011022119590527.jpg



  Võrreldes kolme režiimi, on näha, et: vabalt jooksva režiimi ülevoolu väärtus on 0xFFFF, mis ei ole muudetav; samas kui ülejäänud kahte režiimi saab täpselt kontrollida, määrates väärtuse T1CC0-le, et täpselt kontrollida taimeri ülevoolu väärtust. Käesolevas katses kasutatakse seda funktsiooni, et panna taimer käivitama katkestust iga 1s järel konkreetse T1CC0 kaudu, et täpselt kontrollida LED-i vilkumise intervalli 1s.

(1) Sissejuhatus eksperimenti

  Taimeri modulo režiimis on LED-i vilkumisintervall täpselt kontrollitud 1s, st: valgus 0,5s → tume 0,5s → valgus 0,5s → tume 0,5s ....... → valgus 0,5s → tume 0,5s (st ülemineku hetk pimedalt valgusele on 1s). Valgus/tumedate vahetamine toimub ülevoolukatkestuse abil.

(2) Programmi vooskeem

(3) Seotud arvutused

  Nagu eelnevalt mainitud, on LED-i olek: heledad 0,5s → tumedad 0,5s → heledad 0,5s → tumedad 0,5s ...... → hele 0,5s → tume 0,5s, ja tuleb saavutada ülevoolu katkestusega, seega on vaja, et taimeri ülevooluperiood oleks 0,5s. Selleks tuleb arvutada vastav ülevoolu väärtus (ajutiselt määrata N).

  Süsteemi taktsageduseks on valitud 32MHz ja taimerile antud taktsagedus on vaikimisi 16MHz (mõlemad on konfigureeritud spetsiaalse funktsiooniregistri CLKCON abil, mis on leitav CC2430 hiina kasutusjuhendist).

  Taimeri 1 jaoks seadke selle taktsageduseks 128 jaotust.

  Kokkuvõttes võib valem olla järgmine:

2011022120560133.jpg
c

  Leia välja N = 62500, selle heksadekaalarv on 0xF424, st pead seadistama T1CC0H = 0xF4, T1CC0L = 0x24 st .








(
4) eksperimentaalne lähtekood ja analüüs/* Eksperimendi kirjeldus: Timer1 eksperiment, taimeri loenduri ülevool, LED1 vilkumine */ #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; /* süsteemi kella initsialiseerimine-------------------------------------------------------*/void xtal_init( void ) { SLEEP &=~0x04;&
nbsp; // mõlemad toiteallikadwhile (!
(SLEEP & 0x40 )); //kristallostsillaator on sisse lülitatud ja stabiilne CLKCON &=~0x47; &







nbsp; // valitakse 32MHz kristallostsillaator SLEEP |=0x04; }/*LED-i initsialiseerimine-------------------------------------------------------*/void led_init( void ) { &
nbsp; P1SEL = 0x00; //P1 on tavaline I/O port P1DIR |=0x0F; &

nbsp; //P1.0 P1.1 P1.2 P1.3 väljundid led1 =1; &






nbsp; //Väljalülitatakse kõik LEDid led2 =1; led3 =1; led4 =1; }/*T1 initsialiseerimine---------------------------



- ---------------------------*/void timer1_init( void ) {EA=1; // kogu katkestuse sisselülitamine &
nbsp; T1IE=1; // T1 katkestuse sisselülitamineOVFIM=1; // T1 ülevoolu sisselülitamine



k atkestusT1CC0L=0x24; // ülevoolu väärtus madal 8 bitti T1CC0H=0xF4; // ülevoolu väärtus kõrge 8 bitti &

nbsp; T1CTL =0x0e; //128 jaotust; modulo režiim (0x0000->T1CC0); käivitamine;T1IF=0; &




nbsp; // tühjenda katkestuslipp }/* põhifunktsioon-------------------------------------------------------*/void main( void





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





nbsp; // oota ülevoolu katkestust }/*T1 terminali teenindamise allprogramm-------------------------------------------------------*/#pragma vector=T1_VECTOR__interrupt



v oid T1_ISR( void ) {EA=0; //väljalülitus led1 = !


led1; //Ledid ümberpööratudEA=1; //Katkestusel &nbsp

; T1CTL &=~0x10; // tühjenda katkestuse lipp }

  OK, kompileerida programmi ja online silumine, arendusplaat LED1 vilgub ootuspäraselt, tunnen vilkuv intervall umbes 1s. Aga see ei ole piisav, et tõestada eksperimendi õnnestumist, kui saate rangelt määrata intervalli 1s oleks täiuslik ~ nii et ma avasin WIN 7 kell (klõpsake paremal pool tegumiriba aeg võib olla). Vaadates sekundit, heitsin silmanurgast pilgu vilkuvale LED1-le. Tulemus: kahe minuti jooksul on tempo põhimõtteliselt identne (seda täpsust võib taluda ~). Siinkohal võib öelda, et eksperiment on põhimõtteliselt lõpetatud, hehehe~

Kolmandaks, taimer 2

  Taimer2, mida nimetatakse ka MAC-taimeriks, on spetsiaalselt loodud IEEE 802.15.4 MAC-i sündmuste jälgimise protokolli toetamiseks. Taimeril on 8-bitine ülevoolu loendur, mida saab kasutada toimunud tsüklite arvu registreerimiseks; tal on 16-bitine kaameraregister, mida kasutatakse täpse aja registreerimiseks, mil kaadri alguse piiraja on vastu võetud / edastatud või täpne aeg, mil ülekanne on lõpetatud; ja sisaldab ka 16-bitist väljundvõrdlusregistrit, mida kasutatakse erinevate käsu valikuliste sidesignaalide genereerimiseks traadita moodulile teatud ajal (vastuvõtu alustamine, saatmise alustamine jne).

Taimer 3/4

  Taimer 3/4 on 8-bitine taimer, millel on taimer/loenduri/PWM-funktsioonid. t3/t4-l on kaks väljundvõrdluskanalit, millest mõlemat saab kasutada PWM-väljundina.

V. Kokkuvõte

  Selles jaotises oleme õppinud taimeri 1 ülevoolukatkestuse loendamise meetodit ja saavutanud LED-i vilkumisintervalli täpse kontrolli 1 s. Teised taimerid vaatame lihtsalt üle ja läheme hiljem tagasi nende lisamiseks. Järgmises jaotises tutvustame CC2430 jadapordi kommunikatsiooni kohta.






Eelmine: [Re-]Zigbee reis (III): Mõned olulised CC2430 põhikatsed - välised katkestused
Järgmine: [Uuesti] Zigbee Journey (V): Mõned olulised CC2430 põhikatsed - jadakommunikatsioon
Kood taluniku võrgustik, avaldatud ainult praktikaprotsessis, kohtas tehnilisi raskusi, ei eksita teisi.
Sa pead sisse logima, enne kui saad tagasi postitada Logi sisse | Registreeru

S ee versioon integraalseid reegleid


KINNITUS: Kõik Code Farmeri poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppe- ja teadustööks; eespool nimetatud sisu ei tohi kasutada kaubanduslikel või ebaseaduslikel eesmärkidel, vastasel juhul kannavad kõik tagajärjed kasutajad ise. See sait teavet võrgu, autoriõiguse vaidlus ei ole midagi pistmist selle saidi. Te peate eespool nimetatud sisu täielikult eemaldama oma arvutist 24 tunni jooksul pärast allalaadimist. Kui teile meeldib programm, palun toetage ehtsat tarkvara, ostke registreerimine ja saada paremat ehtsat teenust. Kui esineb rikkumine, võtke meiega ühendust e-posti teel, et sellega tegeleda.

Mail To:help@itsvse.com

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

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

Kiire vastusTagasi ülesTagasi nimekirja