Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 7780|Απάντηση: 0

Zigbee Journey (4): Αρκετά σημαντικά βασικά πειράματα CC2430 - διακοπή χρονοδιακόπτη

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 30/10/2014 11:17:29 μ.μ. | | | |
1. Σύνδεση του ανώτερου και του κατώτερου επιπέδου

Στο προηγούμενο άρθρο, μάθαμε μαζί για την εφαρμογή απλών εξωτερικών διακοπών. Τώρα που έχουμε πρακτική εμπειρία με διακοπές, ας μιλήσουμε για διακοπές χρονοδιακόπτη σε αυτήν την ενότητα. Το CC2430 έχει συνολικά 4 χρονόμετρα, τα οποία μπορούν να χωριστούν σε 3 κατηγορίες: χρονοδιακόπτης 1, χρονοδιακόπτης 2, χρονοδιακόπτης 3/4 (η χρήση των 3 και 4 είναι η ίδια).

Δεδομένου ότι ο συγγραφέας είναι επίσης νέος στο CC2430 και έχει βασικά μηδενική πρακτική εμπειρία σε έργα που περιλαμβάνουν χρονόμετρα, δεν σκοπεύω (και δεν μπορώ να κάνω τίποτα) να αναλύσω το χρονόμετρο σε βάθος. Αυτό το άρθρο παρέχει μόνο μια σύντομη πειραματική εξερεύνηση της χρήσης του χρονοδιακόπτη 1 σε διακοπές υπερχείλισης μέτρησης και δεν αναφέρει τις λειτουργίες σύλληψης/σύγκρισης εξόδου/PWM. Το Timer 2 και το Timer 3/4 είναι μόνο απλές εισαγωγές λειτουργιών. Αφού οι δεξιότητες του συγγραφέα φτάσουν σε ένα ορισμένο επίπεδο θερμότητας, θα σταθώ στο απόγειο της πρακτικής εμπειρίας του Zigbee για να βελτιώσω αυτό το δοκίμιο.

2. Χρονοδιακόπτης 1

Το Timer 1 είναι ένα χρονόμετρο 16-bit με διαμόρφωση πλάτους χρονοδιακόπτη/μετρητή/παλμού. Διαθέτει 3 μεμονωμένα προγραμματιζόμενα κανάλια σύγκρισης λήψης/εξόδου εισόδου, καθένα από τα οποία μπορεί να χρησιμοποιηθεί ως έξοδος PWM ή ως χρόνος αιχμής για τη λήψη του σήματος εισόδου (για πληροφορίες σχετικά με το τι είναι η σύγκριση λήψης/εξόδου εισόδου και πώς να εφαρμόσετε την έξοδο PWM, οι αναγνώστες μπορούν να ανατρέξουν στο κινεζικό εγχειρίδιο CC2430).

Τα χρονόμετρα έχουν μια πολύ σημαντική ιδέα:Τρόπος λειτουργίας

Οι τρόποι λειτουργίας περιλαμβάνουν: Ελεύθερος τρόπος λειτουργίας (ελεύθερο τρέξιμο), λειτουργία καλουπιού (modulo) και τη λειτουργία θετικής μέτρησης/αντίστροφης μέτρησης (πάνω-κάτω)。

Ακολουθεί ένα απόσπασμα από το κινεζικό εγχειρίδιο CC2430 για την εισαγωγή των 3 λειτουργιών:



Συγκρίνοντας τους τρεις τρόπους λειτουργίας, μπορεί να φανεί ότι η τιμή υπερχείλισης του τρόπου ελεύθερης λειτουργίας είναι 0xFFFF αμετάβλητη. Οι άλλες δύο λειτουργίες επιτρέπουν τον ακριβή έλεγχο της τιμής υπερχείλισης του χρονοδιακόπτη εκχωρώντας μια τιμή στο T1CC0. Αυτό το πείραμα χρησιμοποιεί αυτή τη δυνατότητα για να ενεργοποιεί μια διακοπή κάθε 1 δευτερόλεπτο από το χρονόμετρο μέσω ενός συγκεκριμένου T1CC0, έτσι ώστε να ελέγχεται με ακρίβεια το διάστημα που αναβοσβήνει η λυχνία LED σε 1 δευτερόλεπτο.

(1) Εισαγωγή στο πείραμα

