Ένα απλό πείραμα περιγράφεται από τη σύνδεση ενός κουμπιού σε έναν μικροελεγκτή AVR. Καταργήστε τις δυνατότητες σύνδεσης κουμπιών σε θύρες MK και πλοηγηθείτε χρησιμοποιώντας τις μεθόδους ανάγνωσης των κουμπιών με το my Ci.
Στα προηγούμενα άρθρα, τα boules εμφανίστηκαν ως πειράματα με LED, τα οποία ήταν συνδεδεμένα στις θύρες του μικροελεγκτή, ρυθμισμένα στην έξοδο.
Στην περίπτωση των στατιστικών, στον μικροελεγκτή συνδέεται ένα κουμπί, του οποίου οι επαφές παγώνουν όταν πατηθούν και όταν πατηθούν απελευθερώνονται (το κουμπί, το οποίο είναι κλειδωμένο).
Για να καταστεί δυνατή η χρήση του κουμπιού, μπορούμε να συνδέσουμε δύο ακόμη φώτα στον μικροελεγκτή. Το κύκλωμα είναι ακόμα πιο απλό, ο κερδισμένος άξονας:
Μικρό. 1. Σχηματικό διάγραμμα του πειράματος με τον μικροελεγκτή ATtiny2313 χρησιμοποιώντας το κουμπί.
Yak bachimo, έως δύο θύρες PB0 και PB1 μέσω αντιστάσεων, διασυνδέστε, συνδέστε δύο LED και στη θύρα PD2 - ένα κουμπί και υπάρχει επίσης μια αντίσταση διασύνδεσης. Για να συνδέσετε τον προγραμματιστή στο MC, πρέπει να χρησιμοποιήσετε το ροζ Conn 1 (AVR-ISP) και για να συνδέσετε το κύκλωμα στο τροφοδοτικό + 5V, εκχωρούνται δύο επαφές - P1 και P2.

Μικρό. 2. Επιλέξτε ένα διάγραμμα του πειράματος με έναν μικροελεγκτή και ένα κουμπί στον πίνακα ασφαλούς breadboard.
Για ασφαλή σύνδεση στη θύρα με ένα κουμπί, η τελευταία σύνδεση είναι μια αντίσταση με υποστήριξη 1K ohm (μπορείτε να τη συνδέσετε σε υποστήριξη 600 ohm - 2K ohm). Αποδεχτείτε την τιμή, κατά κανόνα, δεν είναι εύκολο να πνιγείτε σε ρομπότ με καρφίτσες, καθώς η θύρα του MK ελέγχεται από την είσοδο από την αρχή την ίδια στιγμή που το κουμπί είναι κλειστό.
Οι ακίδες του μικροελεγκτή είναι γενικής χρήσης GPIO (Έξοδος εισόδου γενικής χρήσης), μέχρι τα οποία μπορείτε να συνδέσετε, καθώς και εξαρτήματα (ενδείξεις, πλήκτρα λειτουργίας) και έξυπνους ψηφιακούς αισθητήρες (κουμπιά, διακόπτες).
Οι ακίδες Decilka στο MK μπορούν να συνδεθούν σε ADC / DAC (Analog-Digital-Reconstruction και navpaki), με άλλη βοήθεια μπορείτε να εμφανίσετε την ανάλυση και τη δημιουργία αναλογικών σημάτων. Τα σοβαρά GPIO δεν μπορούν να χρησιμοποιηθούν για αναλογικά σήματα, μπορούν να έχουν εισόδους / εξόδους 0 (0V) ή 1 (+ 5V).
Πριν από την ακίδα δέρματος GPIO στη μέση του μικροελεγκτή, συνδέονται διάφορα μπλοκ και ηλεκτρονικά εξαρτήματα, σχετικά με την αρχοντιά:
Για τον έλεγχο λογισμικού και τη διαμόρφωση των θυρών δέρματος, εγκαθίστανται τρία ειδικά μητρώα, για παράδειγμα για τη θύρα "Β":
Μπορείτε να μάθετε περισσότερα σχετικά με την προσάρτηση θυρών για ένα συγκεκριμένο μοντέλο μικροελεγκτή από το φύλλο δεδομένων σας, στην ενότητα "I / O-Ports", μπορείτε επίσης να βάλετε τον κωδικό στο Cyber Assembler για ρομπότ με θύρες.
Noble nobility, ότι η καρφίτσα "RESET" μικροκυκλώματα (έχουμε μια καρφίτσα στο διάγραμμα με αριθμό 1), τα οποία χρησιμοποιούνται για την ακύρωση της οθόνης από τα προγράμματα του μικροελεγκτή (επανακαλωδίωση), μπορείτε επίσης να το χρησιμοποιήσετε για να προσθέσετε κουμπιά για να ενεργοποιήσετε τις μεταθέσεις bootie στο το zvitayniy GPIO.
Μπορεί να είναι κανέλα, καθώς το μικροκύκλωμα δεν έχει καρφίτσες για το σχέδιό σας. Για παράδειγμα, όταν έβαλα ένα εξάρτημα στο τσιπ ATtiny13 (8 κομμάτια, 2 τεμάχια - ζωντανά, 5 τεμάχια - θύρα σε είσοδο-vivod, 1 κομμάτι - για RESET), δεν είχατε ούτε μια ακίδα για το φως. Εδώ μπορείτε να βρείτε μια λίστα επιλογών για την επίλυση προβλημάτων:
Είναι πιο απλό και οικονομικό από άποψη οικονομικών / ώρα - κρίνετε από ένα δυνατό σημείο.
Για να εισαγάγετε ξανά τον ακροδέκτη "RESET" στη θύρα εισόδου-εξόδου, θα αλλάξει μια ειδική ασφάλεια - RSTDISBL (Reset Disable). Πρώτον, δεν χρειάζεται μνήμη, αλλά για όλη τη λειτουργία του επαναπρογραμματισμού ο μικροελεγκτής είναι εφικτός μόνο λόγω του προγραμματιστή υψηλής τάσης (για 12 V), του επιπλέον ISP USB, αλλά ο προγραμματιστής δεν έχει τη δυνατότητα να λειτουργήσει.
Επίσης, έχουμε є ένα κουμπί και δύο LED συνδεδεμένα στον μικροελεγκτή, πώς μπορείτε να τα χρησιμοποιήσετε; - και ο άξονας κρυπτογράφησης είναι scho (αλγόριθμος):
Η εφαρμογή της υλοποίησης ενός τέτοιου αλγορίθμου φαίνεται παρακάτω. Δημιουργήστε ένα νέο αρχείο για τα προγράμματά μας και εμφάνιση για επεξεργασία:
Nano /tmp/avr-switch-test.c
Εκτός από τον προσβλητικό κώδικα στο αρχείο:
/ * Πειραματιστείτε με ένα κουμπί στο ATtiny2313 * https: // τοποθεσία * / #define F_CPU 1000000UL // Συχνότητα πυρήνα = 1 MHz #include
Έχουμε ένα πρόβλημα μπροστά μας σταθερή F_CPU, καθώς στον μεταγλωττιστή δουλεύω με τη συχνότητα του πυρήνα του μικροελεγκτή, είναι απαραίτητο οι λειτουργίες να έχουν ρυθμιστεί σωστά. Η εφαρμογή έχει τη λειτουργία παραλαβής για μια ώρα - "_delay_ms" από τη βιβλιοθήκη "util / delay.h"
Ρίξτε μια ματιά στον κώδικα της βιβλιοθήκης "καθυστέρησης" για την οργάνωση της παραλαβής για την ώρα και στην οποία έχει επιλεγεί η σταθερά F_CPU, είναι δυνατό στο GNU Linux με τη βοήθεια ενός επεξεργαστή κειμένου, για παράδειγμα, μπορείτε να χρησιμοποιήσετε το ακόλουθη εντολή:
Nano /usr/lib/avr/include/util/delay.h
Το εργοστάσιο όρισε τη συχνότητα της εσωτερικής γεννήτριας RC στον μικροελεγκτή ATtiny2313 στα 8000000Hz (8MHz), επίσης για τις ρυθμίσεις της υποσυχνότητας f'use - CKDIV8 (Clock Divide by 8), οπότε η πραγματική συχνότητα κρυστάλλου λειτουργίας = 800000 .
Μπορείτε να θαυμάσετε πόσες λειτουργίες είναι εγκατεστημένες στον μικροελεγκτή πίσω από ένα πρόσθετο avrdude ή γραφικό κέλυφος μέχρι το νέο όνομα AVR8 Burn-O-Mat.
Υπάρχουν μακροεντολές που έχουν εκχωρηθεί στο πρόγραμμα για τον έλεγχο του λιμανιού, μέχρι τις οποίες συνδέονται τα LED: LED_BLUE_ON, LED_BLUE_OFF, LED_RED_ON, LED_RED_OFF. Εάν έχετε νικηφόρες μακροεντολές σε οποιοδήποτε είδος προγράμματος, μπορούμε απλώς να ανάψουμε ή να σβήσουμε το δέρμα από τα φώτα, χωρίς να χρειάζεται να επαναλάβουμε τον κώδικα, ώστε να μπορείτε να κάνετε το πρόγραμμα πιο απλό και να το κάνετε να λειτουργεί για εσάς.
Στο κύριο πρόγραμμα "void main (void)" διορθώνουμε το ρομπότ διαμορφώνοντας τις θύρες:
Dal, vikoristovuchi macros, σβήνουμε τα chervonia svitlodiod που ανάβουν μπλε. Τώρα, για την πρόσθετη βοήθεια ενός ακόμη κύκλου, θα εξακολουθήσω να έχω εκκαθαριστεί μέχρι τη στιγμή που το κουμπί δεν εμφανίζεται: "ενώ (! (PIND & (1)<< PD2)));".
Όταν το κουμπί είναι ενεργοποιημένο στον ακροδέκτη 6, θα εμφανιστεί ένα υψηλότερο επίπεδο (είναι καλύτερα να σπάσετε την εσωτερική αντίσταση, η οποία ήταν ενεργοποιημένη νωρίτερα) και στη σειρά PD2 του καταχωρητή PIND, θα οριστεί η λογική 1.
Όταν το μπλε φως ανάβει τρεις φορές, πιάνεται σε 0,5 δευτερόλεπτα και ο κύριος κύκλος θα επισκευάσει το ρομπότ με νέο τρόπο - δύο φώτα θα αρχίσουν να ανάβουν.
Το πρόγραμμα είναι ακόμα πιο απλό, το προστατεύει με γαρνιρισμένο πισινό και αστάρι για περαιτέρω πειράματα.
Στις προηγούμενες δημοσιεύσεις, αφού πειραματίστηκα με τον μικροελεγκτή ATMega8, τότε κερδίζει το mensh της «γέμισης» MK - ATTiny2313.
Για τη μεταγλώττιση των προγραμμάτων και του υλικολογισμικού στο MC, ακολουθήστε τις εντολές για την εγκατάσταση στο ενσωματωμένο κέντρο του προγράμματος Geany.
Επίδειξη στο μενού Build - Ορισμός εντολών δόμησης. Για την εντολή για τη μεταγλώττιση (εντολές C) είναι απαραίτητο να αλλάξετε το μοντέλο του chip, αλλά θα κολλήσει: "-mmcu = attiny2313". Η εντολή για το υλικολογισμικό MK πρέπει να αλλάξει τον τύπο του τσιπ για το avrdude: "-p t2313".

