Πίνακας περιεχομένων:
- Βήμα 1: Ενόραση
- Βήμα 2: Αρχικοποίηση θύρας
- Βήμα 3: Εξαιρετικά χαμηλή ισχύς
- Βήμα 4: ΧΡΟΝΟΛΟΓΟΣ
- Βήμα 5: Λειτουργία χαμηλής κατανάλωσης ενέργειας
- Βήμα 6: Χρονοδιακόπτης ISR
- Βήμα 7: Διακοπή υλικού
- Βήμα 8: ISR- Επαναφορά/ Κουμπί πίεσης
- Βήμα 9: ΚΩΔ
- Βήμα 10: Κωδικός αναφοράς
Βίντεο: MSP430 Μετρητής δευτερολέπτων: 10 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Καλως ΗΡΘΑΤΕ! Κατασκευή μετρητών δευτερολέπτων: Χρήση του CCStudio 8 και του MSP430F5529 για το έργο.
Γλώσσα C για κωδικοποίηση του μικροελεγκτή. Εφαρμογή λειτουργιών χαμηλής ισχύος, χρονοδιακόπτες και διακοπές. Η έξοδος εμφανίζεται μέσω του τμήματος 7.
Βήμα 1: Ενόραση
Ας ξεκινήσουμε!
Αρχικοποιήστε το χρονόμετρο του φύλακα σε κατάσταση OFF χρησιμοποιώντας τον απαιτούμενο κωδικό πρόσβασης για το χρονόμετρο φύλαξης (Βοηθά στον έλεγχο των άπειρων βρόχων, διατηρώντας τον επεξεργαστή ασφαλή).
#περιλαμβάνω
/** * main.c */
int main (άκυρο)
{
WDTCTL = WDTPW | WDTHOLD; // διακοπή χρονομέτρου φύλακα
επιστροφή 0?
}
Βήμα 2: Αρχικοποίηση θύρας
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
Το P3DIR | = 0x00 μας λέει ότι ολόκληρο το PORT-3 είναι προετοιμασμένο για να λάβει εισόδους.
Το P3DIR | = 0xFF μας λέει ότι ολόκληρο το PORT-3 προετοιμάζεται για να δώσει εξόδους.
P3DIR | = 0x01 μόνο ο πείρος P3.0 αρχικοποιείται για έξοδο στο PORT-3. Αυτό ακολουθεί μια χαρτογράφηση δεκαεξαδικού λιμένα.
P4REN | = 0xFF, αυτό δείχνει ότι οι ακίδες του PORT-4 έχουν ενεργοποιημένες τις αντιστάσεις έλξης προς τα κάτω.
Για να τα επιλέξετε μεταξύ Pull UP ή Pull DOWN, χρησιμοποιείται η εντολή P $ OUT | = 0xFF.
Εάν χρησιμοποιείται 0xFF, διαμορφώνονται ως αντιστάσεις Pull UP και αν 0x00 διαμορφώνονται ως Pull DOWN.
Βήμα 3: Εξαιρετικά χαμηλή ισχύς
Το MSP430F5529 μας επιτρέπει να μειώσουμε την απώλεια ισχύος από τον επεξεργαστή. Αυτό είναι χρήσιμο σε αυτόνομες εφαρμογές.
Αυτό απαιτεί τη δήλωση όλων των ακίδων ή θυρών προς έξοδο.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Βήμα 4: ΧΡΟΝΟΛΟΓΟΣ
Χρήση χρονοδιακόπτη για καθυστέρηση δημιουργίας ενός δευτερολέπτου. Αυτό χρησιμοποιεί το SMCLK του 1MHz, επίσης ο χρονοδιακόπτης λειτουργεί σε Λειτουργία χαμηλής ισχύος (στο επόμενο βήμα, αφού η καταμέτρησή του διακόπηκε από το LPM). Αυτή η διαδικασία εξοικονομεί ενέργεια και βάρος στον επεξεργαστή
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Οι τιμές είναι 999, καθώς χρειάζεται μια ακόμη καταμέτρηση για να επιστρέψει στο μηδέν στο μητρώο χρονοδιακόπτη.
Βήμα 5: Λειτουργία χαμηλής κατανάλωσης ενέργειας
_BIS_SR (LPM0_bits+GIE);
Αυτό ενεργοποιεί την Ενεργοποίηση γενικής διακοπής (GIE) και θέτει την CPU στο LPM0, όπου το MCLK που υποστηρίζει τον επεξεργαστή είναι απενεργοποιημένο, και SMCLK και ACLK που εκτελούν το χρονόμετρο σε λειτουργία. έτσι μπορούμε να δούμε ότι η CPU είναι απενεργοποιημένη, εξοικονομώντας ενέργεια.
Βήμα 6: Χρονοδιακόπτης ISR
#pragma vector = TIMER0_A0_VECTOR
_διακοπή χρονοδιακόπτη κενό_Α (κενό)
{
z ++;
εάν (z> καθυστέρηση)
{
P3OUT = κωδικός [x];
P6OUT = κωδικός1 [y];
x ++;
αν (x == 10)
{
x = 0;
y ++;
}
αν (y == 6)
y = 0;
z = 0;
}
}
το διάνυσμα pragma είναι για αναπαράσταση ISR σε C embd.
Ο κωδικός [x] και ο κωδικός1 [y] είναι οι πίνακες που περιέχουν τιμές εξόδου για τα δύο επτά τμήματα, για την εμφάνιση μετρητή 60 δευτερολέπτων.
Βήμα 7: Διακοπή υλικού
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Εδώ το P2.1 δηλώνεται ως διακοπή υλικού, αν πατηθεί το κουμπί, ο μετρητής επανέρχεται στην τιμή.
το υπόλοιπο πρόγραμμα είναι γραμμένο μέσα στο ISR αυτής της διακοπής.
Βήμα 8: ISR- Επαναφορά/ Κουμπί πίεσης
#pragma vector = PORT2_VECTOR
_διακοπή κενής θύρας_2 (άκυρη)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = κωδικός [x];
P6OUT = κωδικός1 [y];
v ++;
για (i = 0; i
{
P1OUT | = BIT0; //P1.0 = εναλλαγή
_ καθυστερημένοι_κύκλοι (1048576);
P1OUT & = ~ BIT0; // P1.0 = εναλλαγή
_ καθυστερημένοι_κύκλοι (1048576);
}
Αυτό το ISR επαναφέρει τον μετρητή και μετράει πόσες φορές πατήθηκε το υπόλοιπο.
(Εδώ η οθόνη γίνεται μέσω εναλλαγής led, μπορεί επίσης να χρησιμοποιήσει έναν άλλο πίνακα και χρονοδιακόπτη, για να εμφανίσει αυτές τις τιμές ως έξοδο σε 7 τμήματα).
Βήμα 9: ΚΩΔ
#περιλαμβάνω
#ορίστε καθυστέρηση 1000
κωδικός char = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6} ·
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
πτητικό ανυπόγραφο int x = 0, y = 0, z = 0;
πτητικό ανυπόγραφο int v = 0, i = 0;
κενό κεντρικό ()
{
WDTCTL = WDTPW | WDTHOLD; // διακοπή χρονομέτρου φύλακα
P7DIR | = 0xFF;
P7OUT | = 0x00;
P8DIR | = 0xFF;
P8OUT | = 0x00;
P4DIR | = 0xFF;
P4OUT | = 0x00;
P5DIR | = 0xFF;
P5OUT | = 0x00;
P1DIR = 0xFF;
P3DIR = 0xFF;
P6DIR = 0xFF;
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
_BIS_SR (LPM0_bits+GIE);
}
// Χρονοδιακόπτης διακοπή ρουτίνας υπηρεσίας
#pragma vector = TIMER0_A0_VECTOR
_διακοπή χρονοδιακόπτη κενό_Α (κενό)
{
z ++;
εάν (z> καθυστέρηση)
{
P3OUT = κωδικός [x];
P6OUT = κωδικός1 [y];
x ++;
αν (x == 10)
{
x = 0;
y ++;
}
αν (y == 6)
y = 0;
z = 0;
}
}
// Ρουτίνα σέρβις διακοπή υλικού
#pragma vector = PORT2_VECTOR
_διακοπή κενής θύρας_2 (άκυρη)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = κωδικός [x];
P6OUT = κωδικός1 [y];
v ++;
για (i = 0; i
{P1OUT | = BIT0; // P1.0 = εναλλαγή
_ καθυστερημένοι_κύκλοι (1048576);
P1OUT & = ~ BIT0; // P1.0 = εναλλαγή
_ καθυστερημένοι_κύκλοι (1048576);
}
}
Βήμα 10: Κωδικός αναφοράς
Αποθετήριο GitHub
Συνιστάται:
Μετρητής επισκεπτών με χρήση αισθητήρα 8051 και IR με οθόνη LCD: 3 βήματα
Μετρητής επισκεπτών με χρήση αισθητήρα 8051 και IR με LCD: Αγαπητοί φίλοι, εξήγησα πώς να φτιάξετε έναν μετρητή επισκεπτών χρησιμοποιώντας αισθητήρα 8051 και υπέρυθρο και τον εμφανίσατε στην οθόνη LCD. Το 8051 είναι ένας από τους πιο δημοφιλείς μικροελεγκτές που χρησιμοποιούνται για χόμπι, εμπορικές εφαρμογές σε όλο τον κόσμο. Έχω κάνει vis
Μετρητής ποιότητας εσωτερικού αέρα: 5 βήματα (με εικόνες)
Μετρητής ποιότητας εσωτερικού αέρα: Απλό έργο για τον έλεγχο της ποιότητας του αέρα στο σπίτι σας. Δεδομένου ότι μένουμε/δουλεύουμε πολύ από το σπίτι τελευταία, ίσως είναι καλή ιδέα να παρακολουθούμε την ποιότητα του αέρα και να υπενθυμίζουμε στον εαυτό μας πότε είναι ώρα να ανοίξουμε το παράθυρο και πάρε λίγο καθαρό αέρα
Απλός μετρητής 20 LED Vu με χρήση LM3915: 6 βήματα
Απλός μετρητής 20 LED Vu με χρήση LM3915: Η ιδέα της κατασκευής μετρητή VU ήταν στη λίστα έργων μου εδώ και πολύ καιρό. Και τελικά μπορώ να τα καταφέρω τώρα. Ο μετρητής VU είναι ένα κύκλωμα για ένδειξη της ισχύος του ηχητικού σήματος. Το κύκλωμα μετρητή VU εφαρμόζεται συνήθως σε κύκλωμα ενισχυτή έτσι ώστε
Πώς να φτιάξετε χρονοδιακόπτη πλυσίματος Arduino 30 δευτερολέπτων, STOP COVID ΔΙΑΔΟΣΗ: 8 βήματα
Πώς να φτιάξετε χρονοδιακόπτη πλυσίματος Arduino 30 δευτερολέπτων, STOP COVID SPREADING: γεια σας
Απλός μετρητής πυκνωτή Autorange / μετρητής χωρητικότητας με Arduino και στο χέρι: 4 βήματα
Απλός μετρητής πυκνωτή Autorange / μετρητής χωρητικότητας με Arduino και στο χέρι: Γεια! Για αυτήν τη μονάδα φυσικής χρειάζεστε:* τροφοδοτικό με 0-12V* έναν ή περισσότερους πυκνωτές* μία ή περισσότερες αντιστάσεις φόρτισης* χρονόμετρο* πολύμετρο τάσης μέτρηση* arduino nano* οθόνη 16x2 I²C* αντιστάσεις 1 / 4W με 220, 10k, 4.7M και