架构师_程序员_码农网

V Gauti slaptažodį
Užsiregistruoti

QQ登录

Tik vienas žingsnis, kad pradėtumėte

Paieška
Peržiūrėti:5109|Atsakyti: 0
打印 上一主题 下一主题

[Versti] Zigbee kelionė (IV): Keletas svarbių CC2430 pagrindinių eksperimentų - laikmačio pertraukimas

[Kopijuoti nuorodą]
K 跳转到指定楼层
pastato savininkui
发表于 2014-10-30 23:17:29|只看该作者回帖奖励|Atvirkštinisnaršymas| Skaitymo režimas
I. Tęsiant ankstesnį straipsnį

  Ankstesniame skyriuje sužinojome apie paprastų išorinių pertraukiklių įgyvendinimą kartu. Įgiję praktinės patirties su pertraukikliais, šiame skyriuje aptarsime laikmačių pertraukiklius. CC2430 turi 4 laikmačius, kuriuos galima suskirstyti į 3 kategorijas: Timer1, Timer2, Timer3/4 (3 ir 4 laikmačių naudojimas yra toks pat).

  Kadangi autorius taip pat tik prisiliečia prie CC2430, projekto, susijusio su laikmačiais, patirtis iš esmės yra nulinė, todėl neketinu (ir negaliu padėti) išsamiai analizuoti laikmačių. Šiame straipsnyje tik apie laikmačio 1 skaičiavimo perpildymo pertraukiklio naudojimą, kad būtų galima atlikti paprastą eksperimentinį tyrimą, jo įvesties surinkimo / išvesties palyginimo / PWM funkcija praleista. 2 ir 3/4 laikmačiai taip pat pristatomi tik trumpai. Laukiama, kol autoriaus galia pasieks tam tikrą ugnies lygį, o tada stovės "Zigbee" kovos patirties aukštyje, kad pagerintų šį rašinį.

1 laikmatis

  Laikmatis1 yra 16 bitų laikmatis su laikmačio / skaitiklio / impulso pločio moduliacijos funkcijomis. Jis turi tris atskirai programuojamus įvesties užfiksavimo ir (arba) išvesties palyginimo kanalus, kurių kiekvienas gali būti naudojamas kaip PWM išėjimas arba naudojamas įvesties signalo briaunos laikui užfiksuoti (daugiau informacijos apie tai, kas yra įvesties užfiksavimas ir (arba) išvesties palyginimas ir kaip realizuoti PWM išėjimus, skaitytojai gali savarankiškai perskaityti kinų CC2430 vadovą).

  Laikmačiui būdinga labai svarbi sąvoka - darbo režimas.

  Veikimo režimai yra šie: laisvojo veikimo, modulo ir aukštyn-žemyn.

  Toliau pateikiamas trijų režimų pristatymas iš CC2430 kinų kalbos vadovo:



  Palyginus tris režimus, matyti, kad: laisvojo veikimo režimo perpildymo vertė yra 0xFFFF, kurios negalima keisti; o kitus du režimus galima tiksliai valdyti priskiriant vertę T1CC0, kad būtų galima tiksliai valdyti laikmačio perpildymo vertę. Šiame eksperimente ši funkcija naudojama tam, kad laikmatis kas 1 s sukeltų pertraukimą per konkrečią T1CC0 reikšmę ir taip tiksliai kontroliuotų 1 s šviesos diodo mirksėjimo intervalą.

(1) Eksperimento įvadas

  Laikmačio modulo režimu tiksliai valdomas 1 s šviesos diodo mirksėjimo intervalas, t. y.: šviesa 0,5 s → tamsa 0,5 s → šviesa 0,5 s → tamsa 0,5 s → šviesa 0,5 s → tamsa 0,5 s ...... → šviesa 0,5 s → tamsa 0,5 s (t. y. perėjimo iš tamsos į šviesą momentas yra 1 s). Šviesos / tamsos perjungimas į kitą pusę įgyvendinamas perpildymo pertraukikliu.

(2) Programos srauto diagrama

(3) Susiję skaičiavimai

  Kaip minėta anksčiau, šviesos diodo būsena yra tokia: šviesus 0,5 s → tamsus 0,5 s → šviesus 0,5 s → tamsus 0,5 s ...... → šviesus 0,5 s → tamsus 0,5 s, ir reikia pasiekti, kad būtų pertrauktas perpildymas, todėl laikmačio perpildymo periodas turi būti 0,5 s. Tuo tikslu reikia apskaičiuoti atitinkamą perpildymo vertę (laikinai nustatyta N).

  Sistemos laikrodžio dažnis parinktas 32 MHz, o laikmačiui teikiamas laikrodžio dažnis pagal numatytuosius nustatymus yra 16 MHz (abu jie konfigūruojami specialiuoju funkcijų registru CLKCON, kurį galima rasti CC2430 kinų kalbos vadove).

  1 laikmačiui nustatykite jo taktinį dažnį 128 padalos.

  Apibendrinant, formulė gali būti tokia:

2011022120560133.jpg
c

  Sužinokite, kad N = 62500, jo šešioliktainė vertė yra 0xF424, t. y. reikia nustatyti T1CC0H = 0xF4, T1CC0L = 0x24, tai yra .








(
4) eksperimentinis išeities kodas ir analizė/* Eksperimento aprašymas: Timer1 eksperimentas, laikmačio skaičiaus perpildymas, LED1 mirksėjimas */ #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; /* sistemos laikrodžio inicializacija-------------------------------------------------------*/void xtal_init( void ) { SLEEP &=~0x04;&
nbsp; // abu įjungiamiwhile (!
(SLEEP & 0x40 )); //kristalinis osciliatorius įjungtas ir stabilus CLKCON &=~0x47; &