Στη λειτουργία modulo του χρονοδιακόπτη, το διάστημα που αναβοσβήνει η λυχνία LED ελέγχεται με ακρίβεια από 1 δευτερόλεπτο, δηλαδή: φωτεινά 0,5 δευτερόλεπτα → σκοτεινά 0,5 δευτερόλεπτα → φωτεινά 0,5 δευτερόλεπτα → αμυδρά 0,5 δευτερόλεπτα ...... → Ανοιχτό 0,5 δευτερόλεπτα → Σκοτεινό 0,5 δευτερόλεπτα (δηλαδή, το χρονικό διάστημα από το σκοτάδι στο φως είναι 1 δευτερόλεπτο). Η αντιστροφή φωτός/σκότους επιτυγχάνεται με υπερχείλιση διακοπών.

(2) Διάγραμμα ροής προγράμματος

(3) Σχετικοί υπολογισμοί

Όπως αναφέρθηκε προηγουμένως, η κατάσταση της λυχνίας LED είναι: φωτεινή 0,5 δευτερόλεπτα → σκοτεινή 0,5 δευτερόλεπτα → φωτεινή 0,5 δευτερόλεπτα → αμυδρά 0,5 δευτερόλεπτα ...... → 0.5 δευτερόλεπτα ανοιχτό → 0.5 δευτερόλεπτα σκοτεινό και πρέπει να εφαρμοστεί με διακοπές υπερχείλισης, επομένως η περίοδος υπερχείλισης του χρονοδιακόπτη απαιτείται να είναι 0.5 δευτερόλεπτα. Για να γίνει αυτό, πρέπει να υπολογιστεί η αντίστοιχη τιμή υπερχείλισης (προσωρινά ρυθμισμένη σε N).

Η συχνότητα ρολογιού του συστήματος επιλέγεται ως 32 MHz και η συχνότητα ρολογιού που δίνεται είναι 16 MHz από προεπιλογή (και τα δύο καθορίζονται από ειδικούς καταχωρητές λειτουργιών).ΚΛΚΟΝΓια λεπτομέρειες, ανατρέξτε στο κινεζικό εγχειρίδιο CC2430).

Για το Timer 1, ρυθμίστε το crossover του ρολογιού του σε 128 τμήματα.

Συνοψίζοντας, η λίστα έχει ως εξής:

Για να βρείτε το N=62500, το δεκαεξαδικό του είναι 0xF424, δηλαδή πρέπει να ορίσετε T1CC0H=0xF4, T1CC0L=0x24 .

(4) Πειραματικός πηγαίος κώδικας και ανάλυση/*
    Περιγραφή πειράματος: Πείραμα χρονοδιακόπτη Timer1, υπερχείλιση μέτρησης χρονοδιακόπτη, LED1 που αναβοσβήνει
*/

#include

#define LED1 P1_0         
#define LED2 P1_1         
#define LED3 P1_2         
#define LED4 P1_3         

/*系统时钟初始化
-------------------------------------------------------*/
άκυροxtal_init(άκυρο)
{
  ΥΠΝΟΣ &= ~0x04;            //都上电
  ενώ(! (ΥΠΝΟΣ &0x40));     //晶体振荡器开启且稳定
  CLKCON &= ~0x47;            Επιλέξτε έναν κρυσταλλικό ταλαντωτή 32 MHz
  ΥΠΝΟΣ |=0x04;
}

/*LED初始化
-------------------------------------------------------*/
άκυροled_init(άκυρο)
{
  Ρ1ΣΕΛ =0x00;            Το P1 είναι η κανονική θύρα εισόδου/εξόδου
  P1DIR |=0x0F;            Έξοδος P1.0 P1.1 P1.2 P1.3
  
  LED1 =1;                  //关闭所有LED
  LED2 =1;
  LED3 =1;
  LED4 =1;
}

/*T1初始化
-------------------------------------------------------*/
άκυροtimer1_init(άκυρο)
{
  ΕΑ=1;            //开总中断
  T1IE=1;           //开T1中断
  OVFIM=1;         //开T1溢出中断
  
  T1CC0L=0x24;      //溢出值低8位
  T1CC0H=0xF4;      //溢出值高8位
  
  Τ1CTL =0x0e;     128 crossover; λειτουργία modulo (0x0000->T1CC0); Ξεκινήστε να τρέχετε.
  T1IF=0;           Διαγράψτε το σύμβολο διακοπής  
}