Μικρό. 3. Επανευθυγράμμιση του Geany για ρομπότ με μικροελεγκτή ATTiny2313.
Όλες οι εντολές είναι για GNU Linux OS, αν έχετε Windows, τότε μπορείτε να καταχωρήσετε τις νέες διαδρομές στα δυαδικά αρχεία "avr-gcc.exe", "avr-objcopy.exe", "avrdude.exe".
Περισσότερες λεπτομέρειες σχετικά με αυτούς που δημιούργησαν το Geany στο GNU Linux, κοίταξα σε ένα από τα προηγούμενα άρθρα του κύκλου.
Η μεταγλώττιση, η αναδίπλωση αυτού του υλικολογισμικού από τα προγράμματα μπορεί να τοποθετηθεί οπτικά στο ενδιάμεσο λογισμικό Geany μέσω τριών κουμπιών: "Compile", "Build" και "Run". Ομοίως, η λειτουργία μπορεί να προβληθεί από την κονσόλα, τον άξονα εντολών για το cich diy (τελευταίο viconuvati):
Avr-gcc -mmcu = attiny2313 -Os /tmp/avr-switch-test.c -o /tmp/avr-switch-test.o avr-objcopy -j .text -j .data -O ihex / tmp / avr- switch-test.o /tmp/avr-switch-test.hex avrdude -c usbasp -p t2313 -P usb -U flash: w: /tmp/avr-switch-test.hex
Η προσπάθεια των διοικητών μπορεί να βρει (πίσω από ένα χρονογράφημα ρυθμίσεων και ονομάτων αρχείων) πανομοιότυπες ομάδες, οι οποίες διορθώθηκαν στα μητρώα Geany.
Χωρίς σημασία για την απλότητα του πειράματος, προσπάθησα επίσης να προβάλω ακόμη πιο σημαντικές τεχνικές στιγμές των ρομπότ με τις θύρες, προκειμένου να εδραιώσω τη γνώση ότι θα ήταν σωστά στα μελλοντικά ρομπότ με τους μικροελεγκτές ATMEL.
Σε ορισμένες περιπτώσεις, είναι απλώς λίγο αγενές, για παράδειγμα, ένας υπολογιστής ποδηλάτου. Για την κατασκευή δεν επιτρέπει το μέγεθος πολλών κουμπιών. Έχουμε ένα κουμπί ανά καταχώρηση και τίποτα περισσότερο.
Σπαρτιάτικο μυαλό, αν και, εδώ μπορείτε να ανοίξετε τη σκληρά εργαζόμενη λειτουργικότητα, το πλούσιο μενού και να δώσετε ζωή. σε μια στιγμή θα δείξω ένα από την εφαρμογή μιας τέτοιας διαχείρισης.
Τώρα, ποιο είναι το κουμπί μας;
Όχι πολύ, αλόη τίποτα. Για ένα κουμπί, είναι εντάξει. Όταν γράφετε το head zatik, μην βιδώνετε τη μάζα των πόρων του συστήματος (ώρα επεξεργαστή, χρονόμετρο και tidi) στην επεξεργασία του δυσαρεστημένου κουμπιού. Μπορούμε επίσης να δούμε το γεγονός της επίθεσης, το γεγονός της επίθεσης, την ώρα της επίθεσης, τον αριθμό της επίθεσης στην ώρα. Βάζω τέτοια πεντάλ για την υλοποίηση αυτής της διεπαφής, είναι απλά εκπληκτικό πώς είναι δυνατόν να συσσωρεύσουμε το στυλ του κακού και του γλυκού από ένα πεύκο, την ίδια ζωντάνια όλων των χρονόμετρων :)
Το ίδιο TK εμφανίζεται ως εξής:
Αλγόριθμος
Όλα καταστρέφονται στο αυτόματο μηχάνημα. Το νέο θα έχει τρεις παραμονές:
Και θα υπάρχει επίσης μία διαδικασία σέρβις, όπως, μέσω του mode_time (2c), για την πρώτη ενέργεια με ένα κουμπί για τη φόρτωση όλων των αποτελεσμάτων, και είναι απαραίτητο να τα δημιουργήσετε με αυτά. Δεν είναι καθόλου σημαντικό. Αφήστε το πρόγραμμα.
І ολόκληρος ο κύκλος του drіbnitsya θα περιστρέφεται σε κύκλους, σκουπίζοντας τον εαυτό του μέσω του διεκπεραιωτή (ή κατά σειρά) κάθε 20 ms.
Πάνω
Μπαίνοντας.
Τσι δεν πατιέται το κουμπί; Yaksho ni - vihodimo. Αν είναι σφιχτό, τότε το αυτόματο στη θέση Dn
Ποιο είναι το πρώτο βήμα για το διάστημα mi εδώ; Το συντομότερο δυνατό, τότε θέτουμε τη διαδικασία εξυπηρέτησης για την έναρξη των επενδύσεων (σε 2 δευτερόλεπτα), στη συνέχεια μπορούμε να σας στείλουμε τη διαδικασία συγγραφής.
Vihodimo.
Dn
Μπαίνοντας.
Ακόμα σφιχτό; Yaksho ni, σημαίνει ότι το κουμπί έχει ήδη απελευθερωθεί, πέφτοντας στο στρατόπεδο στο Up і zarakhovuєmo ένα σύντομο πάτημα, όλο και περισσότερα σύντομα τραβήγματα cnt_s... Μόλις πιεστεί σφιχτά, τότε κουμπώνεται την ώρα της τετριμμένης πίεσης του Τιμ. Vimіryuvannya trivialosti έχουμε βρει στις επαναλήψεις του μηχανήματος. Μία επανάληψη 20 ms. Στο τέλος της επόμενης επίθεσης, χρειάστηκαν 20 επαναλήψεις, που είναι κοντά στα 400 ms. Οτιδήποτε είναι πάνω από 0,4 δευτ. θα είναι περισσότερο vazhaєmo στην επίθεση. Αν γίνουν περισσότερες από 20 επαναλήψεις, θα χρειαστεί μια ακόμη επίθεση και μεταφέρεται αυτόματο μηχάνημα από το μύλο Αλ. Vihodimo.
Ο Αλ
Μπαίνοντας.
Δεν σας επέτρεψαν να μπείτε ακόμα; Αν όχι, τότε είναι δυνατό. Όταν το κουμπί είναι ενεργοποιημένο, τότε μεταφέρεται στο Up, έχοντας απορρίψει την αλλαγή ώρας.

