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

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

Ταξίδι με Zigbee (8): Αρκετά σημαντικά βασικά πειράματα CC2430 - φύλακες

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

Ανεξάρτητα από το πόσο καλό είναι το λειτουργικό σύστημα, είτε πρόκειται για το τρέχον Win7 είτε για τα μελλοντικά Win8 και Win9, θα υπάρχει πάντα ένα BlueScreen, για να μην αναφέρουμε έναν μικρό μικροελεγκτή~ Απρόβλεπτοι λόγοι όπως ηλεκτρικός θόρυβος, διακοπή ρεύματος, ηλεκτροστατική εκφόρτιση κ.λπ., μπορεί να προκαλέσουν μη φυσιολογική λειτουργία του ενσωματωμένου συστήματος.

Το Watch Dog, για την ακρίβεια, θα πρέπει να είναι ένα χρονόμετρο παρακολούθησης, το οποίο είναι μια δομή κυκλώματος που χρησιμοποιείται ειδικά για την παρακολούθηση της κατάστασης λειτουργίας του προγράμματος μικροελεγκτή. Η βασική αρχή είναι: μετά την εκκίνηση του χρονοδιακόπτη παρακολούθησης, θα αρχίσει να μετράει από το 0, εάν το πρόγραμμα δεν το διαγράψει εγκαίρως εντός του καθορισμένου χρονικού διαστήματος, ο χρονοδιακόπτης παρακολούθησης θα επαναφέρει το σύστημα (ισοδύναμο με την επανεκκίνηση του υπολογιστή), όπως φαίνεται στο παρακάτω σχήμα (σχεδιασμένο με λέξη, το σχέδιο είναι περισσότερο αυγόπονος~):

Ας παρουσιάσουμε μια απλή μέθοδο εφαρμογής σκύλου φύλακα: Πώς να αφήσετε έναν σκύλο να φύγει; Πώς να ταΐζετε; Τι θα συμβεί αν δεν το ταΐσετε;

2. Η ιστορία του φύλακα(1) Εισαγωγή στο πείραμα

Εάν ο σκύλος ταΐζεται, το σύστημα λειτουργεί κανονικά. Εάν δεν ταΐσετε τον σκύλο, το σύστημα συνεχίζει να επανεκκινείται.

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

(3) Πειραματικός πηγαίος κώδικας και ανάλυση/*
    Περιγραφή πειράματος: Στο πείραμα φύλακα, εάν ο σκύλος δεν ταΐζεται, το σύστημα συνεχίζει να επανεκκινείται.
*/

#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;
}

/*看门狗初始化
-------------------------------------------------------*/
άκυροwatchdog_Init(άκυρο)   
{
  WDCTL =0x00;              //看门狗模式,时间间隔一秒
  WDCTL |=0x08;            //启动看门狗
}

/*喂狗程序
-------------------------------------------------------*/
άκυροΠόδιαΣκύλος(άκυρο)   
{
  WDCTL =0xa0;
  WDCTL =0x50;
}

/*延时函数(小于1秒。读者可以想一下,若大于1秒,会出现什么情况)
-------------------------------------------------------*/
άκυροΚαθυστέρηση(άκυρο)
{
  ανυπόγραφο Διεθνέςn;
  Για(ν=50000; ν>0; n--);
  Για(ν=50000; ν>0; n--);
  Για(ν=50000; ν>0; n--);
  Για(ν=50000; ν>0; n--);
  Για(ν=50000; ν>0; n--);
  Για(ν=50000; ν>0; n--);
  Για(ν=50000; ν>0; n--);
}

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

  Καθυστέρηση();
  LED1 =0;         //点亮led1
  
  ενώ(1)
  {
    FeetDog();      Εντολή ταΐσματος σκύλου (το σύστημα δεν επαναφέρεται μετά την ένωση και το μικρό φως δεν αναβοσβήνει. Εάν σχολιαστεί, το σύστημα θα συνεχίσει να επαναφέρεται και το μικρό φως θα αναβοσβήνει κάθε 1 δευτερόλεπτο)
  }
}

Όπως μπορείτε να δείτε από τον παραπάνω πηγαίο κώδικα, η μέθοδος λειτουργίας του Watch Dog είναι πολύ απλή και η όλη διαδικασία περιλαμβάνει μόνο ένα νέο SFR, δηλαδήWDCTL。Ακολουθεί μια συγκεκριμένη περιγραφή του CC2430 στο κινεζικό εγχειρίδιο:

Η χρήση των φυλάκων μπορεί να συνοψιστεί ως εξής:Επιλέξτε Λειτουργία → Επιλέξτε Διάστημα χρονοδιακόπτη → Βάλτε τον σκύλο → ταΐσετε τον σκύλο

(1) Επιλέξτε λειτουργία:

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

Στη λειτουργία χρονοδιακόπτη, είναι ισοδύναμο με ένα κανονικό χρονόμετρο και όταν επιτευχθεί το διάστημα χρονοδιακόπτη, θα παράγει μια διακοπή (μπορείτε να τη βρείτε στο αρχείο ioCC2430.h με διάνυσμα διακοπής WDT_VECTOR). Στη λειτουργία επιτήρησης, όταν επιτευχθεί ένα προγραμματισμένο διάστημα, δεν υπάρχει διακοπή, αντίθετα αποστέλλεται ένα σήμα επαναφοράς στο σύστημα.