nbsp; //pasirinkite 32 MHz kristalinį osciliatorių SLEEP |=0x04; }/*LED inicializacija-------------------------------------------------------*/void led_init( void ) { &
nbsp; P1SEL = 0x00; //P1 yra įprastas įvesties/išvesties prievadas P1DIR |=0x0F; &

nbsp; //P1.0 P1.1 P1.2 P1.3 išėjimai led1 =1; &






nbsp; //Išjungti visus šviesos diodus led2 =1; led3 =1; led4 =1; }/*T1 iniciacija---------------------------



- ---------------------------*/void timer1_init( void ) {EA=1; //įjungti bendrą pertraukimą &
nbsp; T1IE=1; // įjungti T1 pertraukimąOVFIM=1; // įjungti T1 perpildymą



p ertraukimasT1CC0L=0x24; //perpildymo vertė mažoji 8 bitai T1CC0H=0xF4; //perpildymo vertė didžioji 8 bitai &

nbsp; T1CTL =0x0e; //128 padalijimų; modulo režimas (0x0000->T1CC0); pradėti veikti;T1IF=0; &




nbsp; // išvalyti pertraukimo vėliavėlę }/* pagrindinė funkcija-------------------------------------------------------*/void main( void





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





nbsp; //laukti, kol bus pertrauka dėl perpildymo }/*T1 terminalo aptarnavimo paprogramė-------------------------------------------------------*/#pragma vector=T1_VECTOR__interrupt



v oid T1_ISR( void ) {EA=0; //išjungti pertraukimą led1 = !


led1; //Šviesos diodai sukeisti vietomisEA=1; //Įjungtas pertraukimas &nbsp

; T1CTL &=~0x10; // išvalyti pertraukimo vėliavėlę }

  Gerai, sukompiliuokite programą ir atlikite internetinį derinimą, kūrimo plokštė LED1 mirksi, kaip ir tikėtasi, jaučiasi, kad mirksėjimo intervalas maždaug 1 s. Bet to nepakanka eksperimento sėkmei įrodyti, jei būtų galima griežtai nustatyti 1 s intervalą, būtų tobula ~ todėl atidariau WIN 7 laikrodį (spustelėkite dešinėje užduočių juostos pusėje gali būti laikas). Stebėdamas sekundinę rodyklę, akies krašteliu žvilgtelėjau į mirksintį LED1. Rezultatas toks: per dvi minutes jų tempas iš esmės sutampa (tokį tikslumą galima toleruoti ~). Šiuo metu galima sakyti, kad eksperimentas iš esmės baigtas, hehehe~

Trečia, 2 laikmatis

  Laikmatis 2, dar vadinamas MAC laikmačiu, yra specialiai sukurtas IEEE 802.15.4 MAC įvykių sekimo protokolui palaikyti. Laikmatis turi 8 bitų perpildymo skaitiklį, kuris gali būti naudojamas užregistruoti įvykusių ciklų skaičių; turi 16 bitų fiksavimo registrą, kuris naudojamas užregistruoti tikslų laiką, kai priimamas ir (arba) išsiunčiamas kadro pradžios skirtukas, arba tikslų laiką, kai baigiamas perdavimas; taip pat turi 16 bitų išvesties palyginimo registrą, kuris naudojamas generuoti įvairius belaidžio modulio pasirinktus komandinius ryšio signalus tam tikru laiku (pradėti priimti, pradėti siųsti ir t. t.).

Laikmatis 3/4

  Laikmatis 3/4 yra 8 bitų laikmatis su laikmačio / skaitiklio / PWM funkcijomis. t3 / t4 turi du išvesties palyginimo kanalus, kurių kiekvienas gali būti naudojamas kaip PWM išvestis.

V. Išvada

  Šiame skyriuje išmokome 1 laikmačio perpildymo pertraukimo skaičiavimo metodą ir pasiekėme tikslų šviesos diodo mirksėjimo intervalo valdymą 1 s. Kitus laikmačius apžvelgsime tik paviršutiniškai, o vėliau grįšime prie jų papildymo. Kitame skyriuje supažindinsime su CC2430 nuosekliojo prievado ryšiu.






Ankstesnis: [Re-]Zigbee kelionė (III): Keletas svarbių CC2430 pagrindinių eksperimentų - išoriniai pertraukimai
Kitas: [Pakartotinai] Zigbee kelionė (V): Keletas svarbių CC2430 pagrindinių eksperimentų - nuoseklusis ryšys
Kodas ūkininko tinkle, skelbiamas tik praktikos procese, susidurta su techniniais sunkumais, neklaidinti kitų.

Ši vientisųjų taisyklių versija


ATSISAKYMAS: Visa Code Farmer paskelbta programinė įranga, programavimo medžiaga ar straipsniai gali būti naudojami tik mokymosi ir mokslinių tyrimų tikslais; minėtas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju visos pasekmės teks patiems naudotojams. Šios svetainės informacija iš tinklo, ginčas dėl autorių teisių neturi nieko bendra su šia svetaine. Per 24 valandas nuo atsisiuntimo turite visiškai pašalinti pirmiau nurodytą turinį iš savo kompiuterio. Jei programa jums patinka, paremkite originalią programinę įrangą, įsigykite registraciją ir gaukite geresnes originalias paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu, kad juos išspręstume.

Paštas To:help@itsvse.com

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

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

Greitasis atsakymasAtgal į viršųAtgal į sąrašą