Σε μια ώρα mode_time, σε δύο δευτερόλεπτα, τα skills συναντά το natikati - όλα είναι δικά μας. Ξεκινά η διαδικασία για την ανάλυση της συλλογής των αφιερωμάτων και τη συγκέντρωση του natikane. Όλα είναι ήδη απλά εκεί. Σε μια μπανάλ περίπτωση, εμείς οι ρομπίμο χρειαζόμαστε μια ενέργεια. Είμαι άξονας π.χ. είμαι αξιωματικός εντάλματος, το υπερφορτώνω. Μην μπλοκάρετε το κεφάλι με τίποτα σημαντικό, επομένως μην αποτρέψετε τον επιθετικό συνδυασμό.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | #περιλαμβάνω |
#περιλαμβάνω
Ο κώδικας γραφής είναι έτσι, υπάρχουν κυριολεκτικά μερικές σειρές δεμένες στο AVR. Αποδεχτείτε την πίεση του κουμπιού από τον κωδικό. Δέστε αβίαστα στη θύελλα για να πάτε στο κεφάλι, και δεν υπάρχει τίποτα εκεί:
| 1 2 3 4 5 6 7 8 9 10 11 | #περιλαμβάνω |
#περιλαμβάνω Otzhe, φορητότητα στην αρχιτεκτονική στη δεξιά πλευρά δύο σειρών. Λοιπόν, μπορείτε, ξέρετε, να αλλάξετε τον μηχανισμό της αυτόματης εκκίνησης και την εκκίνηση της λειτουργίας του δείγματος. Εάν είστε νικητές ως ο δικός σας διεκπεραιωτής, το λειτουργικό σύστημα θα χρησιμοποιήσει επίσης το σύστημα οργάνωσης του υλικολογισμικού. Και υπάρχουν δύο σειρές στον σωστό κώδικα. Όλα περιγράφονται στο statty meat lie σε δύο αρχεία κουμπί.γі κουμπί.η Βίντεο ρομπότ
Ντριμπνιάκ Επιλογές Λοιπόν, і, zrazumіlo, πολλά από τα αυτόματα μηχανήματα μπορούν να μπουν στη λίστα δωρεάν. Για παράδειγμα, βάσει οποιουδήποτε είδους εντάλματος, από πληκτρολόγιο matrix ή προσάρτημα σήματος. Στα μικροελεγχόμενα virob μου έχω μόνιμα μοχθηρά κουμπιά. Έχοντας γράψει σε αυτό ανεπιτήδευτος οδηγόςσε ρομπότ μαζί τους. Στην τρέχουσα έκδοση, το πρόγραμμα οδήγησης για τη λήψη των κουμπιών αλλάζει εύκολα. Στο πρώτο μέρος του άρθρου, θα περιγράψω τα αρχεία του οδηγού αντί για τον οδηγό και στο επιθετικό θα επιλέξω ένα πρακτικό πισινό. Σχέδιο σύνδεσης κουμπιών παραδοσιακά, μία επαφή του κουμπιού για σύνδεση με τον μικροελεγκτή, η οποία είναι μηδέν. Εσωτερική αντίσταση. Τα κουμπιά συνδέονται με τις εξαιρετικές λειτουργίες του μικροελεγκτή, καθώς δεν κρύβουν τις λειτουργίες του τηλεχειριστηρίου. Το αρχείο κεφαλίδας θα πρέπει να οριστεί στα συμβολικά ονόματα των μητρώων και να εγκατασταθεί στη θύρα, προτού συνδεθούν οποιοδήποτε κουμπί. Cody, θα γράψω στο buffer όταν πατηθούν τα κουμπιά. Λειτουργικό πρωτότυπο. Ρύθμιση της σύνδεσης σε οποιοδήποτε από τα συνδεδεμένα κουμπιά στην είσοδο και συμπεριλαμβανομένης της αντίστασης, η οποία τραβιέται. Wiklikєє main`a. Viconuє εφάπαξ λειτουργία κουμπιών. Στις συναρτήσεις των υλοποιήσεων, η δολιοφθορά κατά του τσιμπήματος είναι ο αριθμός του κουμπιού της εισόδου στο buffer, το ένοχο buty πιέζεται από ένα τέντωμα ενός δεδομένου αριθμού κύκλων λειτουργίας. Ο αριθμός του κουμπιού εισάγεται στο buffer μία φορά, πατήστε το κουμπί μέχρι να κοπεί. Η λειτουργία Qia κλείνει το μάτι σε λάθος χρονόμετρο. Tsey αρχείο για να πάρει εκδίκηση για την υλοποίηση όλων των λειτουργιών. Έχουν ενδιαφέρον, αλλά στερούνται τη λειτουργικότητα της εμπειρίας. Το κουμπί ρολογιού zvychayna μπορεί να χρησιμοποιηθεί για δύο στρατόπεδα - για ένα σφιχτό και για ένα αποδεκτό (το τρίτο στρατόπεδο είναι για το κακό, δεν μπορούμε να μας ξεγελάσουν αμέσως). Στην ιδανική περίπτωση, το κουμπί είναι να πάτε από το ένα στρατόπεδο στο πρώτο γάντι, να διαμαρτυρηθείτε στην πραγματικότητα, με την επίθεση της επαφής, το μπαγατοραζοβέβεται και επεκτείνεται, το πρώτο που πέφτει σε ένα κλειστό στρατόπεδο. Το τίμημα του να σε αποκαλούν βρώμικο κόλπο των επαφών και στη δύναμη όλων των μηχανικών. Ο μικροελεγκτής λειτουργεί σε συχνότητα megahertz και μόλις αρχίσει να λερώνεται, μπορείτε να χρησιμοποιήσετε το κουμπί. Εάν δεν ζείτε σαν να μπήκατε, τότε η βρώμικη επαφή στο μέλλον θα "αφαιρείται" από έναν μικροελεγκτή ως επίθεση μπαγκατοραζόφ. Για τους ανθρώπους, το πρόγραμμα δεν είναι κρίσιμο, για παράδειγμα, εάν το κουμπί χρησιμοποιείται για να ανάψει τη λάμπα του πεύκου. Το Ale zdebіlshy tse δεν είναι ένα πράγμα. Πρόσθετες επαφές μπορούν να εισαχθούν χωριστά, πίσω από ένα πρόσθετο παθητικό φίλτρο χαμηλής συχνότητας. Το Ale nagato είναι πιο εύκολο να ξεπεράσει το βρώμικο κόλπο, έχοντας καταστρέψει το πρόγραμμα του μικροελεγκτή με μια απλή εμφάνιση. Μια παραλλαγή παρόμοια με τον αλγόριθμο υλοποίησης για τη συνάρτηση BUT_Debrief (). #define THRESHOLD 20 πτητικό ανυπόγραφο charπατημένοΚλειδί = 0; κενός BUT_Debrief ( κενός
) // όπως την ώρα της ημέρας // εάν το κουμπί καθαριστεί } Επισκεφθείτε την τελευταία εμπειρία του visnovkiv με ένα στάχυ με κέφι. Μόλις πατηθεί το κουμπί, στο πλήκτρο αλλαγής ώρας, εισάγεται ο κωδικός οθόνης. Μπορούμε στη συνέχεια να αλλάξουμε την τιμή του μεταβαλλόμενου comp, άρα είναι zyasuvati, καθώς το κουμπί βρίσκεται στο σφιχτό stan. Εάν το comp δεν είναι μέχρι το όριο THRESHOLD, θα αυξηθεί. Μόλις η τιμή comp οριστεί στην ίδια τιμή με το THRESHOLD, το πλήκτρο αλλαγής ώρας θα αντιγραφεί στην προσωρινή μνήμη του κουμπιού με πατημένο πλήκτρο. Όταν το comp έχει ρυθμιστεί σε μια νέα τιμή, ο μικροελεγκτής δεν θα αυξήσει την αλλαγή ούτε θα γράψει στο buffer όταν πατηθούν τα κουμπιά. Σε τέτοια κατάταξη, σαν να μην δάμασε το κουμπί, ο μικροελεγκτής διόρθωσε το γεγονός της επίθεσης μόνο μία φορά. Συχνά είναι απαραίτητο να φτάσετε στα κουμπιά για τη ρύθμιση γραμμικά μεταβαλλόμενων τιμών. Στο τέλος του παιχνιδιού, αυτός ο αλγόριθμος χειρίζεται χειροκίνητα - μια σύντομη πίεση στο κουμπί αλλάζοντας την τιμή, μια ασήμαντη πίεση στο κουμπί. Ένα μέρος της συνάρτησης λειτουργίας είναι αποδεκτό και μια απλή έκδοση της υλοποίησης του αλγορίθμου είναι αποδεκτή. #define THRESHOLD2 300 αν(συμπ. == THRESHOLD) Τώρα, εάν το κουμπί διαγραφεί για περισσότερους από 300 κύκλους λειτουργίας, ο μικροελεγκτής θα γνωρίζει και θα γράψει τον κωδικό στο buffer. Όλα είναι σε ηρεμία, το θέμα των κουμπιών δεν είναι κλειστό. Ο Νταλ θα είναι... Επόπτης: Το πρόγραμμα του keruvannya αναλύεται με ένα svitlodiod. Όταν πατηθεί το κουμπί, το φως θα ανάψει, όταν το κουμπί είναι απενεργοποιημένο. Για στάχυ θα προσθέσω ένα σχηματικό στο αποσπώμενο μέρος. Για να συνδεθείτε με τον μικροελεγκτή οποιωνδήποτε εξωτερικών παραρτημάτων, γυρίστε τη θύρα για είσοδο προς έξοδο. Δερμάτινο іf portіv іtatnіy pratsyuvati yak στην είσοδο καθώς και στην έξοδο. Εναλλαγή svitlodiod σε μία θύρα και το κουμπί σε μία. Για όλες τις πληροφορίες, θα είμαστε νικητές ως ελεγκτής Atmega8... Το μικροκύκλωμα έχει 3 θύρες εισόδου-εξόδου, υπάρχουν 2 χρονοδιακόπτης/ψύκτης οκτώ σειρών και 1 χρονόμετρο δεκαέξι σειρών. Επίσης, στο σκάφος υπάρχει ένα PWM 3 καναλιών, αναλογική-ψηφιακή επανάσταση 6 καναλιών 10 bit που είναι πολύ δημοφιλής. Είναι υπέροχο να έρχομαι στο ομοίωμα μου, τον μικροελεγκτή για να μάθω τα βασικά του προγράμματος. Για να συνδέσετε τις λυχνίες LED από τους νικητές, χρησιμοποιήστε τη γραμμή PB0 και για να διαβάσετε τις πληροφορίες από το κουμπί ταχύτητας, χρησιμοποιήστε τη γραμμή PD0. Το διάγραμμα φαίνεται στο Σχ. 1. Μικρό. ένας Μέσω της αντίστασης R2, παρέχεται τροφοδοσία συν τάσης στην είσοδο PD0, η οποία υποδεικνύει το σήμα μιας λογικής μονάδας. Όταν τα κουμπιά χαμηλώνουν, η τάση πέφτει στο μηδέν, που φαίνεται να είναι λογικό μηδέν. Είναι δυνατό να ενεργοποιήσετε το R2 με βάση το κύκλωμα, να το αντικαταστήσετε με την εσωτερική αντίσταση, να προσθέσετε τις απαραίτητες ρυθμίσεις στο πρόγραμμα. Svitlodiod των συνδέσεων στη θύρα εισόδου PB0 μέσω μιας αντίστασης R3, η οποία βρίσκεται μεταξύ του κορμού. Για να ανάψετε το LED, πρέπει να στείλετε ένα λογικό σήμα στη γραμμή PB0. Η γεννήτρια ρολογιού έχει ρυθμιστεί στην εσωτερική γεννήτρια ρολογιού στα 4 MHz, καθώς το εξάρτημα δεν έχει υψηλές συχνότητες έως ότου η συχνότητα είναι σταθερή. Τώρα γράφεται το πρόγραμμα. Για να γράψω ένα πρόγραμμα, είμαι ενδιάμεσο λογισμικό του Vicorist AVR Studioі WinAvr.Ανοίξτε το AVR Studio, ψεκάστε στο τέλος της ημέρας, πατήστε το κουμπί "Δημιουργία νέου έργου" (Νέο έργο), επιλέξτε τον τύπο του έργου - AVR GCC, γραμμένο στο έργο, για παράδειγμα "cod1" ініціалізації ", πιέζοντας το κουμπί "Dal ", στο αριστερό παράθυρο δόνηση" AVR Simulator ", και στον δεξιό τύπο μικροελεγκτή" Atmega8 ", πατώντας το κουμπί " Finish ", εμφανίζεται ο επεξεργαστής και το δέντρο της κατηγορίας εγκατάστασης έχει ολοκληρωθεί. Για ένα cob of dodamo, το τυπικό κείμενο των περιγραφών του Atmega8 για τον πρόσθετο χειριστή του συνημμένου αρχείου: #περιλαμβάνω συντακτικό της οδηγίας #περιλαμβάνω #περιλαμβάνω<имя_файла.h> Καμάρες Kutovі< и >Για να προσθέσετε αρχεία στον μεταγλωττιστή, ο οποίος μπορεί να συνδεθεί, χρειάζεστε ένα αντίγραφο του shukati στον τυπικό παπικό WinAvr με συμπερίληψη. Μετακινήστε τα πόδια και δώστε εντολή στον μεταγλωττιστή να φτιάξει ένα αστείο με τον σκηνοθέτη, στο οποίο το έργο έχει επιμεληθεί. Για μικροελεγκτή τύπου δέρματος є δικό του αρχείο κεφαλίδας. Για το ATMega8, το αρχείο ονομάζεται iom8.h, για το ATtiny2313 - iotn2313.h. Στο cob, τα προγράμματα δέρματος είναι υπεύθυνα για το διακόπτη, το αρχείο κεφαλίδας του μικροελεγκτή, που είναι ο εφημερεύς μου. Ale є th zagalny αρχείο κεφαλίδας io.h. Ο προεπεξεργαστής επεξεργάζεται το αρχείο με τη μορφή έργου, συμπεριλαμβανομένου του απαιτούμενου αρχείου κεφαλίδας στο πρόγραμμά μας. Για εμάς, η πρώτη σειρά προγραμμάτων είναι να δούμε τον άξονα ως εξής: #περιλαμβάνω Είτε είναι το πρόγραμμά μου, είμαι ένοχος που αποκάλυψα τη λειτουργία ενός κεφαλιού. Vona maє im'ya main. Τα προγράμματα επίσκεψης θα πρέπει να επισκευάζονται από την κύρια λειτουργία του επισκέπτη. Η συνάρτηση έχει μια επικεφαλίδα - int main (void) і tіlo - περιβάλλεται από φιλιγκράν τόξα (). int main (κενό) Ο κώδικάς μας έχει μόνο μερικές λειτουργίες και επιπλέον. Ο τύπος της τιμής που πρέπει να περιστραφεί εμφανίζεται πριν από τη συνάρτηση. Καθώς η συνάρτηση δεν περιστρέφει την τιμή - κλειδί vikoristovuyutsya κενός. ενθ- ολόκληρος αριθμός 2 byte, εύρος τιμών από - 32768 έως 32767 Μετά την αλλαγή της συνάρτησης στα τόξα () εμφανίζονται παράμετροι, οι οποίες μεταφέρονται στη συνάρτηση από την ώρα στο wiklik. Ως συνάρτηση χωρίς παραμέτρους - λέξη-κλειδί vikorystyutsya κενός... Λειτουργίες κύριοςνα πάρει εκδίκηση για ένα σύνολο εντολών, να δημιουργήσει ένα σύστημα και αυτό το κεφάλι κύκλο με προγράμματα. Λιμάνι Dali nalashtovuєmo ρεστην είσοδο. Η ρομποτική λειτουργία της θύρας ξεκινά στη θέση του καταχωρητή DDRD(Μητρώο απευθείας μετάδοσης πληροφοριών). Ο αριθμός "0x00" (0b0000000 - στην προβολή διπλής όψης) γράφεται σε ολόκληρο τον καταχωρητή, εκτός από τα κουμπιά σε αυτήν τη θύρα, τίποτα δεν είναι συνδεδεμένο, επομένως ολόκληρη η θύρα D έχει ρυθμιστεί στην είσοδο. Η θύρα μπορεί να ρυθμιστεί σε μικρό ποσό γράφοντας τους αριθμούς 0 ή 1 (0-in, 1-out) στον καταχωρητή bit skin, για παράδειγμα DDRD = 0x81 (0b10000001) - η τελευταία γραμμή στη θύρα D αποστέλλεται στο η έξοδος, η οθόνη στην είσοδο. Είναι επίσης απαραίτητο να συνδέσετε την εσωτερική αντίσταση στην καλωδίωση. Εάν η θύρα είναι στην κατάσταση εισαγωγής, εάν η θύρα είναι στην κατάσταση εισόδου, ο καταχωρητής PORTx θα αυξηθεί στις εσωτερικές αντιστάσεις στον πυρήνα. Εγγράψιμο υπάρχουν odinits. Λιμάνι Nalashtovuєmo σινα πάω. Η ρομποτική λειτουργία της θύρας ξεκινά στη θέση του καταχωρητή DDRB... Nichogo, εκτός από το svitlodiod προς το λιμάνι σιδεν είναι συνδεδεμένο, επομένως ολόκληρη η θύρα μπορεί να ρυθμιστεί εν κινήσει. Φροντίστε να εγγραφείτε στο μητρώο DDRBαριθμοί "0xFF". Για να ανάψει για πρώτη φορά το φως χωρίς να πέσει μπορεί να γραφτεί στη θύρα σιλογικά μηδενικά. Να είστε προσεκτικοί με την εγγραφή PORTB= 0x00; Για να εκχωρήσετε μια τιμή, χρησιμοποιείται το σύμβολο "=" και ονομάζεται τελεστής εκχώρησης. Ρυθμίστε τις θύρες στο viglyadatime ως εξής: DDRD = 0x00; Ο κύριος κύκλος των προγραμμάτων είναι γραμμένος. ενώ("φύγετε" στα Αγγλικά) - η εντολή οργανώνει τον κύκλο, επαναλαμβάνοντας το μπαγατοράζ για λίγο μέχρι σιγά σιγά, αφήνοντας το μυαλό, δηλαδή αφήνοντας τα χέρια στο αληθινό. Έχουμε λάβει σεβασμό για τις ταινίες, αλλά είναι αληθινές, γιατί δεν είναι ακριβές στο μηδέν, και πολύ καλά, επειδή είναι ακριβές. Η εντολή του wiggle έχει ως εξής: ενώ (umova) Στο vipadku μας, ο κύριος κύκλος αναπτύσσεται χωρίς καμία εντολή. Qia ομάδα nada registru PORTBτην τιμή του καταχωρητή, η οποία είναι ανεστραμμένη PORTD. PORTB = ~ PIND; // Πάρτε μια τιμή από τη θύρα D, αντιστρέψτε την και εκχωρήστε PORTB (εγγραφή στο PORTB) // virazi με το Sі μου να διαβάζεται από δεξιά προς τα αριστερά PINDμητρώο των εισαγόμενων πληροφοριών. Για να διαβάσετε τις πληροφορίες από το όνομα του ελεγκτή, είναι απαραίτητο να μεταφέρετε την απαιτούμενη ισχύ στη θύρα στη λειτουργία εισόδου. Για εγγραφή στο επίσημο μητρώο DDRxμηδέν. Μόνο όταν το σήμα αποστέλλεται στο εξάρτημα αλυσίδας, είναι δυνατή η αποστολή ψηφιακού σήματος από το εξωτερικό εξάρτημα. Ο μικροελεγκτής Dali διάβασε byte από τον καταχωρητή PINx... Αντί για σήμα σε σήμα σε κλήση σε θύρα. Το πρόγραμμά μας είναι έτοιμο και μοιάζει με αυτό: #περιλαμβάνω Έχουμε πολλά σχόλια. Є δύο τρόποι γραφής. / * Σχόλιο * / Εάν έχετε μεταγλωττιστή, δεν μπορείτε να είστε τόσο σκληροί με αυτά που γράφονται στα σχόλια. Εάν θέλετε να χρησιμοποιήσετε το πρόγραμμα και να συνδέσετε στον μικροελεγκτή 8 κουμπιά και 8 λυχνίες LED, όπως φαίνεται στο baby 2, τότε θα είναι μηδενικό, αλλά θα είναι δερμάτινο για τη θύρα ρεδείχνει το δικό του κομμάτι στο λιμάνι σι... Πατώντας το κουμπί SB1 - ανάψτε το HL1, πατώντας το κουμπί SB2 - ανάψτε και το HL2. Malunok 2 Στο statti buli vikoristani υλικά από το βιβλίο του A.V.Bulov. "Πρόσθετα ρομποτικής Samovchitel στο AVR" Το ATMega16 MK διαθέτει τρεις χρονοδιακόπτες / ανιχνευτές - δύο 8-bit (Timer / Counter0, Timer / Counter2) και έναν 16-bit (Timer / Counter1). Είναι απαραίτητο να εκδικηθούμε τον ειδικό μητρώο, ένας από τους οποίους είναι ο καταχωρητής TCNTn (n είναι ο αριθμός 0, 1 και 2). Εάν ο επεξεργαστής εμφανίσει μία εντολή, αντί για τον καταχωρητή θα αντικατασταθεί από μία (αριθμός κύκλων 8, 64, 256 και 1024 ρολογιού). Αυτός είναι ο λόγος που ονομαζόμαστε rakhunkov. Krim, το OCRn (Output Compare Register), μέχρι να μπορέσουμε να γράψουμε τον ίδιο τον αριθμό. Στο ψυκτικό συγκρότημα 8-bit, ο καταχωρητής έχει 8-bit. Στον κόσμο, τα προγράμματα στη θέση του TCNTn αυξάνονται και ταυτόχρονα είναι διαθέσιμα από το outstage του OCRn. Todi (εάν έχουν οριστεί ειδικές παράμετροι) στο TIFR (Timer / Counter Interrupt Flag Register) ένα από τα bit στη μονάδα μεταφοράς και στον επεξεργαστή, τα αντίγραφα ασφαλείας τροφοδοτούνται για τη διακοπή και εμφανίζονται αμέσως σε περίπτωση απροσδιόριστου κύκλου Η διαδικασία επαναλαμβάνεται. Το διάγραμμα ρολογιού εμφανίζεται κάτω από τη λειτουργία CTC (Clear Timer on Compare). Γενικά, ο καταχωρητής rakhunkovy διαγράφεται κατά την έναρξη αντί για TCNTn και OCRn, καθώς φαίνεται να αλλάζει την περίοδο της μετάβασης. Απέχει πολύ από το να είναι η μόνη λειτουργία χρονοδιακόπτη / μανδάλωσης ρομπότ. Δεν χρειάζεται να διαγράψετε το μητρώο εγγραφής τη στιγμή της εκκίνησης, έτσι ώστε να εμφανιστεί ο τρόπος δημιουργίας της διαμόρφωσης πλάτους παλμού, που είναι ένα ξεκάθαρο επιθετικό καταστατικό. Μπορείτε να αλλάξετε απευθείας στο rakhunka, δηλαδή, αντί για τον καταχωρητή rakhunka, θα αλλάξετε το πρόγραμμα στον κόσμο. Είναι επίσης δυνατό να λειτουργήσει το rakhunok όχι για τον αριθμό των εντολών που στέλνει ο επεξεργαστής, αλλά για τον αριθμό των αλλαγών στην πίεση στο "κατώτερο" T0 ή T1 (λειτουργία ψύκτη) μπορεί να γίνει αυτόματα, χωρίς τη συμμετοχή του επεξεργαστή , ο μύλος παραβίασης στο OCn στο μηχάνημα. Timer / Watchdog1 με τη μορφή λειτουργίας πολλαπλών καναλιών - A chi U. Για την εκκίνηση του χρονοδιακόπτη, είναι απαραίτητο να εμφανιστούν τα μηνύματα στο μητρώο με το χρονόμετρο TCCRn (Timer / Counter Control Register), προκειμένου κάποιος να επισκευάσει άμεσα το ρομπότ του. Δεν θα μπορούμε να χρησιμοποιήσουμε τα ρομπότ χρονοδιακόπτη. Εάν γνωρίζετε ένα ρομπότ σε αυτήν τη λειτουργία, τότε διαβάστε το φύλλο δεδομένων στο ATMega16 - εκεί όλες οι αναφορές είναι γραμμένες στα αγγλικά, δίνεται η προσθήκη προγραμμάτων σε C και assemblers (δεν είναι για τίποτα που δανειζόμαστε 357 σελίδες φιλικού κειμένου! ). Τώρα ας ασχοληθούμε με τα κουμπιά. Ως αποτέλεσμα, υπάρχει ένας μικρός αριθμός κουμπιών (έως 9 τεμάχια), τα οποία μπορούν να συνδεθούν στη γείωση και να συνδεθούν σε οποιαδήποτε θύρα του μικροελεγκτή. Όταν υπάρχουν πολλές είσοδοι δικτύου, για τις οποίες μπορείτε να ρυθμίσετε ορατά bit στον καταχωρητή DDRx και να ενεργοποιήσετε την εσωτερική αντίσταση ρυθμίζοντας τα bit στον καταχωρητή PORTx. Ταυτόχρονα, στο δεδομένο "nizhkah", θα εμφανιστεί μια δύναμη 5 V. Όταν πατηθούν τα κουμπιά εισόδου, το MK θα σταματήσει στο GND και θα πέσει στο μηδέν (ή ίσως το navpaki - το MK κλείνει στο έδαφος στο ο μετατοπισμένος μύλος). Κάθε φορά που αλλάζει ο καταχωρητής PINx, σε ποια θύρα αποθηκεύεται (στην προβολή του PORTx, στην οποία θύρα έχει ρυθμιστεί να εγκατασταθεί, στην έναρξη οποιωνδήποτε κουμπιών). Διαβάζετε περιοδικά το PINx, είναι δυνατό εάν πατήσετε το κουμπί. UVAGA!Μόλις το bit του καταχωρητή DDRx οριστεί στο 1 για το κουμπί σας, τότε η πίεση στο κουμπί μπορεί να οδηγήσει σε ένα μικρό τεχνικό αποτέλεσμα - dima navkolo MK. Φυσικά, το MC θα μπορεί να στείλει το μήνυμα στο πλαίσιο για smitty ... Ας περάσουμε στο πρακτικό κομμάτι. Δημιουργήστε έναν νέο χώρο εργασίας και ένα νέο έργο στο IAR, για παράδειγμα TimerButton. Ορίστε την επιλογή στο έργο με τον τρόπο που περιγράφεται στο προηγούμενο άρθρο. Και τώρα θα πληκτρολογήσουμε τον προσβλητικό μικρό κωδικό. Κοίτα, yak tse pratsyuє. Οι συναρτήσεις init_timern έχουν ρυθμιστεί να είναι σε καταχωρητές TCCRn, OCRn και TIMSK και ένας τέτοιος τρόπος μπορεί να γίνει θαυμάσια ή δεν ξέρω. Πάρε το, εξήγησε τη σπάτκα που σημαίνει γράψε "(1 de a - tse αριθμός, dvіykove εκδήλωση οποιασδήποτε απαίτησης για καταστροφή, και b δείχνει, σε skіlіv μάχες της απαραίτητης καταστροφής. Ταυτόχρονα, είναι δυνατή η σπατάλη της τιμής, η οποία θα πρέπει να αποθηκευτεί στο α (ώστε να μην είναι πάντα δυνατή η ενημέρωση αυτών που βρίσκονται στο α). Ο πισινός φαίνεται: Πώς να εμφανιστείτε στη λίστα με τις σειρές C = (22 Το 2 για έναν διπλό κωδικό θα μοιάζει με το yak 00010110 και αν το στείλετε για 3 beats, μπορούμε να δεχτούμε C = 10110000. Ομοίως іsnu і zsuv δεξιόχειρας. Ακίνητος πισινός: Δείτε μια επιλογή παραδειγμάτων στα εσωτερικά τόξα (0xFF - tse 255 στον κωδικό των δεκαέξι σημείων), από το 11111111 πηγαίνετε στο 111111100, τότε το ναυάγιο θα φαίνεται στα δεξιά και μπορούμε να δούμε C = 00111111. Yak bachimo, υπάρχουν μέχρι δύο. δύο χτυπήματα. Το Tsyogo δεν έγινε b, ως αλλαγή τύπου int, γιατί το int δανείζεται 16 bit. Τώρα μπορούν εύκολα να φανούν δύο τελεστές bit, οι οποίοι μπορούν να γίνουν ευρέως διαδεδομένοι όταν προγραμματίζονται με MC. Ο ίδιος τελεστής είναι "bitty" (&) και "bittoe abo" (|). Yak stech diyut, αναρωτιέμαι αν θα ακουστεί ήχος από τον πισινό: Дія: Αποτέλεσμα (στον διπλό κωδικό): С = 0; // C = 00000000 C = (1 // C = 00100101 C | = (1 // C = 00101101 C & = (0xF0 >> 2)); // C = 00101100 C = (C і 4) | 3; // C = 00000111
Χωρίς να ξεχνάμε λίγο! Є πιο "bitty wiklyuchne abo" (^). Υπάρχουν κάποιες περιπτώσεις ίδιων παλμών, καθώς και η μυρωδιά του ίδιου, γύρισε 0, και το ίδιο. Γυρίστε στα προγράμματά μας. Λέει «(1 Κατά τη μεταγλώττιση του προγράμματος, η εγγραφή WGM01 απλώς αντικαθίσταται από τον αριθμό 3 και η σωστή εγγραφή πρέπει να εισαχθεί στο αποτέλεσμα. Το WGM01 ονομάζεται μακροεντολή και βρίσκεται στη μνήμη μιας αλλαγής στη μνήμη (είναι στη μνήμη του προγραμματιστή :-). Απλώς ρίχνω μια ματιά στο φύλλο δεδομένων τώρα, αλλά δεν έχει σημασία αν είναι, το WGM01 είναι το τρίτο bit στον καταχωρητή TCCR0. Οι ίδιοι ρυθμοί των πρώτων μαχών του μητρώου. Το Tsei zbig δεν είναι βιώσιμο και εφαρμόζεται σε όλα τα μητρώα του MK (ή ακόμα και σε όλα). Δηλαδή γράφοντας «(1 Με τη μία σειρά σημαίνει ότι όταν η λειτουργία STS είναι ενεργοποιημένη, όταν ο χρονοδιακόπτης είναι ρυθμισμένος στο 0, αλλάζει ο μύλος "χαμηλού" OS0 (Vona f PB3), αντί για το ψυκτικό συγκρότημα, το δέρμα μειώνεται στους 1024 κύκλους ρολογιού. Το ίδιο για το χρονόμετρο 2: TCCR2 = (1 Ο καταχωρητής TIMSK (Timer/counter Interrupt Register MaSK) έχει ρυθμιστεί στη λειτουργία διακοπής. Έγραψε ο Μι scho σημαίνει εκ νέου αντιστοίχιση χρονοδιακόπτη2 μετά από TCNT2 και OCR2. Υπόλοιπη λειτουργία - όλη η λειτουργία αλλαγής του χρονοδιακόπτη 2. Η Perevannya θα είναι γυμνή από την επιθετική κατάταξη: de VECTOR - tse macro του διανύσματος της αναστροφής (πίσω από τον καρπό, μόνο ένας αριθμός, που χαρακτηρίζει την αντιστροφή). Οι μακροεντολές με τη σειρά μείωσης της προτεραιότητας επανασφαλίζονται στο αρχείο iom16.h. TYPE - ο τύπος της τιμής που μπορεί να περιστραφεί από τη συνάρτηση, στον τύπο κενού μας. Ім'я - περισσότερο από іm'ya ολόκληρης της συνάρτησης. Με τους ανθρώπους perevvannymi shchnem napratsyuvatis στο maybutny. Όταν επιλέγουμε τη λειτουργία μας, είμαστε ένοχοι μέσω του νεκροτομείου των LED, συνδεδεμένων με PB0 και PB1. Zvazhayuchi για τα πάντα, η συχνότητα είναι 11059200 / (256 * 1024) = 42 Hz. Tse shvidko, ale θα πλυθεί με ένα αδυσώπητο μάτι. Πριν από την ομιλία, μπορούν να ρυθμιστούν τα χρονόμετρα, ώστε να μπορείτε να ανοίξετε τις ακριβείς ώρες, ώστε να μην χαθείτε λόγω της δυνατότητας αναδίπλωσης των προγραμμάτων σας (αν δεν έχετε περισσότερες από μία διακοπές). Otzhe, zberigaymo αρχείο yak "TimerDebug.c", προστέθηκε στο έργο, υπολογιστής, υλικολογισμικό MK. Είναι mi bachimo; Το Svitlodiod, οι συνδέσεις με το PB3, είναι ενεργό morgatime και στο PB0 και το PB1 υπάρχουν πολλές αλλαγές. Ποιος είναι στα δεξιά; Γιατί να μην είναι έτσι; Sob tse z'yasuvati, για να έχουμε την ευκαιρία να κοσμήσουμε το πρόγραμμά μας. Οι ταλαντώσεις στο IAR είναι ανόητο το πρόγραμμα εντοπισμού σφαλμάτων, κοινόχρηστο από το AVR Studio. Μπορείτε να προσθέσετε έναν σύνδεσμο προς τη μέση του καταστήματος από τον ιστότοπο του virobnik http://atmel.com. Προβλήματα από το її μέχρι το κατεστημένο, υποθέτω, είναι αθώα. Πριν ξεκινήσετε το AVR Studio, επιλέξτε τη λειτουργία εντοπισμού σφαλμάτων για το IAR και ανοίξτε το αρχείο cof επικάλυψης (ενδέχεται να εμφανίζονται όλες οι επιλογές για το έργο, όπως περιγράφεται στο προηγούμενο άρθρο). Όταν ανοίγετε το AVR Studio, παρεμπιπτόντως, σας είμαστε ευγνώμονες, σε όποια ατμόσφαιρα κι αν είναι Open. Τώρα πηγαίνετε στο φάκελο με το έργο, υπάρχει Debug \ Exe, επιλέξτε "TimerDebug.cof" εκεί, ανοίξτε το έργο εκεί, de-proponate, επιλέξτε τη συσκευή ATMega16 και τη λειτουργία του πρόσθετου Simulator. Γράψιμο, αν όλα έγιναν σωστά, αμέσως η διαδικασία βελτίωσης Το seredovische τρέφεται και εδώ καλά γιατί Επιτρέποντας την αναζήτηση σε όλα τα μητρώα του MK και τη μη αυτόματη εγκατάσταση της έννοιας των παλαμάκια του Misha. Για παράδειγμα, εάν πρέπει να ορίσετε τον κωδικό μεταφοράς στον καταχωρητή TIFR στο bit 7 (με μαύρο τετράγωνο στο TIMSK), τότε τα επιθετικά προγράμματα βελονάκι (πιέζοντας F10 ή F11) θα ξεκινήσουν τη διαδικασία μεταφοράς (ο κωδικός θα καταχωρηθεί αυτόματα όταν έχει ρυθμιστεί το TCCR2). Ale, στο podiv μας, δεν θα υπάρχει perevvannya! Νηστίσιμο φαγητό: σε τι; Εμφανίζεται καταχωρητής CPU, SREG. Ολόκληρος ο καταχωρητής σημαίνει το ρομπότ του επεξεργαστή, το ίδιο bit (I-bit, Bit Interrupt) ζητείται για την επεξεργασία όλων των μεταφορών στο MC. Δεν το έχουμε. Varto yogo vistaviti, μόλις δεις αλλαγή (μόλις εγκαταστάθηκε ένα bit στο TIFR). Μπορείτε να σημειώσετε ένα ιδιαίτερο χαρακτηριστικό: καθώς μόνο ο επεξεργαστής βρίσκεται στη διαδικασία μεταφοράς, είναι γνωστό ολόκληρο το κομμάτι (ο επίσημος της διανομής των κτιρίων του δείγματος) και όταν βγείτε από τη λειτουργία μεταφοράς, η γνώση θα εκκίνηση αυτόματα. Tse δεν επιτρέπει στον επεξεργαστή, όχι vikonavshi μία ανταλλαγή, συσσώρευση για το inshe (επίσης στο πρόγραμμα η ίδια κατάταξη στο πρόγραμμα - σύμφωνα με τους υποστηρικτές). Ωστόσο, είναι απαραίτητο να προσθέσετε μια σειρά στον κώδικα για την εγκατάσταση του μιτ σε ένα μόνο μύλο. Dodame το στη συνάρτηση init_timer2. Η Weide θα έρθει: Τώρα, έχοντας τροποποιήσει τη διαμόρφωση του Release και αναβοσβήνει το MK στην επίθεση του F7 και εκκινώντας το AVReal32.exe, παρεμπιπτόντως, όλα είναι καλά. Σημείωση:Όταν τα προγράμματα βελτιώθηκαν, τα χρονόμετρα διακόπηκαν, όπως η δυσοσμία των παλιών, οπότε στη διαδικασία βελτίωσης στο AVR Studio το πρόγραμμα θα εμφανίζεται χίλιες φορές πιο συχνά, όχι στη μέση του MC , αν δεν το σκεφτείς. Θα προσθέσω ένα παρόμοιο μήνυμα με αυτά σε άλλα συστήματα λογισμικού, όπως το Visual C ++. Τώρα, αφού το ξεπεράσαμε με τη βοήθεια των προγραμμάτων, προστίθεται ένα νέο αρχείο στο IAR (και τα παλιά αποθηκεύονται από το έργο) και θα πληκτρολογήσουμε τον προσβλητικό κωδικό: Ένα αντίγραφο του υποστηρικτή πάρτε το έτοιμο αρχείο υλικολογισμικού (αρχεία πριν από το statti, το φάκελο Release, το αρχείο TimerButton.hex ή τη συλλογή του κειμένου) και γράψτε το στο MK. Όταν θέλετε να αφαιρέσετε το καλώδιο υλικολογισμικού, συνδέστε τα κουμπιά στο PC0 και το PC1 και προσπαθήστε να τα πιέσετε. Παρεμπιπτόντως, όταν πατάτε ένα από τα κουμπιά, ο καταχωρητής PORTB θα αυξηθεί (ανάβει) και όταν πατάτε ένα από τα κουμπιά, αλλάζει. Εάν δεν είναι σωστό, δοκιμάστε να πατήσετε ένα κουμπί και είναι εντάξει να το κάνετε. Στα δεξιά, όταν ενεργοποιώ τα κουμπιά με μια επιθετική κατάταξη: όταν πατάω το κουμπί, το MK ανεβάζει το ρολόι και όταν αφεθεί, σκοντάφτει στο έδαφος. Μόλις συνδέσετε τα κουμπιά με κάποιο τρόπο, θα πρέπει να κάνετε περισσότερα από τον εκσυγχρονισμό του προγράμματος. Ας καθαρίσουμε τον κώδικα. Εδώ, το ρομπότ είναι οργανωμένο με χρονόμετρο. Κερδίστε spratsovu skin 11072 tact (tobto skin 1,001175 ms) і γρήγορα αντί να αλλάξετε μετρητή. Є Μια άλλη καθυστέρηση λειτουργίας (μεγάλη ανυπόγραφη int Pause_ms), καθώς η παράμετρος παίρνει τον αριθμό των χιλιοστών του δευτερολέπτου Pause_ms, ρίξε μετρητή και ελέγξτε εάν ο μετρητής εξακολουθεί να είναι Pause_ms, οπότε θα το πουλήσω στο ρομπότ MK. Με αυτή τη σειρά, έχοντας γραπτή καθυστέρηση (1500), θα διαμορφώσουμε ένα catch-up του προγράμματος σε 1,5 δευτερόλεπτο. Tse duzhe χειροκίνητα για το σχηματισμό διαστημάτων ώρας. Με το χρονόμετρο, όλα ήταν έξυπνα. Ale τώρα κερδίσει vikoristovutsya; Είναι ορατός ένας απεγκατεστημένος βρόχος ενώ (1) στο main (). Σε έναν ολόκληρο κύκλο, τα κουμπιά αλλάζουν μέσω ανάλυσης αντί του καταχωρητή PINB. Και τώρα υπάρχει αλλαγή στην κάλυψη για 50 ms; Tse usunennya τ. Αστέρια. «Bryazkit klavish». Στα δεξιά, όταν πατηθεί το κουμπί, ακούγεται ένα χτύπημα μιας επαφής για το πρώτο, ι, θραύσματα μεταλλικών επαφών, το σοκ του ελατηρίου. Οι επαφές, που αναπηδούν, κλειδώνονται και απομακρύνονται καθώς αναπτύσσονται, χωρίς να επηρεάζουν εκείνους που έχουν πετάξει το δάχτυλο μακριά από μια πίεση. Tse για παραγωγή πριν από την πίεση MK fiksuє kilka. Προσδιορισμός του γραφήματος της διαρροής στις εξόδους PC0 κάθε ώρα. Μπορείτε να το δείτε ως εξής: Το σημείο Α είναι η στιγμή που πατάτε το κουμπί. Το Win μπορεί να χρησιμοποιηθεί για τη διόρθωση MK. Στη συνέχεια, μπορείτε να φυσήξετε λίγο και λίγο (ίσως δεν είναι buty, αλλά ίσως είναι 12 κομμάτια - το όλο θέμα μπορεί να είναι διαφορετικό). Στο σημείο Β, η επαφή έχει ήδη στερεωθεί σωστά. Το Mіzh A και B στη μέση είναι κοντά στα 10 ms. Nareshty, στο σημείο Δ, υπάρχει απελευθέρωση. Γιακ, θα αποτινάξεις κάποια απαράδεκτη εκδήλωση; Είναι πολύ πιο εύκολο να εμφανιστείς. Είναι απαραίτητο να καθοριστεί η στιγμή του πατήματος του κουμπιού (σημείο A), μετά από μια ώρα, για παράδειγμα, 50 ms (σημείο C), για να επανεξεταστεί, εάν το κουμπί πατηθεί προς τα κάτω, λειτουργεί, έτσι ώστε το κουμπί να είναι εμφανίζεται και ελέγξτε τη στιγμή της απελευθέρωσης. Είναι απαραίτητο να κάνετε μια παύση από το Α στο Γ, έτσι, όλο το «μπέρδεμα» έχει εμφανιστεί στη μέση της παύσης. Και τώρα προσπαθήστε να κολλήσετε μια σειρά, πώς να διαμορφώσετε, να προσαρμόσετε, να μεταγλωττίσετε το πρόγραμμα και να το προστατέψετε σε MK. Μπορείτε εύκολα να αναποδογυρίσετε με ένα απλό πάτημα των κουμπιών, αλλά όλο το αλεύρι δεν σοκαρίστηκε με το μαρνίμι. Και τι γίνεται με το robiti, πώς πρέπει να ενεργοποιήσετε, ας πούμε, 40 κουμπιά σε MK; Υπάρχουν 32 visnovki σε ένα νέο. Zdavalosya b, ήδη niyak. Στην πραγματικότητα, αξίζει τον κόπο. Έχουν αναπτύξει έναν αλγόριθμο, ταξινομεί με strobing. Για το σύνολο είναι απαραίτητο να πάρετε ένα κουμπί από το πρόγραμμα προβολής matrix, όπως φαίνεται στο μικρό (ο μικρός παίρνει από το βιβλίο του Morton "MK AVR, ένα εισαγωγικό μάθημα", είναι γραμμένο για το πρόγραμμα AVR σε assemblers ). Κατά την υποβολή ενός αρχείου καταγραφής visnovku PB0. 1 (+ 5V) και σε PB1 και PB2 log. 0, επιτρέπεται η επεξεργασία των κουμπιών 1, 4 και 7. Μπορείτε να μάθετε από αυτά στρίβοντας ένα από τα κουμπιά PB3..PB5. Σε μια τέτοια κατάταξη, υποβολή της τελευταίας εβδομαδιαίας καταγραφής PB0..PB2. 1, μπορείτε να δείτε τον αριθμό των κουμπιών. Zrozumіlo, scho visnovki PB0..PB2 μπορεί να είναι είσοδοι και PB0..PB2 είσοδοι. Αν θέλετε να μάθετε πόσα visno είναι γνωστά για τη σειρά των κουμπιών X, πρέπει να γνωρίζετε μερικά X, τα οποία είναι τα ονόματα των ονομάτων (για τα 40 κουμπιά μας, οι αριθμοί θα είναι 5 και 8). Αυτό σημαίνει ότι έως και ένα MC μπορείτε να συνδέσετε έως και 256 κουμπιά (και από την αποθήκευση αποκωδικοποιητών και ακόμη περισσότερα, αλλά για αποκωδικοποιητές αργότερα). Είναι πιο όμορφο να μεγαλώνεις λιγότερο visnovk_v από τις εισόδους και περισσότερο - από τις εισόδους. Σε όλο το εύρος κάλυψης όλων των σειρών του πίνακα, το δάνειο είναι λιγότερο από μία ώρα. Περισσότερη ισχύς στα κουμπιά. Εκεί μπορείτε να συνδέσετε εύκαμπτα εξαρτήματα, να τα επισκευάσετε από μήτρες LED και να τα τερματίσετε με μικροκυκλώματα μνήμης flash. © Roman Kiselov
Η μάχη με τη βρωμιά δεν είναι πλέον υπάκουη εδώ. Επειδή Η συχνότητα σάρωσης δεν είναι υψηλή, επομένως η σάρωση του golim και το σφιχτά οξειδωμένο κουμπί του μοντέλου TM2 δεν έδωσαν βρωμιά - τελείωσε νωρίτερα, πριν από την έναρξη της σάρωσης. Και ο άξονας εδώ μπορεί να τελειώσει, τότε καθοδηγείται η πομπή όλων των spratsyuvan ως αποτέλεσμα. Ταυτόχρονα, πιέστε τη γραμμή τη στιγμή της ανάγνωσης και βιδώστε τον ψεκασμό μιας εφάπαξ πίεσης. Η τιμή μπορεί να είναι μοναδική καταστρέφοντας τη μεταμόρφωση του πλαισίου της μηχανής. Για παράδειγμα, εάν προσθέσετε μια επανάληψη στον διακόπτη Up, τότε, ας πούμε, δύο ή τρεις επαναλήψεις επιβεβαίωσης, αλλά το κουμπί εξακολουθεί να είναι πατημένο και αν δεν πάει στο Dn.
Shchepravda, στο έργο μου έχω αλλάξει συχνά το obrobok. Επειδή Δεν χρειαζόμουν πολλή πίεση, μετά έβγαλα αμέσως το μήνυμα του εντάλματος "Dovge onslaught" στο δειγματολήπτη AL, αμέσως, παίρνοντας τον αριθμό της επόμενης επίθεσης. Κατέστησε δυνατή την προσαρμογή της ρομποτικής ικανότητας του ρομπότ στη διεπαφή, ασήμαντη για την επίθεση της καταχώρησης στο στοιχείο του μενού, και ο συνδυασμός δύο ακόμη επιθέσεων δεν έπεσε. Σχέδιο
Αρχείο κεφαλίδας
void BUT_Init (void);
void BUT_Debrief (κενό);
ανυπόγραφο char BUT_GetKey (κενό);
Γυρίστηκε στη θέση του buffer του κουμπιού, όταν το buffer διαγραφεί. Νίκη από τον βασικό κύκλο προγραμμάτων.
void BUT_SetKey (μη υπογεγραμμένο κλειδί χαρακτήρων).
Θα γράψω την τιμή στο buffer. Vikoristovu να πατήσει για ένα κουμπί. αρχείο Sіshnій
ανυπόγραφο χαρ comp = 0;
{
ανυπόγραφο χαρκλειδί;
// Μετά την τελευταία εμπειρία του visnovkiv mk
αν(BitIsClear (PIN_BUTTON, ENTER))
κλειδί = KEY_ENTER;
αλλιώς αν(BitIsClear (PIN_BUTTON, CANCEL))
κλειδί = KEY_CANCEL;
αλλιώς αν(BitIsClear (PIN_BUTTON, UP))
κλειδί = KEY_UP;
αλλιώς αν(BitIsClear (PIN_BUTTON, DOWN))
κλειδί = KEY_DOWN;
αλλού{
κλειδί = KEY_NULL;
}
αν(κλειδί) (
// σημειώστε τον αριθμό του buffer
αν(συμπ == ΟΡΙΟ) (
comp = THRESHOLD + 10;
pressedKey = πλήκτρο;
ΕΠΙΣΤΡΟΦΗ
;
}
αλλιώς αν(σύν< (THRESHOLD+5)) comp++;
αλλού comp = 0;
}
...
αν(κλειδί)
{
αν(συμπ> THRESHOLD2)
{
comp = THRESHOLD2 - 40;
pressedKey = πλήκτρο;
ΕΠΙΣΤΡΟΦΗ
;
}
αλλού comp ++;
{
pressedKey = πλήκτρο;
ΕΠΙΣΤΡΟΦΗ;
}
}
αλλού comp = 0;
...
#include "im'ya_file.h"
{
tіlo λειτουργίες
}
PORTD = 0xFF;
DDRB = 0xFF;
PORTB = 0x00;
{
μέχρι τον κύκλο
}
// Σχόλιο






Worm 2007