Σε αυτό το πείραμα, πέρασεΤο WDCTL. ΛΕΙΤΟΥΡΓΙΑ=0για να επιλέξετε τη λειτουργία gatekeeper.

  (2) Επιλέξτε το προγραμματισμένο διάστημα:

Όπως φαίνεται στο παραπάνω σχήμα, υπάρχουν τέσσερις περίοδοι ρολογιού για να διαλέξετε και για ευκολία δοκιμής, επιλέγουμε το χρονικό διάστημα 1 δευτερολέπτου (δηλαδή, παραγγελία).WDCTL.INT=00)。

  (3) Απελευθερώστε τον σκύλο:

ΠαραγγελίαWDCTL.EN=1για να ξεκινήσετε το χρονόμετρο επιτήρησης.

  (4) Ταΐστε τον σκύλο:

Μόλις ξεκινήσει το χρονόμετρο, αρχίζει να μετράει από το 0. Πριν ο αριθμός του φτάσει τα 32768 (δηλαδή <1s), αν ταΐσουμε τον σκύλο με τον ακόλουθο κωδικό:

  WDCTL =0xa0;
  WDCTL =0x50;  

Στη συνέχεια, η τιμή μέτρησης του χρονοδιακόπτη θα διαγραφεί στο 0 και, στη συνέχεια, θα αρχίσει να μετράει ξανά από το 0x0000, γεγονός που το εμποδίζει να στείλει ένα σήμα επαναφοράς, το οποίο εκδηλώνεται στον πίνακα ανάπτυξης: Το LED1 θα είναι πάντα αναμμένο και δεν θα αναβοσβήνει.

Εάν δεν ταΐσουμε τον σκύλο (δηλαδή, σχολιάσουμε αυτόν τον κωδικό), τότε όταν ο αριθμός του χρονοδιακόπτη φτάσει το 32768, θα εκδοθεί ένα σήμα επαναφοράς και το πρόγραμμα θα εκτελεστεί από την αρχή, το οποίο εκδηλώνεται στον πίνακα ανάπτυξης: Το LED1 αναβοσβήνει συνεχώς και το διάστημα που αναβοσβήνει είναι 1 δευτερόλεπτο. (Σημείωση: Το πρόγραμμα σίτισης σκύλων πρέπει να είναι αυστηρά συνεπές με τον παραπάνω κώδικα και η σειρά αντιστρέφεται/λάθος/γράφεται λιγότερο δεν θα παίξει ρόλο στην εκκαθάριση του 0.) )

Συμβουλές CC2430
Δύο επιπλέον σημειώσεις:
(1) ΣεΛειτουργία σκύλου ρολογιούΕάν ο χρονοδιακόπτης παρακολούθησης έχει ενεργοποιηθεί, η ρύθμιση 0 σε WDCTL.EN δεν είναι έγκυρη (δηλαδή, αυτό το bit δεν μπορεί να παίξει το ρόλο της διακοπής του χρονοδιακόπτη).
(2) ΣεΛειτουργία χρονοδιακόπτη, μπορείτε να γράψετε 1 στο WDCTL.CLR[0] για να διαγράψετε το χρονόμετρο. Γράφοντας 0 στο bit ενεργοποίησης WDCTL.EN θα σταματήσει το χρονόμετρο, ενώ γράφοντας 1 στο bit ενεργοποίησης θα επανεκκινηθεί το χρονόμετρο από 0x0000 και μετά.


(4) Πειραματικά αποτελέσματα:

Εάν προσθέσετε τη λειτουργία FeedDog, εκτελέστε τον κωδικό και διαπιστώσετε ότι το LED1 είναι πάντα αναμμένο (το σύστημα δεν επαναφέρεται).

Εάν σχολιάσετε τη λειτουργία FeedDog, εκτελέστε τον κώδικα και διαπιστώσετε ότι το LED1 αναβοσβήνει σε διαστήματα 1 δευτερολέπτου (το σύστημα επαναφέρει κάθε 1 δευτερόλεπτο).

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

Αυτή η ενότητα περιγράφει την αρχή και τη χρήση των κυκλωμάτων χρονισμού παρακολούθησης. Σε πρακτικές εφαρμογές, εάν απαιτείται υψηλή αξιοπιστία, ο φύλακας μπορεί να χρησιμοποιηθεί στο σύστημα. Όταν το σύστημα πέσει για κάποιο λόγο (δεν μπορεί πια να ταΐσει τον σκύλο), ο σκύλος που κανείς δεν ταΐζει θα γαβγίσει: «Δάσκαλε, υπάρχει μια ανωμαλία, υπάρχει μια ανωμαλία! ”

Για ένα ασύρματο δίκτυο αισθητήρων, η κατανάλωση ενέργειας κατά τη λειτουργία του είναι μια κρίσιμη πτυχή της αξιολόγησης της απόδοσης. Στην επόμενη ενότητα, θα συζητήσουμε την αναστολή λειτουργίας του συστήματος CC2430 και τη διακοπτόμενη κλήση αφύπνισης.






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

Mail To:help@itsvse.com