/*主函数
-------------------------------------------------------*/
άκυροmain(άκυρο)
{
  xtal_init();
  led_init();
  timer1_init();

  ενώ(1);            //等待溢出中断
}

/*T1终端服务子程序
-------------------------------------------------------*/
#pragma διάνυσμα=T1_VECTOR
__interruptάκυροT1_ISR(άκυρο)
{
  ΕΑ=0;               //关中断
  
  led1 = !led1;      //LED灯反转

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

Εντάξει, μεταγλωττίστε το πρόγραμμα και διορθώστε το online, το LED1 στην πλακέτα ανάπτυξης αναβοσβήνει όπως έχει προγραμματιστεί και φαίνεται ότι το διάστημα που αναβοσβήνει είναι περίπου 1 δευτερόλεπτο. Αλλά αυτό δεν αρκεί για να αποδείξει την επιτυχία του πειράματος, εάν το διάστημα μπορεί να προσδιοριστεί αυστηρά σε 1 δευτερόλεπτο, θα είναι τέλειο~ Έτσι άνοιξα το ρολόι του WIN 7 (κάντε κλικ στην ώρα στη δεξιά πλευρά της γραμμής εργασιών). Κοιτάζοντας το δεύτερο χέρι, κοίταξε το LED1 που αναβοσβήνει με την άκρη του ματιού του. Το αποτέλεσμα: μέσα σε δύο λεπτά, ο ρυθμός των δύο είναι βασικά ακριβώς ο ίδιος (αυτή η ακρίβεια είναι ανεκτή~). Σε αυτό το σημείο, το πείραμα μπορεί να ειπωθεί ότι έχει ουσιαστικά ολοκληρωθεί, χεχε~

3. Χρονόμετρο 2

Το χρονόμετρο 2 ονομάζεται επίσηςΧρονοδιακόπτης MAC, έχει σχεδιαστεί ειδικά για να υποστηρίζει το πρωτόκολλο παρακολούθησης συμβάντων στο IEEE 802.15.4 MAC. Ο χρονοδιακόπτης διαθέτει έναν 8ψήφιο μετρητή υπερχείλισης που μπορεί να χρησιμοποιηθεί για την καταγραφή του αριθμού των κύκλων που έχουν συμβεί. Υπάρχει ένας καταχωρητής λήψης 16-bit που καταγράφει την ακριβή ώρα έναρξης λήψης/αποστολής ενός καρέ ή την ακριβή ώρα ολοκλήρωσης της μετάδοσης. Περιέχει επίσης έναν καταχωρητή σύγκρισης εξόδου 16-bit που παράγει διάφορα σήματα πύλης εντολών (έναρξη αποδοχής, έναρξη αποστολής κ.λπ.) στην ασύρματη μονάδα σε μια συγκεκριμένη χρονική στιγμή.

4. Χρονοδιακόπτης 3/4

Το Timer 3/4 είναι ένα χρονόμετρο 8-bit με λειτουργία χρονοδιακόπτη/μετρητή/PWM. Το T3/T4 έχει 2 κανάλια σύγκρισης εξόδου, καθένα από τα οποία μπορεί να χρησιμοποιηθεί ως έξοδος PWM.

5. Συμπέρασμα

Αυτή η ενότητα μαθαίνει κυρίως τη μέθοδο της διακοπής υπερχείλισης μέτρησης του χρονοδιακόπτη 1 και πραγματοποιεί τον ακριβή έλεγχο του διαστήματος αναλαμπής της λυχνίας LED 1 δευτερολέπτου. Μόνο μερικά άλλα χρονόμετρα είναι απλώς ένα εγκεφαλικό επεισόδιο και θα επανέλθω για να τα προσθέσω αργότερα. Στην επόμενη ενότητα, θα παρουσιάσουμε την επικοινωνία σειριακής θύρας CC2430.






Προηγούμενος:Ταξίδι με Zigbee (3): Αρκετά σημαντικά βασικά πειράματα CC2430 - εξωτερική διακοπή
Επόμενος:Zigbee Journey (5): Αρκετά σημαντικά βασικά πειράματα CC2430 - σειριακή επικοινωνία
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com