Διόρθωση ασφάλειας AVR. Tiny AVR (HVSP) Fuse Bit Configuration Recovery

Σχηματικό διάγραμμα μιας οικιακής συσκευής που θα βοηθήσει στην αναβίωση του MK και στην επαναφορά των τιμών των bit FUSE μετά από διαδοχικό προγραμματισμό.

Εδώ και αρκετά χρόνια, οι μικροελεγκτές Atmel AVR απολαμβάνουν τη δημοτικότητα που τους αξίζει στους ραδιοερασιτέχνες. Ένα χαρακτηριστικό αυτών των MK είναι ότι μπορείτε να γράψετε "υλικολογισμικό" σε αυτά τόσο σε παράλληλη όσο και σε σειριακή λειτουργία.

Στην πρακτική του ραδιοερασιτέχνη, οι προγραμματιστές σειρών (SPI - Serial Peripheral Interface) χρησιμοποιούνται ευρέως, έχοντας μια σειρά από πλεονεκτήματα:

  • Τα κυκλώματά τους είναι συνήθως πιο απλά από αυτά των παράλληλων προγραμματιστών (σε λίγο, μπορείτε να τα βγάλετε πέρα ​​με πέντε αγωγούς και δύο αντιστάσεις).
  • Υπάρχουν πολλές επιλογές τόσο για τους ίδιους τους προγραμματιστές όσο και για προγράμματα ελέγχου για διάφορα λειτουργικά συστήματα.
  • Για να συνδέσετε τον προγραμματιστή, μπορείτε να επιλέξετε σχεδόν οποιαδήποτε θύρα στον υπολογιστή σας - υπάρχουν σχέδια τόσο για LPT όσο και για COM και για προγραμματιστές USB.

Επιπλέον, ένας τέτοιος προγραμματιστής σας επιτρέπει να "φλασάρετε" το MK χωρίς να το ξεκολλήσετε από τη συσκευή (ISP - In System Programmable).

Ωστόσο, η λειτουργία προγραμματισμού SPI είναι, τελικά, απογυμνωμένη. και ορισμένες δυνατότητες πλήρους παράλληλου προγραμματισμού δεν είναι διαθέσιμες σε αυτό.

Το πιο συνηθισμένο πρόβλημα με τον διαδοχικό προγραμματισμό είναι η αδυναμία εκτέλεσης οποιωνδήποτε ενεργειών με το MK εάν ορισμένα κελιά ασφαλειών αυτού του MK έχουν αλλάξει από τις προεπιλεγμένες τιμές - σε αυτήν την περίπτωση, το τσιπ "δηλώνει απεργία" και δεν επικοινωνεί με ο υπολογιστής: δεν γίνεται πλέον ούτε ανάγνωση ούτε «φλας» με σειριακό προγραμματιστή.

Και φαίνεται να είναι εκτός λειτουργίας, ενώ το πρόγραμμα PonyProg, για παράδειγμα, δίνει το ακόλουθο μήνυμα λάθους: "Η συσκευή λείπει ή άγνωστη συσκευή (-24), αν και αυτό το MK μπορεί να λειτουργεί κανονικά στο τελικό κύκλωμα.

Ο λόγος αυτής της "μη επικοινωνιακής ικανότητας" μπορεί να είναι, για παράδειγμα, η ρύθμιση στο μηδέν (και το μηδέν στα bit ασφαλειών για το AVR σημαίνει ότι αυτό το bit είναι προγραμματισμένο) του bit RSTDISBL - που οδηγεί στην απενεργοποίηση της εξωτερικής εισόδου επαναφοράς και μετατρέποντάς το σε κανονική γραμμή I/O. και χωρίς εξωτερική επαναφορά, το MK δεν θα μπορεί να εισέλθει στη λειτουργία προγραμματισμού SPI και δεν θα είναι προσβάσιμο στον υπολογιστή.

Ένας άλλος λόγος για τον οποίο το MCU γίνεται «αόρατο» στον προγραμματιστή SPI είναι η έλλειψη χρονισμού: τα μπιτ ασφαλειών που ελέγχουν τη γεννήτρια ρολογιού (CKSEL0-3) μπορούν να ρυθμιστούν με τέτοιο τρόπο ώστε το MCU να απενεργοποιεί τα εσωτερικά κυκλώματα ρολογιού και να απαιτεί εξωτερικό ρολόι - πηγή παλμών ρολογιού. και χωρίς χρονομέτρηση, ο προγραμματισμός SPl είναι αδύνατος.

Επιπλέον, τα λανθασμένα "καλωδιωμένα" ασφαλτικά byte μπορεί να είναι αποτέλεσμα όχι μόνο απροσεξίας ή άγνοιας - οι αστοχίες υλικού κατά τη διάρκεια του "αναβοσβήνει" είναι επίσης πολύ πιθανές, ειδικά εάν είναι "ραμμένες" μέσω μιας από τις παραλλαγές στο θέμα "πέντε καλώδια" " - επομένως, από "έπεσε στον οποίο "ο Μ.Κ., ξαπλωμένος σε ένα ράφι και περιμένοντας θαυματουργή θεραπεία, κανείς δεν είναι ασφαλισμένος (και αν πιστεύετε στο Διαδίκτυο, τότε σχεδόν κάθε δεύτερος θαυμαστής AVR το έχει περάσει - και όχι απαραίτητα από αρχάριους ...).

Εάν προέκυψε μια τέτοια ενόχληση και το MK σταμάτησε να επικοινωνεί με τον υπολογιστή, τότε δεν θα είναι πλέον δυνατό να διορθωθούν εσφαλμένα ρυθμισμένα byte ασφαλειών χρησιμοποιώντας έναν σειριακό προγραμματιστή.

Ωστόσο, δεν είναι καθόλου απαραίτητο να φτιάξετε ή να αγοράσετε έναν νέο παράλληλο προγραμματιστή (ή, επιπλέον, ένα κιτ αποσφαλμάτωσης) απλώς για να "θεραπεύσετε" μερικά "comatose" MK, ειδικά εάν ο παλιός προγραμματιστής SPI είναι αρκετά άνετος - είναι πιο βολικό για αυτήν τη χρήση μιας απλής συσκευής, το διάγραμμα της οποίας φαίνεται στο Σχ. 1.

διάγραμμα κυκλώματος

Η συσκευή έχει σχεδιαστεί για να "θεραπεύει" το MK ATtiny2313, αλλά μπορεί να ανακατασκευαστεί για οποιοδήποτε άλλο μοντέλο AVR - τόσο Tiny όσο και Mega - για το οποίο έχει επισυναφθεί μια καλά σχολιασμένη "πηγή" του υλικολογισμικού, η οποία καθιστά δυνατή την επανεγγραφή του σε σχέση στο MK που αυτή τη στιγμή χρειάζεσαι ασθενοφόρο.

Η ουσία της λειτουργίας μιας τέτοιας συσκευής είναι να εισάγει τον "ασθενή" στη λειτουργία παράλληλου προγραμματισμού και να μιμηθεί στις γραμμές του εκείνα τα σήματα του "πραγματικού" προγραμματιστή που είναι υπεύθυνα για την αλλαγή της κατάστασης των κυψελών ασφάλειας. και στη συνέχεια γράψτε τις προεπιλεγμένες τιμές κυψελών ασφάλειας σε αυτό το MK.

Αυτή η συσκευή ορίζει τις εργοστασιακές τιμές για όλα τα byte ασφαλειών: υψηλή, χαμηλή και πρόσθετη. και επιπλέον διαγράφει και τη μνήμη προγραμμάτων και δεδομένων από τον «ασθενή» – με αποτέλεσμα να αποκτά την κατάσταση «καθαρού» μικροκυκλώματος.

Ρύζι. 1. Σχηματικό διάγραμμα συσκευής επεξεργασίας bits FUSE σε μικροελεγκτή AVR.

Παρόμοιες συσκευές έχουν ήδη περιγραφεί στη βιβλιογραφία του ραδιοερασιτέχνη και στο Διαδίκτυο (με τα ονόματα Fuse Doctor, AVR Doctor, AVR Reanimator, AVR Aibolit κ.λπ.), αλλά αυτή έχει πολλά χαρακτηριστικά που κάνουν την εργασία μαζί του λίγο πιο ευχάριστη.

Δηλαδή, οι γραμμές PB0-PB7 - στις γραμμές PB0-PB7, η γραμμή PD6 - στη γραμμή PD6 κ.λπ. Πράγμα που, στην περίπτωση της συναρμολόγησης του κυκλώματος με έντυπο τρόπο, περιέπλεξε πολύ την εγκατάσταση - απαιτούνταν πολλοί βραχυκυκλωτήρες ή καλωδιώσεις διπλής όψης (ωστόσο, ορισμένοι συγγραφείς πρότειναν απλώς την εγκατάσταση μικροκυκλωμάτων το ένα πάνω στο άλλο, λυγίζοντας μη συνδεδεμένα καλώδια σε οι πλαϊνές αντιστάσεις και οι αγωγοί συγκόλλησης πάνω τους, αλλά αμφισβητείται η επαφή αξιοπιστίας με έναν τέτοιο "μικροελεγκτή kama sutra" και όλοι γνωρίζουμε πολύ καλά σε τι οδηγεί η κάμψη-κάμψη των ακίδων μικροκυκλώματος ...

Εδώ, τα μικροκυκλώματα βρίσκονται, σαν να λέγαμε, «πλάι-πλάι», «γρύλος», κάτι που κάνει τη διάταξη της πλακέτας τυπωμένου κυκλώματος πολύ απλή. Στην έκδοση του συγγραφέα, η οποία φαίνεται στο Σχ. 2, επαναλαμβάνει σε μεγάλο βαθμό το διάγραμμα κυκλώματος και περιέχει μόνο τρεις μικρούς βραχυκυκλωτήρες. Μέγεθος σανίδας - 60x60 mm.

Δεύτερον, ορισμένες συσκευές απαιτούσαν δύο τάσεις: 5 V για την τροφοδοσία του MK και 12 V στη γραμμή επαναφοράς "ασθενούς" για να μπουν στη λειτουργία προγραμματισμού.

Αυτό το κύκλωμα απαιτεί μόνο μία τάση, η οποία μπορεί να έχει μια εξάπλωση σε αρκετά μεγάλο εύρος - το κυριότερο είναι να είναι τουλάχιστον 12 V. Τρίτον, οι περισσότερες από τις συσκευές που περιγράφονται δεν επιτρέπουν την "καυτή" αντικατάσταση των "ασθενών" σε περίπτωση που πρέπει να "θεραπεύσετε" πολλά MK στη σειρά - μετά από κάθε "αναβοσβήνει" πρέπει να απενεργοποιήσετε την τροφοδοσία, να αντικαταστήσετε το "άρρωστο", στη συνέχεια να ενεργοποιήσετε ξανά το ρεύμα κ.λπ.

Αυτή η συσκευή ρυθμίζει όλες τις εξόδους σε log.O μετά από κάθε "αναβοσβήνει", το οποίο σας επιτρέπει να "επεξεργάζεστε" τα μικροκυκλώματα με έναν "μεταφορέα" - συνδέστε το ρεύμα, εγκαταστήστε τον "ασθενή", πατήστε το κουμπί "έναρξη", κοιτάξτε το αποτέλεσμα της "θεραπείας" από το HL1, αφαιρέθηκε, εισήγαγε νέο "ασθενή", έκανε κλικ, κοίταξε το HL1, αφαιρέθηκε, εισήχθη κ.λπ. Και όλα αυτά χωρίς να κλείσει το ρεύμα (άνοιξε τουλάχιστον τη «σκηνή» στην αγορά του ραδιοφώνου!).

Και, τέταρτον, συχνά σε τέτοιες συσκευές δεν υπάρχει επαλήθευση των καταγεγραμμένων ασφαλειών και ένδειξη του αποτελέσματος της "θεραπείας" (όπως "επιτυχής / ανεπιτυχής"). Σε αυτόν τον σχεδιασμό, παρέχεται επαλήθευση και η λυχνία LED HL1 χρησιμοποιείται για να υποδείξει τα αποτελέσματά της, τα οποία μπορεί να έχουν τρεις καταστάσεις:

  1. Στερεά ενεργοποίηση - ο προγραμματισμός του "ασθενούς" ήταν επιτυχής, τα byte ασφαλειών ανάγνωσης αντιστοιχούν σε αυτά που γράφτηκαν. η συσκευή περιμένει τον επόμενο "ασθενή"?
  2. Αναβοσβήνει σε συχνότητα 2 GHz - ένα σφάλμα στον προγραμματισμό του "ασθενούς": οι αναγνωσμένες ασφαλειές-byte δεν ταιριάζουν με αυτές που γράφτηκαν. ο "ασθενής" δεν εισήλθε στη λειτουργία προγραμματισμού, δεν έχει εγκατασταθεί ή είναι ελαττωματικό (το πρόγραμμα παρέχει έλεγχο για την παρουσία "ασθενούς" - ένα λειτουργικό AVR θέτει το log.1 στη γραμμή BSY / RDY (ακίδα 3 για ATtiny2313 ) κατά την είσοδο στη λειτουργία παράλληλου προγραμματισμού). η συσκευή περιμένει τον επόμενο "ασθενή"?
  3. Off - η διαδικασία προγραμματισμού και επαλήθευσης βρίσκεται σε εξέλιξη. Ο προγραμματισμός ενός υγιούς "ασθενούς" διαρκεί λιγότερο από ένα δευτερόλεπτο και αυτή η κατάσταση LED δεν πρέπει να είναι αισθητή υπό κανονικές συνθήκες. Εάν η λυχνία LED είναι σε κατάσταση απενεργοποίησης για σχετικά μεγάλο χρονικό διάστημα, τότε πιθανότατα η διαδικασία "αναβοσβήνει" είναι κυκλική λόγω του γεγονότος ότι ο ελαττωματικός "ασθενής" έχει κολλήσει στη λειτουργία εγγραφής και δεν ρυθμίζει το σήμα ετοιμότητας BSY / RDY αναμένεται από τον «γιατρό».

Όπως ήδη αναφέρθηκε, η συσκευή είναι αρκετά ευέλικτη και είναι εφαρμόσιμη για την «θεραπεία» σχεδόν οποιουδήποτε MK της σειράς AVR.

Ταυτόχρονα, δεν είναι καθόλου απαραίτητο να κατασκευαστεί ένα ξεχωριστό αντίγραφο της συσκευής για διάφορους μικροελεγκτές που διαφέρουν ως προς τον αριθμό και τη διάταξη των ακίδων - απλώς προσθέστε, εάν χρειάζεται, προσαρμογείς για το pinout του επόμενου "άρρωστου" και ξαναγράψτε το πρόγραμμα ελέγχου ανάλογα.

Ο προσαρμογέας είναι μια υποδοχή DIP-20, η οποία εισάγεται με τα "πόδια" της στον πίνακα "ασθενής" στην πλακέτα της συσκευής.

Από πάνω, σε μια τέτοια υποδοχή (στις επαφές για τις εξόδους του μικροκυκλώματος), οι αγωγοί συγκολλούνται (ή απλά εισάγονται) σε εκείνα τα σημεία όπου οι γραμμές τροφοδοσίας και ελέγχου ταιριάζουν στον "ασθενή" στην πλακέτα.

Τα άλλα άκρα αυτών των αγωγών συγκολλούνται στα συμπεράσματα της δεύτερης υποδοχής - κάτω από το MK που χρειάζεται "επεξεργασία" - σύμφωνα με τη θέση των γραμμών ελέγχου του, που μπορεί να καθοριστεί στο ιδιόκτητο φύλλο δεδομένων.

Αποδεικνύεται ένα είδος βύσματος, το βύσμα (μόνο μια υποδοχή DIP-20) του οποίου εισάγεται στην υποδοχή DIP-20 για τον "ασθενή" στην πλακέτα και ένας νέος "ασθενής" εισάγεται στην υποδοχή του (άλλη πρίζα).

Όσο για το πρόγραμμα, μπορεί να χρειάζεται διόρθωση, γιατί. Τα διαφορετικά μοντέλα AVR απαιτούν συχνά διαφορετικά βήματα για να εισέλθουν σε λειτουργία προγραμματισμού και να αλλάξουν τα byte ασφαλειών.

Επιπλέον, τα ίδια τα byte ασφαλειών (συμπεριλαμβανομένου του αριθμού τους) διαφέρουν για διαφορετικά μοντέλα MK - πιο λεπτομερείς πληροφορίες μπορείτε να βρείτε στο [L.1,2,3] ή στην τεκμηρίωση της εταιρείας. Και για να γίνει πιο εύκολη η κατανόηση του αρχικού προγράμματος, του παρέθεσα αναλυτικά σχόλια.

Ως "γιατρός" σε αυτή τη συσκευή, όπως και ο "ασθενής", χρησιμοποιείται ο μικροελεγκτής ATtiny2313 - είναι επίσης εγκατεστημένος στην πρίζα έτσι ώστε μετά την αποκατάσταση όλων των "ασθενών" μικροκυκλωμάτων, να μπορεί να αφαιρεθεί και να χρησιμοποιηθεί σε άλλα έργα .

Για να λειτουργήσει σε αυτή τη συσκευή, όλα τα bit ασφαλειών του "γιατρού" πρέπει να είναι αυτά που έχουν ρυθμιστεί σε αυτήν από προεπιλογή (από το εργοστάσιο). το μόνο πράγμα - για πιο σταθερή λειτουργία (ειδικά με ασταθή τάση τροφοδοσίας), στον "γιατρό" μπορείτε να ενεργοποιήσετε το σύστημα BOD ρυθμίζοντάς το στα 2,7 V (ρυθμίζοντας το μπιτ ασφάλειας BODLEVEL1 στο μηδέν). Δεν απαιτείται εξωτερικός "γιατρός" χαλαζία, λειτουργεί από την ενσωματωμένη γεννήτρια RC.

Λεπτομέριες

Το τσιπ DA1 (78L05) μπορεί να αντικατασταθεί με το εγχώριο αναλογικό KR1157EN502 ή το πιο ισχυρό 7805 - αλλά είναι πολύ πιο ακριβό και η ισχύς του δεν απαιτείται για αυτό το κύκλωμα.

Το τρανζίστορ VT1 εδώ λειτουργεί σε λειτουργία κλειδιού και μπορεί να είναι οποιαδήποτε δομή NPN - για παράδειγμα, KT315, 2SC1815, 2SC9014, 2SC1749S κ.λπ. αλλά για ορισμένα μοντέλα, θα πρέπει να αλλάξετε τη διάταξη του πίνακα.

Ρύζι. 2. Η πλακέτα κυκλώματος της συσκευής ανάκτησης ασφαλειών.

Η δίοδος ασφαλείας VD1 μπορεί να είναι οτιδήποτε, για ρεύμα τουλάχιστον 150 mA, το καθήκον της είναι να προστατεύει το κύκλωμα από τυχαία αναστροφή ισχύος.

Όλες οι αντιστάσεις στο κύκλωμα είναι μικρού μεγέθους, 0,125 W - η τιμή τους μπορεί να διαφέρει από αυτή που υποδεικνύεται σε ένα αρκετά μεγάλο εύρος. LED HL1 - οποιαδήποτε ένδειξη.

Τελικά

Και εν κατακλείδι, θα ήθελα να σας πω για ένα ενδιαφέρον χαρακτηριστικό της συμπεριφοράς ορισμένων περιπτώσεων του ATtiny2313 MK κατά τον προγραμματισμό SPI χρησιμοποιώντας το πρόγραμμα PonyProg2000 (άλλα μοντέλα MK μπορεί επίσης να συμπεριφέρονται, μεταξύ άλλων με άλλα προγράμματα - αλλά ο συγγραφέας δεν έχει αλλά είχα πειραματιστεί με οτιδήποτε άλλο εκτός από το πακέτο ATtiny2313-PonyProg2000).

Η ουσία του προβλήματος είναι η εξής: μερικές φορές, όταν προσπαθείτε να διαβάσετε ή να γράψετε MK, το πρόγραμμα PonyProg δίνει ένα μήνυμα σφάλματος "Η συσκευή λείπει ή η άγνωστη συσκευή (-24)" - και αυτό παρά το γεγονός ότι δεν υπάρχουν ασφαλειάκια σε αυτό Τα MK άλλαξαν - επιπλέον, το μικροκύκλωμα μπορεί να είναι καινούργιο, να μην έχει "ραμμένο" ακόμα! Η "θεραπεία" με τη χρήση της συσκευής που περιγράφεται παραπάνω δεν δίνει κανένα αποτέλεσμα - όταν προσπαθείτε να διαβάσετε / γράψετε ξανά, εμφανίζεται ξανά το μήνυμα σφάλματος. Το MK φαίνεται να είναι εκτός λειτουργίας, και χωρίς προφανή λόγο ...

Αλλά αν πατήσετε το κουμπί "Ignore" σε αυτό το μήνυμα, αναγκάζοντας έτσι το "Pony" να αγνοήσει την έλλειψη απάντησης από το MK και να προσπαθήσει να διαβάσει / γράψει το μικροκύκλωμα, τότε αυτό το MK θα διαβαστεί ή θα "αναβοσβήσει" κανονικά.

Μετά από ένα τέτοιο αναγκαστικό «αναβοσβήνει», τα περισσότερα από τα MK «που προσποιούνται ότι είναι νεκρά» θα λειτουργούν κανονικά, επιπλέον, χωρίς αποτυχίες (εκτός από το μήνυμα που περιγράφεται παραπάνω όταν προσπαθείτε να δημιουργήσετε μια σύνδεση με υπολογιστή)!

Προφανώς, το θέμα εδώ είναι ότι ορισμένες περιπτώσεις του MK δεν παράγουν τη σωστή επιβεβαίωση ως απάντηση στο αίτημα του προγραμματιστή, με αποτέλεσμα η PonyProg να συμπεράνει ότι παρουσιάζουν δυσλειτουργία. Ταυτόχρονα, αυτά τα MK αντιλαμβάνονται κανονικά τις υπόλοιπες εντολές του προγραμματιστή και θα εκτελούν σωστά.

Είναι πολύ πιθανό ότι αυτό είναι ένα χαρακτηριστικό (ή μάλλον, μια "ασθένεια") του AVR MK (δεν είναι μόνο ότι το PonyProg περιλάμβανε ένα τέτοιο κουμπί - "Ignore") - ο συγγραφέας αυτού του άρθρου είχε τρεις στους δέκα MK συμπεριφορές με παρόμοιο τρόπο, και πιο συχνά ξεκίνησε αυτό όχι αμέσως, αλλά μετά από μερικά "φλας-γουόκ".

Ή ίσως φταίει η στατική τάση στα ανθρώπινα χέρια... Αλλά, όπως και να έχει, σε κρίσιμες κατασκευές (όπως συσκευές ανάφλεξης, αυτόματη θέρμανση, πότισμα, συναγερμοί κ.λπ.) τέτοια «υπονομευμένη εμπιστοσύνη» MK, ωστόσο, είναι δεν συνιστάται η χρήση του.

Αλλά σε παιχνίδια, γιρλάντες χριστουγεννιάτικων δέντρων, κουδούνια και άλλες βοηθητικές συσκευές, θα λειτουργούν καλά για πολλά χρόνια - και, επιπλέον, χωρίς προβλήματα.

Υλικολογισμικό για τον μικροελεγκτή - Λήψη (9 KB).

Matin A. RK-08-16.

Βιβλιογραφία:

  1. Evstifeev A.V. - Μικροελεγκτές AVR της οικογένειας Tiny. ΟΔΗΓΟΣ ΧΡΗΣΤΗ. 2007. Cmp.386 - Παράλληλος προγραμματισμός;
  2. Evstifeev A.V. - Μικροελεγκτές AVR της οικογένειας Mega. ΟΔΗΓΟΣ ΧΡΗΣΤΗ. 2007. Σ.526 - Παράλληλος προγραμματισμός;
  3. Evstifeev A.V. - Μικροελεγκτές AVR των οικογενειών Tiny και Mega από την ATMEL. 2008. Σ.498 - Παράλληλος προγραμματισμός.

Ένα άλλο απλό παράδειγμα δημιουργίας πλακέτας εντοπισμού σφαλμάτων, αλλά αυτή τη φορά για συσκευές που χρησιμοποιούν τον μικροελεγκτή ATTiny2313. Η θέση των σκελών για προγραμματισμό στο ATTiny2313 είναι πανομοιότυπη με την ATTiny13. Αντίστοιχα, οι σανίδες θα βγουν παρόμοια. Η διαφορά από το θα είναι η παρουσία ενός εξωτερικού κύριου ταλαντωτή (χαλαζίας). Από προεπιλογή, το ATTiny2313 προέρχεται από το εργοστάσιο με ενεργοποιημένη την εσωτερική γεννήτρια, επομένως εάν ο μικροελεγκτής δεν έχει προγραμματιστεί να λειτουργεί από εξωτερική γεννήτρια, δεν μπορεί να εγκατασταθεί. Αντιγράφουμε το βύσμα τροφοδοσίας σε περίπτωση σύνδεσης προγραμματιστή που τροφοδοτείται από το κύκλωμα στην πλακέτα (παρέχουμε ρεύμα στον έναν σύνδεσμο και τροφοδοτούμε τον προγραμματιστή από τον άλλο).


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


Συναρμολογούμε την πλακέτα εντοπισμού σφαλμάτων σύμφωνα με το σχήμα:

1 συγκόλληση στην υποδοχή για το μικροκύκλωμα και τις ακίδες (όπως στο σχήμα).
2 όπως φαίνεται στο σχήμα (κόκκινη γραμμή) κάνουμε ένα jumper στην μπροστινή πλευρά της σανίδας. Κάνουμε άλλο ένα jumper από την άλλη πλευρά.
3 jumpers - "snot" συνδέουν τις ακίδες και τα πόδια του πίνακα (τα σημεία συγκόλλησης είναι κυκλωμένα με πράσινο χρώμα).

Ο πίνακας εντοπισμού σφαλμάτων μας είναι έτοιμος!

Συμπέρασμα.

- Βάζουμε ετικέτες στα GND, SCK για τη σωστή σύνδεση ρεύματος και προγραμματιστή.
- Οτιδήποτε άλλο στην πλακέτα εντοπισμού σφαλμάτων θα συγκολληθεί σύμφωνα με το επιλεγμένο σχήμα συσκευής. (προαιρετικά, μπορείτε να προσθέσετε καρφίτσες σε κάθε σκέλος του μικροελεγκτή για να συνδέσετε άλλες πλακέτες και περιφερειακά).
- Για πιο αξιόπιστη λειτουργία σε συνθήκες αυξημένου θορύβου, είναι πολύ επιθυμητό να συμπληρώσετε το κύκλωμα με ένα σκέλος επαναφοράς έλξης, μια αντίσταση (η εσωτερική αντίσταση έλξης έχει αντίσταση περίπου 10 kOhm - αυτό δεν αρκεί) και ένας κεραμικός πυκνωτής φιλτραρίσματος στα πόδια ισχύος (εντός 0,1 uF).
-Τώρα εισάγουμε τον μικροελεγκτή στην υποδοχή και αναβοσβήνουμε το ATTiny2313 με το απαιτούμενο υλικολογισμικό.

(Επισκέφθηκε 16 038 φορές, 1 επισκέψεις σήμερα)

Ενότητα: Ετικέτες: ,

Πλοήγηση ανάρτησης

Μια απλή πλακέτα εντοπισμού σφαλμάτων για συσκευές AVR ATTiny2313 με χαλαζία.: 70 σχόλια


  1. Συντάκτης του GetChiper Post

    Ασαφής άγγιξε;
    Έχετε τσεκάρει άλλο tini2313;

  2. Toxa12345

    Με βασάνιζαν για πολύ καιρό για το: «ΠΟΙΟ zhe mk να διαλέξω» Σταμάτησα στο tinka 2313 επειδή είναι φθηνότερο από το atmega και όχι τόσο εξαντλημένο όσο το tinka 13, επίσης λόγω της παρουσίας γραμμών RxD και TxD, που επιτρέπει την επικοινωνία μέσω YuART
    Ζ.Υ. δεν είναι πρόβλημα να αγοράσετε MK από εμάς στο Kursk. tinka 2313-κοστίζει 130 ρούβλια. και atmega8 ήδη 200 ρούβλια για tinka 13 δεν αναγνώρισε


  3. Συντάκτης του GetChiper Post

    Ή μήπως ATmega88 ή ATmega48;

  4. Andrey 1979

    Καλη ωρα.
    Συναρμολόγησα την πλακέτα σύμφωνα με το προτεινόμενο σχέδιο, τη συνέδεσα με USBasp, συνέδεσα το 2313, εφάρμοσα 5 V. Το Extreme Burner δίνει Incorrect Chip Found. Κατά συνέπεια, τίποτα δεν μπορεί να αναβοσβήσει ή να μετρηθεί. Κατά την αντικατάσταση tinki το ίδιο πράγμα.
    Έχει βιώσει κανείς κάτι παρόμοιο;
    Ίσως αυτό οφείλεται σε παρεμβολές;

    "- Για πιο αξιόπιστη λειτουργία σε συνθήκες αυξημένου θορύβου, είναι πολύ επιθυμητό να συμπληρώσετε το κύκλωμα με ένα σκέλος επαναφοράς έλξης, μια αντίσταση (η εσωτερική αντίσταση έλξης έχει αντίσταση περίπου 10 kOhm - αυτό δεν αρκεί) και έναν κεραμικό πυκνωτή φιλτραρίσματος στα πόδια ισχύος (εντός 0,1 uF)

    και επίσης, ειδικά για τα ανδρείκελα, είναι δυνατόν να αντικατοπτρίζονται αυτές οι ενέργειες με τη μορφή διαγράμματος.


  5. Συντάκτης του GetChiper Post

    Τι να εμφανιστεί εκεί.
    Ο πυκνωτής τοποθετείται παράλληλα με την παροχή (δηλαδή μεταξύ των σκελών 10 και 20)
    Μια αντίσταση 10 kΩ τοποθετείται μεταξύ Vcc και επαναφοράς (δηλαδή μεταξύ των ακροδεκτών 1 και 20)

  6. Andrey 1979

    Ευχαριστώ για την απάντηση. Έβαλα 4,7 KΩ και 220pF. Έγινε λίγο πιο διασκεδαστικό. Το extreme burner γράφει το ίδιο όπως ήταν. Αλλά το khazama αναφέρει για άλλη μια φορά Η υπογραφή τσιπ είναι 0x1e000. ΑΣΦΑΛΙΣΗ Η αναμενόμενη υπογραφή για το ATTiny 2313 είναι 1e 91 0a. Σε άλλες περιπτώσεις, γράφει επίσης ένα σφάλμα σύνδεσης.

    Χρησιμοποιώ ένα breadboard χωρίς συγκόλληση, επομένως η ακατάστατη συγκόλληση δεν πρέπει να είναι πρόβλημα. Πού αλλού μπορείτε να κοιτάξετε;


  7. Συντάκτης του GetChiper Post

    Τα 220pF δεν είναι αρκετά. Είναι απαραίτητο να βάλετε 0,1 uF - κεραμικό (μη πολικό) και 10-100 uF ηλεκτρολυτικό (πολικό) παράλληλα.

  8. Dederik

    καλησπέρα))) Δεν βρήκα χαλαζία 20.000 αντί γι' αυτό, μπόρεσα να βρω μόνο χαλαζία 4.000. αν βάλω χαλαζία 4.000 θα έχω αργό micro-r; και οι ίδιοι πυκνωτές πρέπει να αλλάξουν για χαλαζία 4.000; Μένω στη Σαμαρκάνδη με ανταλλακτικά ραδιοφώνου, έχουμε πρόβλημα (((Δεν ξέρω καν που να βρω πρίζα για micro-r (((μπορώ να φτιάξω μόνος μου πρίζα για micro-r;

  9. Dederik

    απαντήστε τουλάχιστον σε κάποιον)))


  10. Συντάκτης του GetChiper Post

    Ηρέμησε - ήταν το Σαββατοκύριακο 🙂

    Μπορείτε να βάλετε οποιοδήποτε χαλαζία αν σκοπεύετε να μελετήσετε και να φτιάξετε τις δικές σας συσκευές σε αυτό το κασκόλ (δεν χρειάζεται να αλλάξετε πυκνωτές για χαλαζία). Ή δεν μπορείτε να βάλετε καθόλου χαλαζία - χρησιμοποιήστε την ενσωματωμένη γεννήτρια RC.

    Όσο για την κατασκευή μιας πρίζας - ίσως απλώς να κολλήσετε το MK μέχρι θανάτου σε ένα breadboard;

  11. Dederik

    ευχαριστω για την βοηθεια σου))) εχω αλλη μια ερωτηση για σενα, αλλα δεν ξερω που να ρωτησω off-topic (((σημερα μου εφεραν ενα ηλεκτρονικο μετρητή για την επισκευή Holley DDS28. για τις ενδείξεις του μετρητή. ολόκληρο η εγγραφή είναι αποθηκευμένη στο micro-re μπορείς να μου πεις πως να φτιάξω προγραμματιστή για να μπορείς να διαβάζεις και να επεξεργάζεσαι τα δεδομένα του micro-ra ???και πως να σου γράφω απευθείας???


  12. Συντάκτης του GetChiper Post

    Η FM24C02 είναι σειριακή μη πτητική μνήμη (EEPROM)
    Νομίζω ότι υπάρχουν πολλά κορδόνια και προγράμματα για αυτήν την επιχείρηση (αν ρωτήσετε τη μηχανή αναζήτησης) - εδώ είναι το πρώτο που συνάντησε http://www.msplata.ru/teleprog.html

  13. Dederik

    Ευχαριστώ για τη βοήθεια:-)

  14. κοσμογονος

Εικ.1

T = T0+T1. Περίοδος παλμών

T = 1/F

S=T/T1

κύκλος καθηκόντων

Συντελεστής πλήρωσης D=1/Sή έτσι D=T1/T*100%

Οι ψηφιακές συσκευές, για παράδειγμα, ένας μικροελεγκτής μπορούν να λειτουργήσουν μόνο με δύο επίπεδα σήματος, δηλ. μηδέν και ένα ή απενεργοποίηση και ενεργοποίηση. Έτσι, μπορείτε εύκολα να το χρησιμοποιήσετε για να ελέγξετε την κατάσταση του φορτίου, όπως να ανάψετε ή να απενεργοποιήσετε το LED. Μπορείτε επίσης να το χρησιμοποιήσετε για τον έλεγχο οποιασδήποτε ηλεκτρικής συσκευής χρησιμοποιώντας τα κατάλληλα προγράμματα οδήγησης (τρανζίστορ, triac, ρελέ κ.λπ.) Αλλά μερικές φορές χρειάζεστε περισσότερα από το να "ενεργοποιήσετε" και να "σβήσετε" τη συσκευή. Έτσι, εάν θέλετε να ελέγξετε τη φωτεινότητα ενός LED (ή μιας λάμπας) ή την ταχύτητα ενός κινητήρα DC, τότε τα ψηφιακά σήματα απλά δεν μπορούν να το κάνουν. Αυτή η κατάσταση είναι πολύ συνηθισμένη στην ψηφιακή τεχνολογία και ονομάζεται Διαμόρφωση πλάτους παλμού (PWM).

Σχεδόν όλοι οι σύγχρονοι μικροελεγκτές διαθέτουν εξειδικευμένο υλικό για τη δημιουργία σήματος PWM. Σε αυτό το σεμινάριο θα μάθουμε τα βασικά της τεχνικής PWM και στη συνέχεια θα δούμε πώς να υλοποιήσουμε το PWM χρησιμοποιώντας μικροελεγκτές AVR.

Οι ψηφιακές συσκευές όπως ένας μικροελεγκτής μπορούν να δημιουργήσουν μόνο δύο επίπεδα στις γραμμές εξόδου, high=5V και low=0V. Τι γίνεται όμως αν θέλουμε να πάρουμε 2,5 ή 3,1 ή οποιαδήποτε τάση μεταξύ 0-5V; Για να γίνει αυτό, αντί να δημιουργήσουμε μια σταθερή τάση συνεχούς ρεύματος στην έξοδο, θα δημιουργήσουμε ένα τετράγωνο κύμα που έχει επίπεδα υψηλά = 5V και χαμηλά = 0V (βλ. Εικόνα 1).

Εικ.1

Το σχήμα δείχνει ότι το σήμα για κάποιο χρονικό διάστημα παραμένει εναλλάξ σε χαμηλό και υψηλό επίπεδο. T0 - χαμηλό επίπεδο, T1 - υψηλό επίπεδο. Η περίοδος σήματος θα είναι T = T0+T1. Περίοδος παλμών- αυτό είναι το χρονικό διάστημα μεταξύ δύο χαρακτηριστικών σημείων δύο γειτονικών παλμών. Συνήθως, η περίοδος μετριέται μεταξύ δύο μετώπων ή δύο πτώσεων παρακείμενων παλμών και συμβολίζεται με ένα κεφαλαίο λατινικό γράμμα T.

Η περίοδος επανάληψης παλμών σχετίζεται άμεσα με τη συχνότητα της ακολουθίας παλμών και μπορεί να υπολογιστεί με τον τύπο: T = 1/F

Εάν το μήκος παλμού T1 είναι ακριβώς ίσο με το μισό της περιόδου T, τότε ένα τέτοιο σήμα ονομάζεται συχνά "τετράγωνο κύμα".

Ο κύκλος λειτουργίας παλμού είναι ο λόγος της περιόδου επανάληψης παλμών προς τη διάρκειά τους και συμβολίζεται με το γράμμα S: S=T/T1

Ο κύκλος λειτουργίας είναι ένα αδιάστατο μέγεθος και δεν έχει μονάδες μέτρησης, αλλά μπορεί να εκφραστεί ως ποσοστό. Ο όρος απαντάται συχνά σε αγγλικά κείμενα. κύκλος καθηκόντων, αυτός είναι ο λεγόμενος κύκλος λειτουργίας ή κύκλος λειτουργίας PWM. Ο κύκλος λειτουργίας D είναι το αντίστροφο του κύκλου λειτουργίας.

Συντελεστής πλήρωσηςσυνήθως εκφράζεται ως ποσοστό και υπολογίζεται χρησιμοποιώντας τον τύπο: D=1/Sή έτσι D=T1/T*100%

Στο παραπάνω σχήμα (εικ. 1) μπορείτε να δείτε ότι T1 = T0, αυτό είναι ίσο με το μισό της χρονικής περιόδου. Άρα ο κύκλος λειτουργίας PWM είναι 50%. Εάν η συχνότητα τέτοιων παλμών είναι αρκετά υψηλή (ας πούμε, 5000 Hz), τότε παίρνουμε το ήμισυ των 5 V δηλ. 2,5V. Έτσι, εάν η έξοδος του ελεγκτή είναι συνδεδεμένη με τον κινητήρα (χρησιμοποιώντας κατάλληλα προγράμματα οδήγησης) θα λειτουργεί στο 50% της πλήρους ταχύτητάς του. Η τεχνική PWM χρησιμοποιεί αυτό το γεγονός για να δημιουργήσει οποιαδήποτε τάση μεταξύ δύο επιπέδων (π.χ. μεταξύ 0-12V). Το κόλπο είναι ότι όταν αλλάζετε την τιμή του κύκλου λειτουργίας μεταξύ 0-100%, παίρνουμε το ίδιο ποσοστό της τάσης εισόδου στην έξοδο. Παρακάτω είναι μερικά παραδείγματα σήματος PWM με διαφορετικούς κύκλους λειτουργίας.

Εάν βάλετε ένα φίλτρο R / C στην έξοδο, μπορείτε να πάρετε ένα καθαρό επίπεδο σήματος DC και όχι τετράγωνα κύματα. Αλλά αυτό δεν απαιτείται για κινητήρες με μεταγωγέα ή για έλεγχο της φωτεινότητας των LED. Για να το κάνετε αυτό, μπορείτε να εφαρμόσετε ένα σήμα PWM απευθείας στο πρόγραμμα οδήγησης (για παράδειγμα, ένα διπολικό τρανζίστορ, MOSFET, κ.λπ.).

Κάτω από τον τρόπο λειτουργίας 16-bit. Ο χρονοδιακόπτης νοείται ως ο αλγόριθμος μέτρησής του και η συμπεριφορά της εξόδου του διαμορφωτή παλμών που σχετίζεται με αυτόν, η οποία καθορίζεται από το συνδυασμό bit που καθορίζουν τον τρόπο λειτουργίας του χρονοδιακόπτη (WGMn3-0) και τον τρόπο παραγωγής σήματος εξόδου (COMnx1:0 ). Σε αυτήν την περίπτωση, τα bit για τη ρύθμιση της λειτουργίας παραγωγής σήματος εξόδου δεν επηρεάζουν τον αλγόριθμο μέτρησης, καθώς ο αλγόριθμος μέτρησης εξαρτάται μόνο από την κατάσταση των bit ρύθμισης της λειτουργίας χρονοδιακόπτη. Στις λειτουργίες PWM, τα bit COMnx1:0 ενεργοποιούν/απενεργοποιούν την αντιστροφή στην έξοδο PWM που δημιουργείται (δηλαδή επιλέξτε PWM με αντιστροφή ή PWM χωρίς αναστροφή). Για λειτουργίες που δεν είναι PWM, τα bit COMnx1:0 καθορίζουν ποια ενέργεια πρέπει να πραγματοποιηθεί όταν συμβαίνει μια αντιστοίχιση: επαναφορά, ρύθμιση ή αντιστροφή της εξόδου (δείτε επίσης «Εξοδος Conditioner» και «16-bit Timer/Counter Timing Charts»).

Κανονική λειτουργία

Ο απλούστερος τρόπος λειτουργίας είναι ο κανονικός τρόπος λειτουργίας (WGMn3-0 = 0b0000). Σε αυτή τη λειτουργία, ο μετρητής λειτουργεί ως αθροιστικό (αυξητικό), ενώ ο μετρητής δεν επαναρυθμίζεται. Η υπερχείλιση του μετρητή προκύπτει όταν μεταβιβαστεί η μέγιστη τιμή των 16 bit. τιμή (0xFFFF) στο κατώτερο όριο καταμέτρησης (0x0000). Σε κανονική λειτουργία, η σημαία υπερχείλισης χρονοδιακόπτη/μετρητή TOVn θα ρυθμιστεί στον ίδιο κύκλο ρολογιού όταν το TCNTn γίνει μηδέν.

Στην πραγματικότητα, η σημαία υπερχείλισης TOVn είναι το 17ο bit του χρονοδιακόπτη/μετρητή, με τη διαφορά ότι ρυθμίζεται μόνο και δεν διαγράφεται. Ωστόσο, αυτή η ιδιότητα μπορεί να χρησιμοποιηθεί μέσω προγραμματισμού για την αύξηση της ανάλυσης του χρονοδιακόπτη χρησιμοποιώντας μια διακοπή υπερχείλισης χρονοδιακόπτη, με την εμφάνιση της οποίας η σημαία TOVn επαναφέρεται αυτόματα. Δεν υπάρχουν ειδικές καταστάσεις για κανονική λειτουργία, επομένως μια νέα κατάσταση μετρητή μπορεί να γραφτεί ανά πάσα στιγμή.

Σε κανονική λειτουργία, μπορείτε να χρησιμοποιήσετε το μπλοκ λήψης. Ωστόσο, θα πρέπει να παρατηρηθεί ότι το μέγιστο χρονικό διάστημα μεταξύ των εμφανίσεων εξωτερικών συμβάντων δεν υπερβαίνει την περίοδο υπερχείλισης του μετρητή. Εάν δεν πληρούται αυτή η προϋπόθεση, πρέπει να χρησιμοποιηθεί διακοπή υπερχείλισης χρονομετρητή ή προκαταρκτικός κλιμάκωσης.

Το μπλοκ σύγκρισης μπορεί να χρησιμοποιηθεί για τη δημιουργία διακοπών. Δεν συνιστάται η χρήση της εξόδου OCnx για τη δημιουργία σημάτων κατά την κανονική λειτουργία, καθώς Σε αυτήν την περίπτωση, θα δαπανηθεί σημαντικό μέρος του χρόνου του επεξεργαστή.

Λειτουργία επαναφοράς χρονοδιακόπτη αντιστοίχισης (CTC)

Στη λειτουργία CTC (WGM01, WGM00 =0b10), ο καταχωρητής OCR0 χρησιμοποιείται για τη ρύθμιση της ανάλυσης του μετρητή. Εάν έχει ρυθμιστεί η λειτουργία CTC και η τιμή του μετρητή (TCNT0) ταιριάζει με την τιμή του καταχωρητή OCR0, τότε ο μετρητής μηδενίζεται (TCNT0=0). Έτσι, το OCR0 θέτει την κορυφή της μέτρησης του μετρητή και, κατά συνέπεια, την ανάλυσή του. Σε αυτόν τον τρόπο λειτουργίας, παρέχεται ένα ευρύτερο εύρος ρύθμισης συχνότητας των παραγόμενων ορθογώνιων παλμών. Απλοποιεί επίσης τη λειτουργία του εξωτερικού μετρητή συμβάντων.

Στην επαναφορά του χρονοδιακόπτη στη λειτουργία αντιστοίχισης (WGMn3-0 = 0b0100 ή 0b1100), η ανάλυση του χρονοδιακόπτη ρυθμίζεται από τους καταχωρητές OCRnA ή ICRn. Στη λειτουργία CTC, ο μετρητής (TCNTn) επαναφέρεται εάν η τιμή του ταιριάζει με την τιμή του καταχωρητή OCRnA (WGMn3-0 = 0b0100) ή του ICRn (WGMn3-0 = 0b1100). Η τιμή του καταχωρητή OCRnA ή ICRn καθορίζει το ανώτερο όριο καταμέτρησης και, συνεπώς, την ανάλυση του χρονοδιακόπτη. Σε αυτόν τον τρόπο λειτουργίας, παρέχεται ένα ευρύτερο εύρος ρύθμισης συχνότητας των παραγόμενων ορθογώνιων παλμών. Απλοποιεί επίσης τη λειτουργία του εξωτερικού μετρητή συμβάντων. Το διάγραμμα χρονισμού του χρονοδιακόπτη σε λειτουργία CTC φαίνεται στο Σχήμα 1. Ο μετρητής (TCNTn) αυξάνει την κατάστασή του έως ότου ταιριάζει με την τιμή OCRnA ή ICRn και, στη συνέχεια, γίνεται επαναφορά του μετρητή (TCNTn).

Σχήμα 1 - Διάγραμμα χρονισμού για τη λειτουργία STS

Όταν επιτευχθεί το ανώτερο όριο καταμέτρησης, μπορεί να δημιουργηθεί μια διακοπή χρησιμοποιώντας τις σημαίες OCFnA ή ICFn που αντιστοιχούν στους καταχωρητές που χρησιμοποιούνται για τον ορισμό του ανώτερου ορίου καταμέτρησης. Εάν η διακοπή είναι ενεργοποιημένη, τότε η ρουτίνα διακοπής μπορεί να χρησιμοποιηθεί για την ενημέρωση του ανώτερου ορίου καταμέτρησης. Ωστόσο, η ρύθμιση της ανώτατης τιμής μέτρησης κοντά στην τιμή ορίου χαμηλής καταμέτρησης όταν ο μετρητής λειτουργεί χωρίς προκλιμάκωση ή με χαμηλή τιμή προκλιμάκωσης πρέπει να γίνεται με εξαιρετική προσοχή, καθώς δεν υπάρχει διπλή αποθήκευση στη λειτουργία CTC. Εάν η τιμή που έχει γραφτεί στο OCRnA ή στο ICRn είναι μικρότερη από την τρέχουσα τιμή του TCNTn, τότε ο μετρητής αντιστοίχισης θα επαναφερθεί όταν φτάσει στη μέγιστη τιμή (0xFFFF), στη συνέχεια θα επαναφερθεί στο 0x0000 και θα φτάσει στη νέα τιμή του OCRnA ή του ICRn. Σε πολλές περιπτώσεις, αυτή η κατάσταση δεν είναι επιθυμητή. Εναλλακτικά, μπορεί να χρησιμοποιηθεί η γρήγορη λειτουργία PWM, όπου ο καταχωρητής OCRnA καθορίζει το ανώτερο όριο της μέτρησης (WGMn3-0 = 0b1111), επειδή. σε αυτήν την περίπτωση το OCRnA είναι διπλό buffer.

Για τη δημιουργία σήματος σε λειτουργία CTC, η έξοδος OCnA μπορεί να χρησιμοποιηθεί για την αλλαγή του λογικού επιπέδου σε κάθε αντιστοιχία, ρυθμίζοντας τη λειτουργία μεταγωγής (COMnA1, COMnA0 = 0b01). Η τιμή OCnA θα υπάρχει σε έναν ακροδέκτη θύρας μόνο εάν έχει ρυθμιστεί η κατεύθυνση εξόδου για αυτόν τον ακροδέκτη. Η μέγιστη συχνότητα του παραγόμενου σήματος είναι fOC0 = fclk_I/O/2 εάν OCRnA = 0x0000. Για άλλες τιμές του OCRn, η συχνότητα του παραγόμενου σήματος μπορεί να προσδιοριστεί από τον τύπο:

όπου η μεταβλητή N καθορίζει τον παράγοντα διαίρεσης του προκλιμακωτή (1, 8, 32, 64, 128, 256 ή 1024).

Εκτός από την κανονική λειτουργία, η σημαία TOV0 τίθεται στον ίδιο κύκλο ρολογιού όταν η τιμή της αλλάζει από 0xFFFF σε 0x0000.

Γρήγορη λειτουργία PWM (FAST PWM)

Η λειτουργία Fast Pulse Width Modulation (PWM) (WGMn3-0 = 0b0101, 0b0110, 0b0111, 0b1110, 0b1111) έχει σχεδιαστεί για τη δημιουργία παλμών PWM υψηλής συχνότητας. Σε αντίθεση με άλλους τρόπους λειτουργίας, αυτός χρησιμοποιεί λειτουργία μετρητή μονής κατεύθυνσης. Ο λογαριασμός πραγματοποιείται προς την κατεύθυνση από το κάτω προς το ανώτατο όριο του λογαριασμού.

Εάν έχει οριστεί η λειτουργία εξόδου χωρίς αναστροφή, τότε όταν τα TCNTn και OCRnx ταιριάζουν, το σήμα OCnx ρυθμίζεται και στο ανώτερο όριο της μέτρησης επαναφέρεται. Εάν έχει καθοριστεί η λειτουργία αναστροφής, η έξοδος OCnx επαναφέρεται σε έναν αγώνα και ορίζεται στο υψηλό όριο μέτρησης. Λόγω της μονοκατευθυντικής μέτρησης, η συχνότητα λειτουργίας για αυτήν τη λειτουργία είναι διπλάσια σε σύγκριση με τη λειτουργία PWM με διορθωμένη φάση, η οποία χρησιμοποιεί μέτρηση αμφίδρομης κατεύθυνσης. Η δυνατότητα παραγωγής σημάτων PWM υψηλής συχνότητας καθιστά τη χρήση αυτής της λειτουργίας χρήσιμη στις εργασίες σταθεροποίησης ισχύος, διόρθωσης και μετατροπής ψηφιακού σε αναλογικό. Η υψηλή συχνότητα, ταυτόχρονα, επιτρέπει τη χρήση εξωτερικών στοιχείων φυσικώς μικρού μεγέθους (επαγωγείς, πυκνωτές), μειώνοντας έτσι το συνολικό κόστος του συστήματος.

Η ανάλυση PWM μπορεί να καθοριστεί 8, 9 ή 10 bit ή να οριστεί από τον καταχωρητή ICRn ή OCRnA, αλλά όχι λιγότερο από 2 bit (ICRn ή OCRnA = 0x0003) και όχι περισσότερα από 16 bit (ICRn ή OCRnA = 0xFFFF). Η ανάλυση PWM σε μια δεδομένη τιμή ανώτατου ορίου (UP) υπολογίζεται ως εξής:

Στη λειτουργία γρήγορου PWM, ο μετρητής αυξάνεται έως ότου η τιμή του ταιριάζει με μία από τις σταθερές τιμές 0x00FF, 0x01FF ή 0x03FF (εάν WGMn3:0 = 0b0101, 0b0110 ή 0b0111, αντίστοιχα), η τιμή σε ICRn (εάν WGMn3: 0 = 0b1110), ή την τιμή σε OCRnA (εάν WGMn3:0 = 0b1111) και στη συνέχεια επαναφέρετε τον επόμενο κύκλο ρολογιού του χρονοδιακόπτη. Το διάγραμμα χρονισμού για τη λειτουργία γρήγορης PWM φαίνεται στην Εικόνα 2. Η εικόνα δείχνει τη λειτουργία γρήγορης PWM όταν χρησιμοποιείται ο καταχωρητής OCRnA ή ICRn για τον ορισμό του ανώτατου ορίου. Η τιμή του TCNTn στο διάγραμμα χρονισμού εμφανίζεται ως γράφημα συνάρτησης για να απεικονίσει τη μέτρηση μονής κατεύθυνσης. Το διάγραμμα δείχνει ανεστραμμένες και μη ανεστραμμένες εξόδους PWM. Η σύντομη οριζόντια γραμμή δείχνει τα σημεία στο γράφημα TCNTn όπου συμπίπτουν οι τιμές των OCRnx και TCNTnx. Η σημαία διακοπής OCnx ορίζεται όταν εμφανίζεται μια αντιστοίχιση.

Εικόνα 2 - Διάγραμμα χρονισμού για γρήγορη λειτουργία PWM

Η σημαία υπερχείλισης χρονοδιακόπτη-μετρητή (TOVn) ορίζεται κάθε φορά που ο μετρητής φτάνει στο ανώτατο όριο. Επιπλέον, οι σημαίες OCnA ή ICFn μπορούν να ρυθμιστούν στον ίδιο παλμό ρολογιού μαζί με τη σημαία TOVn, εάν ο καταχωρητής OCRnA ή ICRn χρησιμοποιείται για τον ορισμό του ανώτατου ορίου, αντίστοιχα. Εάν μία από αυτές τις διακοπές είναι ενεργοποιημένη, τότε μια ρουτίνα διακοπής μπορεί να ενημερώσει το ανώτερο όριο καταμέτρησης και να συγκρίνει τα κατώφλια.

Εάν αλλάξει η τιμή του ανώτερου ορίου του πλήθους, τότε πρέπει να πληρούται η προϋπόθεση ώστε η νέα τιμή του ανώτατου ορίου που γράφεται να είναι μεγαλύτερη ή ίση με τις τιμές σε όλους τους καταχωρητές του ορίου σύγκρισης. Διαφορετικά, δεν θα συμβεί ποτέ αντιστοίχιση μεταξύ TCNTn και OCRnx. Σημειώστε ότι όταν χρησιμοποιείτε σταθερές ανώτερες οριακές τιμές, τα αχρησιμοποίητα bit καλύπτονται στο 0 κατά την εγγραφή στους καταχωρητές OCRnx.

Ο μηχανισμός για την τροποποίηση του καταχωρητή ICRn είναι διαφορετικός από τον OCRnA εάν χρησιμοποιείται για τον ορισμό του ανώτατου ορίου. Ο καταχωρητής ICRn δεν έχει διπλή αποθήκευση. Αυτό σημαίνει ότι εάν μια μικρή τιμή γραφτεί στο ICRn ενώ ο μετρητής εκτελείται με ή χωρίς χαμηλή προκλίμακα, υπάρχει ο κίνδυνος να γραφτεί στο ICRn μια τιμή μικρότερη από την τρέχουσα τιμή του TCNTn. Ως αποτέλεσμα, ο αγώνας στην κορυφή του σκορ θα χαθεί σε μια τέτοια κατάσταση. Σε αυτήν την περίπτωση, ο μετρητής θα φτάσει τη μέγιστη τιμή (0xFFFF), θα επανεκκινήσει από το 0x0000 και μόνο τότε θα συμβεί αντιστοίχιση. Ο καταχωρητής OCRnA περιέχει ένα σχήμα διπλής προσωρινής αποθήκευσης, ώστε να μπορεί να τροποποιηθεί ανά πάσα στιγμή.

class="eliadunit">

Εάν έχει γραφτεί μια διεύθυνση OCRnA, η τιμή τοποθετείται πραγματικά στον καταχωρητή προσωρινής αποθήκευσης OCRnA. Εάν υπάρχει αντιστοιχία μεταξύ του TCNTn και της κορυφής της μέτρησης, τότε ο επόμενος κύκλος συγχρονισμού χρονοδιακόπτη αντιγράφει τον καταχωρητή buffer στον καταχωρητή κατωφλίου σύγκρισης OCRnA. Η ενημέρωση του μητρώου εκτελείται στον ίδιο κύκλο με την επαναφορά του TCNTn και τη ρύθμιση της σημαίας TOVn.

Συνιστάται η χρήση του καταχωρητή ICRn για να ορίσετε το ανώτερο όριο εάν το ανώτερο όριο καταμέτρησης είναι σταθερό. Σε αυτήν την περίπτωση, ο καταχωρητής OCRnA ελευθερώνεται επίσης για να δημιουργήσει ένα σήμα PWM στην έξοδο OCnA. Ωστόσο, εάν η συχνότητα PWM αλλάζει δυναμικά (με την αλλαγή του ανώτατου ορίου), τότε σε αυτήν την περίπτωση είναι πιο ωφέλιμο να χρησιμοποιήσετε τον καταχωρητή OCRnA για να ορίσετε το ανώτερο όριο, επειδή. υποστηρίζει διπλό buffering.

Στη λειτουργία γρήγορης PWM, τα μπλοκ σύγκρισης σάς επιτρέπουν να δημιουργείτε σήματα PWM στις ακίδες OCnx. Εάν COMnx1:0 =0b10, τότε έχει οριστεί PWM χωρίς αναστροφή εξόδου και εάν COMnx1:0 = 0b11, τότε έχει οριστεί η λειτουργία PWM με αναστροφή εξόδου (βλ. πίνακα 59). Η πραγματική τιμή OCnx μπορεί να φανεί στην ακίδα της θύρας εάν έχει ρυθμιστεί στην κατεύθυνση εξόδου (DDR_OCnx). Το σήμα PWM δημιουργείται με τη ρύθμιση (επαναφορά) του καταχωρητή OCnx όταν συμβαίνει μια αντιστοίχιση μεταξύ OCRnx και TCNTn και επαναφέροντας (ρυθμίζοντας) τον καταχωρητή OCnx μαζί με την επαναφορά του μετρητή (μετάβαση από υψηλό όριο σε χαμηλό όριο).

Η συχνότητα PWM του σήματος εξόδου για μια δεδομένη τιμή του ανώτατου ορίου (UP) καθορίζεται από την έκφραση:

όπου N είναι μια μεταβλητή που καθορίζει την τιμή του παράγοντα προκλιμάκωσης (1, 8, 32, 64, 128, 256 ή 1024).

Η εγγραφή οριακών τιμών στον καταχωρητή OCRnx σχετίζεται με ειδικές περιπτώσεις στη δημιουργία παλμών PWM. Εάν το OCRnx έχει οριστεί ίσο με το κατώτερο όριο (0x0000), τότε ένας σύντομος παλμός θα εμφανίζεται στην έξοδο κάθε (VP+1) ου κύκλου συγχρονισμού χρονοδιακόπτη. Η εγγραφή στο OCRnx μιας τιμής ίσης με το ανώτερο όριο θα ορίσει ένα σταθερό επίπεδο καταγραφής. 1 ή 0 στην έξοδο (ανάλογα με την πολικότητα του σήματος εξόδου που επιλέγεται με το bit COMnx1:0).

Εάν θέλετε να δημιουργήσετε ένα τετράγωνο κύμα (ορθογώνιοι παλμοί με κύκλο λειτουργίας 2 ή 50% πλήρωση) υψηλής συχνότητας, τότε πρέπει να χρησιμοποιήσετε τη λειτουργία γρήγορου PWM με το σύνολο bit COMnA1:0 = 0b01, το οποίο προκαλεί το λογικό επίπεδο για εναλλαγή (αναστροφή) στην έξοδο OCnA σε κάθε αγώνα. Αυτό ισχύει μόνο εάν το OCRnA χρησιμοποιείται για τον ορισμό του ανώτατου ορίου (WGMn3-0 =0b1111). Η μέγιστη παραγόμενη συχνότητα τετραγωνικών κυμάτων σε αυτήν την περίπτωση είναι fOCnA = fclk_I/O/2 εάν OCRnA = 0x0000. Αυτή η δυνατότητα είναι ίδια με την εναλλαγή OCnA σε λειτουργία CTC, εκτός από τη διπλή προσωρινή αποθήκευση που είναι διαθέσιμη σε λειτουργία γρήγορης PWM.

Λειτουργία διαμόρφωσης πλάτους παλμού με διόρθωση φάσης (Phase Correct)

Η διαμόρφωση πλάτους παλμού με διόρθωση φάσης (PWM PK) (WGMn3-0 = 0b0001, 0b010, 0b0011, 0b1010 ή 0b1011) έχει σχεδιαστεί για τη δημιουργία ενός σήματος PWM με διόρθωση φάσης με υψηλή ανάλυση. Η λειτουργία PWM FC βασίζεται στη λειτουργία χρονομετρητή-μετρητή αμφίδρομης κατεύθυνσης. Ο μετρητής μετακινείται μέσω της μέτρησης από το κατώτερο όριο (0x0000) στο ανώτερο όριο και στη συνέχεια πίσω από το ανώτερο όριο στο κατώτερο όριο. Εάν έχει ρυθμιστεί η λειτουργία εξόδου διαμορφωτή παλμών χωρίς αναστροφή, τότε η έξοδος OCnx επαναφέρεται/ρυθμίζεται όταν οι τιμές των TCNTn και OCRnx ταιριάζουν κατά τη διάρκεια της μέτρησης πάνω/κάτω. Εάν έχει ρυθμιστεί η λειτουργία αναστροφής εξόδου, τότε, αντίθετα, κατά τη μέτρηση προς τα εμπρός, εμφανίζεται η ρύθμιση και κατά τη διάρκεια της αντίστροφης μέτρησης, η έξοδος OCnx επαναφέρεται. Στην αμφίδρομη λειτουργία, η μέγιστη συχνότητα του σήματος PWM είναι χαμηλότερη από ό,τι στη λειτουργία μονής κατεύθυνσης, ωστόσο, λόγω ενός τέτοιου χαρακτηριστικού όπως η συμμετρία σε λειτουργίες PWM με αμφίδρομη λειτουργία, αυτές οι λειτουργίες προτιμάται να χρησιμοποιούνται κατά την επίλυση προβλημάτων ελέγχου μετάδοσης κίνησης.

Η ανάλυση PWM σε αυτήν τη λειτουργία μπορεί είτε να καθοριστεί (8, 9 ή 10 bit) είτε να ρυθμιστεί χρησιμοποιώντας τον καταχωρητή ICRn ή OCRnA. Η ελάχιστη ανάλυση είναι 2 bit (ICRn ή OCRnA = 0x0003) και η μέγιστη είναι 16 bit (ICRn ή OCRnA =0xFFFF). Εάν έχει οριστεί το ανώτερο όριο, τότε η ανάλυση PWM σε αυτήν τη λειτουργία καθορίζεται ως εξής:

Στη λειτουργία PWM FC, ο μετρητής αυξάνεται μέχρι να φτάσει σε μία από τις σταθερές τιμές 0x00FF, 0x01FF ή 0x03FF (αντίστοιχα για WGMn3-0 = 0b0001, 0b0010 ή 0b0011), καθώς και μια τιμή ίση με ICRn3-0G = 0b1010) ή OCRnA (αν WGMn3 :0 = 0b1011). Επιπλέον, όταν επιτευχθεί το ανώτερο όριο, ο μετρητής αλλάζει την κατεύθυνση της μέτρησης. Η τιμή του TCNTn παραμένει ίση με το ανώτατο όριο για έναν κύκλο ρολογιού του χρονοδιακόπτη. Το διάγραμμα χρονισμού για τη λειτουργία PWM FC φαίνεται στο Σχήμα 3. Το σχήμα δείχνει τη λειτουργία PWM FC χρησιμοποιώντας τον καταχωρητή OCRnA ή ICRn για να ορίσετε το ανώτερο όριο. Η κατάσταση TCNTn παρουσιάζεται ως γράφημα συνάρτησης για να απεικονίσει την αμφίδρομη μέτρηση. Το σχήμα δείχνει τόσο την μη ανεστραμμένη όσο και την ανεστραμμένη έξοδο PWM. Οι σύντομες οριζόντιες γραμμές υποδεικνύουν τα σημεία στο γράφημα αλλαγής TCNTn όπου εμφανίζεται μια αντιστοίχιση με την τιμή OCRnx. Η σημαία διακοπής OCnx ορίζεται όταν εμφανίζεται μια αντιστοίχιση.

Εικόνα 3 - Διάγραμμα χρονισμού για τη λειτουργία PWM FC

Το Timer-Counter Overflow Flag (TOVn) ορίζεται κάθε φορά που ο μετρητής φτάνει στο χαμηλό όριο. Εάν ο καταχωρητής OCRnA ή ICRn χρησιμοποιείται για τον ορισμό του ανώτατου ορίου, τότε η σημαία OCnA ή ICFn ορίζεται αντίστοιχα στον ίδιο παλμό ρολογιού στον οποίο ενημερώθηκε ο καταχωρητής OCRnx από τον καταχωρητή buffer (στην κορυφή της μέτρησης). Οι σημαίες διακοπής μπορούν να χρησιμοποιηθούν για τη δημιουργία διακοπής όταν ο μετρητής φτάσει σε ένα χαμηλό ή υψηλό όριο.

Όταν αλλάζετε την τιμή του ανώτερου ορίου καταμέτρησης, πρέπει να βεβαιωθείτε ότι είναι μεγαλύτερη ή ίση με τις τιμές σε όλους τους μητρώους σύγκρισης. Διαφορετικά, δεν θα συμβεί ποτέ αντιστοίχιση μεταξύ TCNTn και OCRnx. Σημειώστε ότι όταν χρησιμοποιείτε σταθερές τιμές για το ανώτερο όριο μέτρησης, τα αχρησιμοποίητα bit ορίζονται στο μηδέν κατά την εγγραφή στους καταχωρητές OCRnx. Η τρίτη περίοδος στο Σχήμα 53 απεικονίζει την περίπτωση όπου μια δυναμική αλλαγή στο ανώτερο όριο της μέτρησης οδηγεί στη δημιουργία ενός ασύμμετρου παλμού. Αυτή η δυνατότητα βασίζεται στον χρόνο ενημέρωσης του καταχωρητή OCRnx. Εφόσον η ενημέρωση OCRnx εμφανίζεται στην κορυφή της μέτρησης, η περίοδος PWM ξεκινά και τελειώνει στην κορυφή της μέτρησης. Αυτό συνεπάγεται ότι η διάρκεια της μέτρησης προς τα κάτω καθορίζεται από την προηγούμενη ανώτερη οριακή τιμή και η διάρκεια της μέτρησης προς τα εμπρός καθορίζεται από τη νέα ανώτερη οριακή τιμή. Εάν αυτές οι δύο τιμές είναι διαφορετικές, τότε η διάρκεια της μέτρησης προς τα εμπρός και προς τα πίσω θα είναι επίσης διαφορετική. Η διαφορά στη διάρκεια οδηγεί σε ασυμμετρία των παλμών εξόδου.

Εάν η εργασία είναι να αλλάξετε το ανώτερο όριο ενώ ο μετρητής λειτουργεί, τότε αντί για αυτήν τη λειτουργία συνιστάται η χρήση της λειτουργίας PWM FCH (διόρθωση φάσης και συχνότητας). Εάν χρησιμοποιείται μια στατική ανώτερη οριακή τιμή, τότε πρακτικά δεν υπάρχει διαφορά μεταξύ αυτών των τρόπων λειτουργίας.

Στη λειτουργία PWM FC, τα μπλοκ σύγκρισης σάς επιτρέπουν να δημιουργείτε σήματα PWM στις ακίδες OCnx. Εάν ορίσετε COMnx1:0 = 0b10, τότε η έξοδος PWM θα είναι χωρίς αναστροφή και εάν COMnx1:0=0b11, τότε με αντιστροφή. Η πραγματική τιμή OCnx μπορεί να παρατηρηθεί σε μια ακίδα θύρας εάν η κατεύθυνση εξόδου (DDR_OCnx) έχει οριστεί στον καταχωρητή κατεύθυνσης δεδομένων για αυτήν την ακίδα θύρας. Το σήμα PWM δημιουργείται με τη ρύθμιση (επαναφορά) του καταχωρητή OCnx όταν οι τιμές των OCRnx και TCNTn ταιριάζουν κατά τη διάρκεια της μέτρησης ανόδου και με εκκαθάριση (ρύθμιση) του καταχωρητή OCnx κατά την αντιστοίχιση μεταξύ OCRnx και TCNTn κατά τη διάρκεια της αντίστροφης μέτρησης. Η προκύπτουσα συχνότητα του σήματος PWM στη λειτουργία PWM FC σε ένα δεδομένο ανώτερο όριο (UP) μπορεί να υπολογιστεί χρησιμοποιώντας την ακόλουθη έκφραση:

Η εγγραφή οριακών τιμών στον καταχωρητή OCRnx οφείλεται σε ειδικές περιπτώσεις παραγωγής σημάτων PWM σε λειτουργία PWM FK. Εάν ρυθμίσετε τη λειτουργία PWM χωρίς αντιστροφή και ορίσετε το OCRnx ίσο με το κατώτερο όριο, τότε η έξοδος θα ρυθμίζεται συνεχώς σε καταγραφή. 0, και αν ισούται με το ανώτερο όριο, τότε το ημερολόγιο είναι συνεχώς παρόν στην έξοδο. 1. Για PWM με αντιστροφή, τα υποδεικνυόμενα επίπεδα πρέπει να αντικατασταθούν από τα αντίθετα.

Εάν ορίσετε να χρησιμοποιείτε το OCnA ως ανώτατο όριο (WGMn3:0 = 0b1011) και ορίσετε COMnA1:0 =0b01, θα δημιουργηθεί ένα τετραγωνικό κύμα στην έξοδο του OCnA.

Λειτουργία διαμόρφωσης πλάτους παλμού με διόρθωση φάσης και συχνότητας (Σωστή φάση και συχνότητα)

Η διαμόρφωση πλάτους παλμού με διόρθωση φάσης και συχνότητας (PWM PFC) (WGMn3-0 = 0b1000 ή 0b1001) έχει σχεδιαστεί για τη δημιουργία παλμών PWM υψηλής ανάλυσης με διόρθωση φάσης και συχνότητας. Εκτός από τη λειτουργία PWM FC, η λειτουργία PWM FC βασίζεται στην αμφίδρομη λειτουργία του μετρητή. Ο μετρητής μετράει κυκλικά από το κατώτερο όριο (0x0000) στο ανώτερο όριο και μετά από το ανώτερο όριο στο κάτω όριο. Εάν έχει ρυθμιστεί η λειτουργία PWM χωρίς αναστροφή, η έξοδος OCnx επαναφέρεται εάν προκύψει αντιστοίχιση μεταξύ TCNTn και OCRnx κατά τη διάρκεια της μέτρησης προς τα πάνω και ρυθμίζεται εάν προκύψει αντιστοίχιση κατά την αντίστροφη μέτρηση. Στη λειτουργία αναστροφής, η λειτουργία είναι αντίστροφη. Η αμφίδρομη λειτουργία, σε σύγκριση με τη λειτουργία μονής κατεύθυνσης, σχετίζεται με τη δημιουργία χαμηλότερων συχνοτήτων. Ωστόσο, λόγω της συμμετρίας στις λειτουργίες PWM με αμφίδρομη μέτρηση, η χρήση τους είναι προτιμότερη σε εργασίες ελέγχου κίνησης.

Η κύρια διαφορά μεταξύ των λειτουργιών PWM FC και PWM PFC είναι όταν ο καταχωρητής OCRnx ενημερώνεται από τον καταχωρητή buffer OCRnx (βλ. Εικόνα 3 και Εικόνα 4).

Η ανάλυση PWM σε αυτήν τη λειτουργία μπορεί να ρυθμιστεί χρησιμοποιώντας τον καταχωρητή ICRn ή OCRnA. Η ελάχιστη ανάλυση είναι 2 bit (ICRn ή OCRnA = 0x0003) και η μέγιστη ανάλυση είναι 16 bit (ICRn ή OCRnA = 0xFFFF). Η ανάλυση PWM σε bit μπορεί να υπολογιστεί χρησιμοποιώντας την ακόλουθη έκφραση:

Στη λειτουργία PWM LFC, ο μετρητής αυξάνεται έως ότου ταιριάζει με την τιμή σε ICRn (WGMn3:0 = 0b1000) ή OCRnA (WGMn3:0 = 0b1001). Αυτό σημαίνει να φτάσετε στην κορυφή της μέτρησης, μετά από την οποία υπάρχει μια αλλαγή στην κατεύθυνση της μέτρησης. Η τιμή του TCNTn παραμένει ίση με την κορυφή της μέτρησης για έναν κύκλο ρολογιού του ρολογιού του χρονοδιακόπτη. Το διάγραμμα χρονισμού για τη λειτουργία PWM PFC φαίνεται στο Σχήμα 54. Το σχήμα δείχνει τη λειτουργία PWM PFC όταν η κορυφή της μέτρησης έχει οριστεί από τον καταχωρητή OCRnA ή ICRn. Η τιμή του TCNTn εμφανίζεται ως γράφημα συνάρτησης για να απεικονίσει την αμφίδρομη μέτρηση. Το διάγραμμα δείχνει τόσο τις μη αντιστρεφόμενες όσο και τις αναστροφικές εξόδους PWM. Οι σύντομες οριζόντιες γραμμές υποδεικνύουν σημεία στην γραφική παράσταση TCNTn όπου συμβαίνει μια αντιστοίχιση μεταξύ OCRnx και TCNTn. Η σημαία διακοπής OCnx ορίζεται μετά την εμφάνιση ενός αγώνα.

Εικόνα 4 - Διάγραμμα χρονισμού της λειτουργίας PWM με διόρθωση φάσης και συχνότητας

Το Timer-Counter Overflow Flag (TOVn) ορίζεται στον ίδιο κύκλο που ενημερώθηκαν οι καταχωρητές με την τιμή από τον καταχωρητή buffer (στο χαμηλό όριο καταμέτρησης). Εάν ο καταχωρητής OCRnA ή ICRn χρησιμοποιείται για τον ορισμό του ανώτατου ορίου, τότε όταν ο μετρητής φτάσει στο ανώτερο όριο, ορίζεται η σημαία OCnA ή ICFn, αντίστοιχα. Οι σημαίες διακοπής μπορούν να χρησιμοποιηθούν για τη δημιουργία διακοπής όταν ο μετρητής φτάσει σε ένα ανώτερο ή κατώτερο όριο.

Κατά την αλλαγή του ανώτατου ορίου, πρέπει να βεβαιωθείτε ότι η νέα τιμή είναι μεγαλύτερη ή ίση με τις τιμές σε όλους τους καταχωρητές του ορίου σύγκρισης. Διαφορετικά, εάν η ανώτερη οριακή τιμή είναι μικρότερη από οποιαδήποτε από τις τιμές του καταχωρητή κατωφλίου σύγκρισης, δεν θα υπάρξει ποτέ αντιστοίχιση μεταξύ TCNTn και OCRnx.

Το Σχήμα 4 δείχνει ότι σε αντίθεση με τη λειτουργία PWM FC, το παραγόμενο σήμα εξόδου είναι συμμετρικό σε όλες τις περιόδους. Επειδή οι καταχωρητές OCRnx ενημερώνονται στο χαμηλό όριο μέτρησης, οι χρόνοι μέτρησης πάνω και κάτω είναι πάντα ίσοι. Ως αποτέλεσμα, οι παλμοί εξόδου έχουν συμμετρικό σχήμα και, κατά συνέπεια, διορθωμένη συχνότητα.

Η χρήση του καταχωρητή ICRn για τον ορισμό του υψηλού ορίου συνιστάται εάν η τιμή του υψηλού ορίου είναι σταθερή. Σε αυτήν την περίπτωση, ο καταχωρητής OCRnA ελευθερώνεται επίσης για διαμόρφωση εύρους παλμού των παλμών στον ακροδέκτη OCnA. Ωστόσο, εάν θέλετε να αλλάξετε δυναμικά τη συχνότητα PWM αλλάζοντας το ανώτερο όριο, τότε συνιστάται να χρησιμοποιήσετε τον καταχωρητή OCRnA για να ορίσετε το ανώτερο όριο λόγω της διπλής προσωρινής αποθήκευσης.

Στη λειτουργία PWM PFC, οι συγκριτές σάς επιτρέπουν να δημιουργείτε παλμούς PWM στον ακροδέκτη OCnx. Εάν COMnx1:0 = 0b10, τότε ορίζεται μια μη αντιστρεφόμενη έξοδος PWM και εάν COMnx1:0=0b11, τότε μια αναστροφή (βλ. πίνακα 60). Η τιμή OCnx θα υπάρχει μόνο στην αντίστοιχη ακίδα θύρας εάν έχει ρυθμιστεί σε κατεύθυνση εξόδου. Το σήμα PWM δημιουργείται με τη ρύθμιση (διαγραφή) του καταχωρητή OCnx σε μια αντιστοίχιση μεταξύ OCRnx και TCNTn κατά την μέτρηση προς τα πάνω και επαναφορά (ρύθμιση) του καταχωρητή OCnx σε μια αντιστοίχιση μεταξύ OCRnx και TCNTn κατά τη διάρκεια της αντίστροφης μέτρησης. Η συχνότητα PWM σε αυτόν τον τρόπο λειτουργίας με ένα δεδομένο ανώτατο όριο (VP) της μέτρησης προσδιορίζεται ως εξής:

όπου Ν είναι ο συντελεστής διαίρεσης του προκλιμακωτή (1, 8, 32, 64, 128, 256 ή 1024).

Η εγγραφή οριακών τιμών στον καταχωρητή OCRnx σχετίζεται με ειδικές περιπτώσεις για τη δημιουργία σημάτων PWM σε αυτόν τον τρόπο λειτουργίας. Εάν ορίσετε το OCRnx ίσο με το κατώτερο όριο (0x0000), τότε σε λειτουργία χωρίς αναστροφή η έξοδος θα είναι συνεχώς χαμηλή και όταν γράφετε μια τιμή ίση με το ανώτερο όριο, η έξοδος θα είναι μόνιμα υψηλή. Στη λειτουργία αναστροφής, τα δεδομένα επίπεδα θα είναι αντίθετα.

Εάν το OCRnA χρησιμοποιείται για τον ορισμό του ανώτατου ορίου (WGMn3:0 = 0b1001) και το COMnA1:0 = 0b01, τότε θα δημιουργηθεί ένα τετραγωνικό κύμα στην έξοδο του OCnA.

Η εφαρμογή υλικού του PWM παρέχει απεριόριστα πλεονεκτήματα σε σχέση με το λογισμικό, καθώς εκφορτώνει τον επεξεργαστή με περιττό και δυσκίνητο κώδικα και χρόνο για τη συντήρησή του, και επίσης παρέχει περισσότερες ευκαιρίες για χρήση PWM. Αρκεί να αρχικοποιήσετε το χρονόμετρο / μετρητή (βάλτε τις απαραίτητες τιμές στους καταχωρητές που χρησιμοποιούνται από το χρονόμετρο / μετρητή) καθώς ο χρονοδιακόπτης / μετρητής μπορεί να λειτουργήσει ανεξάρτητα από τον επεξεργαστή, αντίστοιχα, ο επεξεργαστής μπορεί να κάνει άλλες εργασίες, μόνο μερικές φορές γυρίζοντας στην απαραίτητη στιγμή για να ρυθμίσετε ή να αλλάξετε τη λειτουργία ή να λάβετε αποτελέσματα από το χρονόμετρο / μετρητή.

Περιγραφή σημαιών διακοπής

Το T1 μπορεί να δημιουργήσει μια διακοπή όταν:

  1. υπερχείλιση του καταχωρητή μέτρησης TCNT1.
  2. όταν ο καταχωρητής μέτρησης TCNT1 και ο καταχωρητής σύγκρισης OCR1A και OCR1B είναι ίσοι (ξεχωριστά για κάθε καταχωρητή).
  3. ενώ αποθηκεύεται ο καταχωρητής μέτρησης στον καταχωρητή σύλληψης ICR1.

Το T2 μπορεί να δημιουργήσει μια διακοπή όταν:

  1. υπερχείλιση του καταχωρητή μέτρησης TCNT2.
  2. όταν ο καταχωρητής μέτρησης TCNT2 και ο καταχωρητής σύγκρισης OCR2 είναι ίσοι.

Οι σημαίες για όλες τις διακοπές βρίσκονται στον καταχωρητή TIFR και οι διακοπές ενεργοποίησης/απενεργοποίησης βρίσκονται στον καταχωρητή TIMSK.

Bit στον καταχωρητή TIMSK
Κανω ΕΓΓΡΑΦΗ7 6 5 4 3 2 1 0
TIMSK OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0* TOIE0
  • OCIE2- Σημαία για την ενεργοποίηση της διακοπής στο συμβάν "σύμπτωση" του χρονοδιακόπτη / μετρητή T2
  • TOIE2- Η διακοπή υπερχείλισης χρονοδιακόπτη/μετρητή ενεργοποιεί τη σημαία T2
  • TICIE1- Σημαία για την ενεργοποίηση της διακοπής στο συμβάν "σύλληψη" του χρονοδιακόπτη / μετρητή T1
  • OCIE1A- Σημαία για ενεργοποίηση διακοπής στο συμβάν "σύμπτωση Α" του χρονοδιακόπτη / μετρητή T1
  • OCIE1B- Σημαία για ενεργοποίηση διακοπής στο συμβάν "σύμπτωση Β" του χρονοδιακόπτη / μετρητή T1
  • TOIE1- Η διακοπή υπερχείλισης χρονοδιακόπτη/μετρητή ενεργοποιεί τη σημαία T1
  • OCIE0*- Σημαία για την ενεργοποίηση της διακοπής στο συμβάν "σύμπτωση" του χρονοδιακόπτη / μετρητή T0 (* - απουσιάζει στο ATmega8)
  • TOIE0- Διακοπή υπερχείλισης χρονοδιακόπτη/μετρητή Ενεργοποίηση Σημαία T0
  • OCF2- Σημαία διακοπής στο συμβάν "σύμπτωση" του χρονοδιακόπτη / μετρητή T2
  • TOV2- Σημαία διακοπής υπερχείλισης χρονοδιακόπτη/μετρητή T2
  • ICF1- Σημαία διακοπής στο συμβάν "σύλληψη" του χρονοδιακόπτη / μετρητή T1
  • OCF1A- Σημαία διακοπής στο συμβάν "σύμπτωση Α" χρονόμετρο / μετρητής T1
  • OCF1B- Σημαία διακοπής στο συμβάν "σύμπτωση Β" χρονόμετρο / μετρητή T1
  • TOV1- Σημαία διακοπής υπερχείλισης χρονοδιακόπτη/μετρητή T1
  • OCF0- Σημαία διακοπής στο συμβάν "σύμπτωση" του χρονοδιακόπτη / μετρητή T0
  • TOV0- Σημαία διακοπής υπερχείλισης χρονοδιακόπτη/μετρητή T0

Περιγραφή της λειτουργίας του χρονοδιακόπτη / μετρητή T1 στον ελεγκτή ATmega8 / 16

Ο χρονοδιακόπτης/μετρητής T1 των δεκαέξι bit μπορεί να χρησιμοποιηθεί για να σχηματίσει χρονικά διαστήματα, να μετρήσει τον αριθμό των εξωτερικών σημάτων και να δημιουργήσει σήματα PWM διαφορετικών κύκλων λειτουργίας και διάρκειων στις ακίδες OC1A και OC1B. Επιπλέον, σε ένα εξωτερικό σήμα από τον ακροδέκτη ICP1 ή από έναν αναλογικό συγκριτή, το T1 μπορεί να αποθηκεύσει την τρέχουσα κατάστασή του σε έναν ξεχωριστό καταχωρητή καταγραφής ICR1.

Καταχωρήστε bit TCCR1A:TCC1B:TCNT1:OCR1A:OCR1B:ICR1
Κανω ΕΓΓΡΑΦΗ7 6 5 4 3 2 1 0
TCCR1A COM1A1 COM1A0 COM1B1 COM1BO FOC1A FOC1B WGM11 WGM10
TCCR1B ICNC1 ICES1 * WGM13 WGM12 CS12 CS11 CS10
TCNT1:H R/W R/W R/W R/W R/W R/W R/W R/W
TCNT1: L R/W R/W R/W R/W R/W R/W R/W R/W
OCR1A: H R/W R/W R/W R/W R/W R/W R/W R/W
OCR1A: L R/W R/W R/W R/W R/W R/W R/W R/W
OCR1B:H R/W R/W R/W R/W R/W R/W R/W R/W
OCR1B:L R/W R/W R/W R/W R/W R/W R/W R/W
ICR1: H R/W R/W R/W R/W R/W R/W R/W R/W
ICR1: L R/W R/W R/W R/W R/W R/W R/W R/W

Κάθε καταχωρητής 16-bit βρίσκεται φυσικά σε δύο καταχωρητές 8-bit, επομένως κατά την ανάγνωση μιας εγγραφής σε αυτούς, πρέπει να εκτελούνται δύο λειτουργίες. Κατά τη γραφή, φορτώνεται πρώτα το υψηλότερο byte, μετά το νεότερο, κατά την ανάγνωση, αντίθετα, διαβάζεται πρώτα το νεότερο byte και μετά το παλαιότερο.

TCCR1A:TCCR1B- Καταχωρητές χρονοδιακόπτη/μετρητή ελέγχου 8 bit T1

TCNT1- Καταχωρητής χρονοδιακόπτη/μετρητή 16 bit T1. Ανάλογα με τον τρόπο λειτουργίας, τα περιεχόμενα αυτού του καταχωρητή μηδενίζονται, αυξάνονται (αυξάνονται κατά 1) ή μειώνονται (μειώνονται κατά 1) με κάθε παλμό χρονοδιακόπτη/μετρητή ρολογιού.

OCR1A:OCR1B- Καταχωρητές σύγκρισης 16 bit

ICR1- Καταχωρητής καταγραφής 16 bit, αποθηκεύει την τιμή του TCNT1 όταν εφαρμόζεται μια ενεργή άκρη στην ακίδα ICP1 ή από έναν συγκριτή.

Αντιστοίχιση bit

COM1A1:COM1A0:COM1B1:COM1B0- Αυτά τα bit καθορίζουν τη συμπεριφορά της εξόδου OC1A:OC1B όταν η τιμή του καταχωρητή μέτρησης TCNT1 και του καταχωρητή σύγκρισης OCR1A:OCR1B ταιριάζει

FOC1A:FOC1B- Αυτά τα bit χρησιμοποιούνται για να επιβάλουν μια αλλαγή στην κατάσταση της εξόδου OC1A:OC1B

ICNC1- Bit ελέγχου κυκλώματος διαταραχής, εάν το bit είναι "0" η σύλληψη θα βρίσκεται στην πρώτη ενεργή άκρη, εάν "1" η σύλληψη θα είναι μετά το τέταρτο πανομοιότυπο δείγμα του σήματος σύλληψης.

ICES1- Το bit επιλογής ενεργού άκρου, εάν η τιμή του είναι "0", η αποθήκευση του καταχωρητή μέτρησης TCNT1 στον καταχωρητή σύλληψης OCR1 θα βρίσκεται στο φθίνον άκρο του σήματος, εάν το "1" σε άνοδο.

WGM13:WGM12:WGM11:WGM10- Αυτά τα bit καθορίζουν τον τρόπο λειτουργίας του χρονοδιακόπτη / μετρητή T1

CS22:CS21:C20- Bits που καθορίζουν την πηγή του σήματος χρονοδιακόπτη/μετρητή T1.

Επιλογή του τρόπου λειτουργίας του χρονοδιακόπτη / μετρητή T1
WGM13WGM12WGM11WGM10Λειτουργία λειτουργίαςΕνότητα λογαριασμού (TOP)
0 0 0 0 Κανονικός $FFFF
0 0 0 1 Phase Correct PWM

8-bit

$00 FF
0 0 1 0 Phase Correct PWM

9-bit

$01 FF
0 0 1 1 Phase Correct PWM

10 bit

$03FF
0 1 0 0 CTC (επαναφορά στον αγώνα) OCR1A
0 1 0 1 Γρήγορο PWM

8-bit

$00 FF
0 1 1 0 Γρήγορο PWM

9-bit

$01 FF
0 1 1 1 Γρήγορο PWM

10 bit

$03FF
1 0 0 0 ICR1
1 0 0 1 Phase and Freguensy Correct PWM OCR1A
1 0 1 0 Phase Correct PWM ICR1
1 0 1 1 Phase Correct PWM OCR1A
1 1 0 0 CTC (επαναφορά στον αγώνα) ICR1
1 1 0 1 κατοχυρωμένα *
1 1 1 0 Γρήγορο PWM ICR1
1 1 1 1 Γρήγορο PWM OCR1A

Επιλογή πηγής ρολογιού

Κανονική λειτουργία

Ο απλούστερος τρόπος λειτουργίας είναι ο T1. Για κάθε παλμό του σήματος ρολογιού, ο καταχωρητής μέτρησης TCNT1 αυξάνεται (αυξάνοντας την τιμή κατά 1). Όταν περάσετε από την τιμή $FFFF της μονάδας μετρητή (TOP), εμφανίζεται μια υπερχείλιση και ο επόμενος κύκλος αρχίζει να μετράει από την τιμή $0000, την ίδια στιγμή που ορίζεται η σημαία TOV1=1 στον καταχωρητή TIFR και μπορεί να υπάρξει διακοπή δημιουργείται εάν έχει οριστεί η σημαία TOIE1=1 στον καταχωρητή TIMSK. Για να δημιουργηθεί ένα σήμα μιας δεδομένης συχνότητας σε αυτόν τον τρόπο λειτουργίας, είναι απαραίτητο να γράψετε στα bit COM1A1=0:COM1A0=1 για την έξοδο OC1A ή COM1B1=0:COM1B0=1 για την έξοδο OC1B του ελεγκτή.

Επιπλέον, για κάθε κύκλο, ο καταχωρητής μέτρησης TCNT1 και ο καταχωρητής σύγκρισης OCR1A:OCR1B συγκρίνονται, εάν έχει οριστεί η αντιστοίχιση, ορίζεται η σημαία διακοπής OCF1A=1:OCF1B=1 και εάν το bit OCIE1A=1:OCIE1B= 1 του καταχωρητή TIMSK, δημιουργείται μια διακοπή. Ταυτόχρονα, η κατάσταση της ακίδας OC1A:OC1B μπορεί να αλλάξει ανάλογα με τις ρυθμίσεις των bit COM1A1:COM1A0:COM1B1:COM1B0.

Λειτουργία CTC (επαναφορά στον αγώνα)

Σε αυτήν τη λειτουργία, το T1 λειτουργεί με την ίδια αρχή όπως στην Κανονική λειτουργία. Η διαφορά είναι ότι η μέγιστη δυνατή τιμή του καταχωρητή μετρητή TCNT1 περιορίζεται από την τιμή του καταχωρητή σύγκρισης OCR1A ή ICR1 (δείτε τον πίνακα επιλογής λειτουργίας χρονοδιακόπτη/μετρητή). Όταν το TCNT1 φτάσει σε OCR1A ή ICR1, η τιμή TCNT1 επαναφέρεται σε TCNT1=0000$ Ταυτόχρονα ορίζεται η σημαία TOV1=1.

Γρήγορη λειτουργία PWM (γρήγορο PWM)

Με αυτήν τη λειτουργία, μπορείτε να δημιουργήσετε ένα σήμα PWM υψηλής συχνότητας. Η αρχή και η διαδικασία λειτουργίας δεν διαφέρουν από την Κανονική λειτουργία, εκτός από την παρουσία διπλής προσωρινής αποθήκευσης του καταχωρητή OCR1A:OCR1B, η οποία εξαλείφει την εμφάνιση ασύμμετρων παλμών σήματος και επίσης διαφέρει στη συμπεριφορά των ακίδων OS1A:OC1B ( βλέπε πίνακα).


Λειτουργία Phase Correct PWM (PWM με ακριβή φάση)

Η διαφορά μεταξύ αυτού του τρόπου λειτουργίας και των προηγούμενων είναι ότι ο καταχωρητής μέτρησης λειτουργεί ως αναστρέψιμος μετρητής. Δεδομένου ότι αυτή η λειτουργία συνιστάται από την Atmel ως η πιο κατάλληλη για τη ρύθμιση των κινητήρων, θα την εξετάσουμε λεπτομερέστερα. Όταν ο καταχωρητής μέτρησης TCNT1 φτάσει την τιμή του συντελεστή μέτρησης (TOP) (ή την τιμή του καταχωρητή ICR1 ή την τιμή του καταχωρητή OCR1A, δείτε τον πίνακα επιλογής τρόπου λειτουργίας χρονοδιακόπτη/μετρητή), η κατεύθυνση μέτρησης αντιστρέφεται. Όταν ο καταχωρητής καταμέτρησης TCNT1 φτάσει την ελάχιστη τιμή ($0000), αλλάζει επίσης η κατεύθυνση μέτρησης και την ίδια στιγμή ορίζεται η σημαία διακοπής TOV1 του καταχωρητή TIFR. Επίσης, εάν τα περιεχόμενα του καταχωρητή μέτρησης TCNT1 και του καταχωρητή σύγκρισης OCR1A:OCR1B είναι ίσα, ορίζεται η σημαία OCF1A:OCF1B του καταχωρητή TIFR και η κατάσταση της εξόδου OC1A:OC1B αλλάζει, σύμφωνα με τον πίνακα.

Για την αποφυγή ασύμμετρων εκπομπών κατά την εγγραφή μιας τιμής στον καταχωρητή OCR1A:OCR1B, εφαρμόζεται διπλή προσωρινή αποθήκευση της εγγραφής σε αυτήν τη λειτουργία. Λόγω αυτού, η πραγματική αλλαγή στην τιμή του καταχωρητή αλλάζει όταν ο καταχωρητής μετρητή TCNT1 φτάσει την τιμή της μονάδας του μετρητή (TOP) (ή την τιμή του καταχωρητή ICR1 ή την τιμή του καταχωρητή OCR1A, δείτε το χρονόμετρο /πίνακας επιλογής λειτουργίας μετρητή). Επομένως, στην αρχή, όταν αρχικοποιείται ο χρονοδιακόπτης/μετρητής, η έξοδος OC1A:OC1B δεν θα αλλάξει την κατάστασή της σε έναν αγώνα έως ότου ο καταχωρητής φτάσει την τιμή (TOP).

Μια εργασία:Ας αναπτύξουμε ένα πρόγραμμα για τον έλεγχο της φωτεινότητας μιας λάμπας πυρακτώσεως 12 volt χρησιμοποιώντας PWM. Πατώντας το κουμπί "Περισσότερα" αυξάνεται η φωτεινότητα της λάμπας, πατώντας το κουμπί "Λιγότερο" μειώνεται η φωτεινότητα. Το διάγραμμα της μελλοντικής μας συσκευής φαίνεται στο σχήμα. Ως συνήθως, χρησιμοποιούμε τον μικροελεγκτή Atmega8, ο οποίος θα είναι χρονισμένος από έναν εσωτερικό ταλαντωτή 4 MHz. Στην πραγματικότητα, έχουμε ένα ροοστάτη, αυτές οι συσκευές έχουν σχεδιαστεί για να προσαρμόζουν τη φωτεινότητα των φωτιστικών. Τώρα οι πιο διαδεδομένοι ροοστάτες LED.

Για απλότητα, μπορείτε επίσης να συνδέσετε ένα LED στο κύκλωμά μας, αλλά με μια λάμπα θα είναι πιο καθαρό. Κουμπιά που συνδέονται με καρφίτσες PD0, PD1. Συνδέουμε το φορτίο στην έξοδο PB1(OC1A)μέσω μιας αντίστασης και ενός τρανζίστορ εφέ πεδίου MOSFET, που θα λειτουργήσει για εμάς ως κλειδί (σε λειτουργία κλειδιού). Το τρανζίστορ εφέ πεδίου είναι προτιμότερο επειδή η πύλη του είναι απομονωμένη από το κύκλωμα ισχύος και ο έλεγχος εκτελείται από ηλεκτρικό πεδίο και το ρεύμα ελέγχου φτάνει τα μικροαμπέρ. Αυτό επιτρέπει, χρησιμοποιώντας ένα ή δύο τρανζίστορ, τον έλεγχο ενός τεράστιου φορτίου ισχύος (έως δεκάδες αμπέρ και δεκάδες έως εκατοντάδες βολτ) χωρίς να φορτώνεται ο μικροελεγκτής. Λαμβάνοντας επίσης υπόψη το γεγονός ότι τα τρανζίστορ φαινομένου πεδίου μπορούν να συνδεθούν παράλληλα (σε αντίθεση με τα διπολικά), είναι δυνατό να ληφθεί ένας ακόμη πιο ισχυρός καταρράκτης με εκατοντάδες αμπέρ.

Τώρα ας καταλάβουμε πώς ο μικροελεγκτής υλοποιεί το PWM και ας γράψουμε ένα πρόγραμμα. Όπως αναφέρθηκε προηγουμένως, το MK μας διαθέτει 3 χρονοδιακόπτες και όλοι μπορούν να λειτουργήσουν σε λειτουργία PWM. Θα εργαστούμε με χρονόμετρο/μετρητή 16-bit. Bits WGM13-10ρυθμίστε το χρονόμετρο μας για να λειτουργεί το FastPWM με ένα ανώτερο όριο καταμέτρησης ICR1. Η αρχή του προγράμματος είναι αυτή, ο χρονοδιακόπτης μας μετράει από 0 έως 65535 (0xFFFF), στον καταχωρητή ICR1εισάγουμε τον αριθμό 255, αυτό θα είναι το ανώτερο όριο της μέτρησης του χρονοδιακόπτη (TOP), η συχνότητα σήματος PWM θα είναι σταθερή. Επίσης, το χρονόμετρο μας έχει ρυθμιστεί έτσι ώστε όταν ο καταχωρητής μέτρησης και ο καταχωρητής σύγκρισης ταιριάζουν (TCNT1 = OCR1A), η έξοδος του ελεγκτή θα αλλάξει OC1A. Ο κύκλος λειτουργίας PWM μπορεί να αλλάξει γράφοντας στο μητρώο σύγκρισης OCR1Aένας συγκεκριμένος αριθμός από το 0 έως το 255, όσο μεγαλύτερος είναι αυτός ο αριθμός, τόσο μεγαλύτερος είναι ο κύκλος λειτουργίας, τόσο πιο φωτεινό θα καίει η λάμπα. Ανάλογα με το κουμπί που θα πατηθεί, η μεταβλητή αλλάζει. Εγώ, και στη συνέχεια εγγράφεται στο μητρώο OCR1A.

Το πλήρες κείμενο του προγράμματος παρουσιάζεται παρακάτω. Τα σχόλια περιγράφουν τη λειτουργία του προγράμματος με περισσότερες λεπτομέρειες.

/*** Μάθημα #8. Δημιουργία σημάτων PWM***/ #include #περιλαμβάνω int main(void) ( unsigned int i=0; //define i variable /***Ρύθμιση θυρών I/O***/ PORTB = 0x00; DDRB |= (1<< PB1); PORTD |= (1 << PD1)|(1 << PD0); // подключаем внутренние нагрузочные резисторы DDRD = 0x00; /***Настройка таймера***/ TCCR1A |= (1 << COM1A1)|(0 << COM1A0) // Установим биты COM1A1-COM1A0:0b10, означает сброс вывода канала A при сравнении |(1 << WGM11)|(0 << WGM10); // Установим биты WGM13-10:0b1110, согласно таблице это TCCR1B |= (1 << WGM13)|(1 << WGM12) // будет режим - FAST PWM, где верхний предел счета задается битом ICR1 |(0 << CS12)|(0 << CS11)|(1 << CS10); // Битами CS12-10:0b001 задаем источник тактового сигнала для таймера МК, включен без делителя TCNT1 = 0x00; // начальная установка счетчика ICR1 = 0xFF; // задаем период ШИМ, здесь у нас число 255, // по формуле fPWM=fclk_I/O/N*(1+ICR1)// вычисляем частоту ШИМ, она будет равна 15625 Hz OCR1A = 0x00; // начальный коэффициент заполнения ШИМ /***Основной цикл программы***/ while(1) { if((PIND&(1 << PD0)) == 0) //если кнопка "больше" нажата { if (i < 254) { // коэффициент заполнения ШИМ изменяется от 0 до 255 i=i+1; // увеличиваем i на единицу OCR1A = i; // записываем переменную в регистр сравнения _delay_ms(30); // задержка 30ms } } if((PIND&(1 << PD1)) == 0) //если кнопка "меньше" нажата { if (i >0) // Ο κύκλος λειτουργίας PWM αλλάζει από 255 σε 0 ( i--; // μείωση i κατά ένα (αυτό μπορεί επίσης να γραφτεί) OCR1A = i; // γράψτε τη μεταβλητή στον καταχωρητή σύγκρισης _delay_ms(30); // καθυστέρηση 30 ms ) ) ) )

Προσοχή!Πρώτα, τροφοδοτούμε τον μικροελεγκτή, στη συνέχεια πρέπει να βεβαιωθείτε ότι το τρανζίστορ είναι συνδεδεμένο στην έξοδο MK και μόνο τότε εφαρμόστε ισχύ στο κύκλωμα με τη λάμπα και το τρανζίστορ εφέ πεδίου. Διαφορετικά, μπορείτε να κάψετε το τρανζίστορ. Το γεγονός είναι ότι στην κατάσταση εκτός λειτουργίας, τα "πόδια" του MK "κρέμονται στον αέρα" - δεν συνδέονται με τίποτα και συμβαίνουν παρεμβολές σε αυτά. Αυτά τα αδύναμα pickup είναι αρκετά για να ανοίξουν μερικώς ένα πολύ ευαίσθητο τρανζίστορ φαινομένου πεδίου. Στη συνέχεια, η αντίστασή του μεταξύ της αποστράγγισης και της πηγής θα πέσει από μερικά megohms σε λίγα ohms ή κλάσματα του oh, και ένα μεγάλο ρεύμα θα ρέει μέσω αυτού προς τη λάμπα. Αλλά το τρανζίστορ δεν θα ανοίξει εντελώς, γιατί γι 'αυτό πρέπει να εφαρμόσετε όχι 1-3 V pickups στην πύλη, αλλά σταθερά 5 V και η αντίστασή του θα είναι πολύ υψηλότερη από την ελάχιστη. Αυτό θα οδηγήσει στην απελευθέρωση μεγάλης ποσότητας θερμότητας σε αυτό, και θα καπνίσει και πιθανώς θα καεί.

Γενικά, ο χρονοδιακόπτης έχει έναν καταχωρητή σύγκρισης OCR**και όταν η τιμή στο χρονόμετρο ταιριάζει με την τιμή του καταχωρητή σύγκρισης OCR** 2 πράγματα μπορούν να συμβούν:

  • Διακοπή
  • Αλλαγή της κατάστασης μιας εξωτερικής ακίδας σύγκρισης OC**

Τώρα μπορούμε να ρυθμίσουμε PWMόταν ο μετρητής φτάσει την τιμή OCR**τάση στο πόδι που επιλέξαμε OC**αλλάξτε από 5 σε 0. Όταν το χρονόμετρο μετρήσει μέχρι το τέλος και αρχίσει να μετράει, αλλάξτε πρώτα την τάση από 0 σε 5, θα έχουμε ορθογώνιους παλμούς στην έξοδο

Υπάρχουν 3 τρόποι λειτουργίαςPWM

STS(επαναφορά στον αγώνα) - Αυτό μπορεί να κληθεί CHIMΣήμα μοντελοποιημένου παλμικής συχνότητας όταν ο χρονοδιακόπτης μετράει στην τιμή OCR**μηδενίζει και αλλάζει τιμή OC**προς το αντίθετο. Έτσι ο κύκλος εργασίας PWMπάντα το ίδιο.

Αυτό χρησιμοποιείται όταν χρειάζεται να μετρήσετε ακριβείς περιόδους ή να δημιουργήσετε διακοπές μετά από ένα συγκεκριμένο χρονικό διάστημα.

Γρήγορο PWM(γρήγορο PWM) - ο μετρητής μετράει από το 0 έως το 255, μετά το οποίο επαναφέρεται στο 0.

Όταν η τιμή του χρονοδιακόπτη ταιριάζει OCR**η αντίστοιχη έξοδος επαναφέρεται στο 0, ρυθμίζεται στο 1 κατά την επαναφορά.

Τις περισσότερες φορές χρησιμοποιείται ως κανονικό PWM.

Phase Correct PWM(Phase Precise PWM) - Σε αυτήν τη λειτουργία, ο μετρητής μετράει από το 0 έως το 255 και στη συνέχεια μετρά αντίστροφα μέχρι το μηδέν. Στον πρώτο αγώνα με OCR**η έξοδος επαναφέρεται στο 0, με 2 αγώνες (όταν ο μετρητής επιστρέψει), ορίζεται στο 1.

Χρησιμοποιούνται για να μην χαθεί η φάση που αλλάζει ο κύκλος λειτουργίας.



Αν θέλουμε να δουλέψουμε με την έξοδο OC1Aβάλε τους ρυθμούς COM1A1 COM1A0
Γενικά "/" σημαίνει Ή. TCNT1= OCR1AΓια PWMστην έξοδο OC1A

Τρόπος λειτουργίας χρονοδιακόπτη/μετρητή- λειτουργία χρονοδιακόπτη/μετρητή.

Μπλουζα- Τιμή TCNT1 στην οποία αλλάζει η τιμή εξόδου OC**.

TOV1 Σημαία Ρύθμιση- σε ποιες τιμές έχει οριστεί το bit καταχωρητή GIFR

Επιλέγουμε από τον τελευταίο πίνακα τη λειτουργία που χρειαζόμαστε, μην κοιτάμε Μπλουζα. Από τους 2 πίνακες, επιλέξτε οποιαδήποτε από τις 2 τελευταίες επιλογές. Απομένει μόνο να τακτοποιήσουμε τα απαραίτητα bit στους καταχωρητές.

#define F_CPU 8000000UL #include #περιλαμβάνω int main() ( DDRD = 0xFF; OCR1A=0xC0; // Σύγκριση με αυτήν την τιμή OCR1B=0x40; //Ρύθμιση PWM και χρονοδιακόπτη TCCR1A|=(1<CS10ρυθμισμένο στο 1, μετράει με τη συχνότητα MK για το πώς να ρυθμίσετε τη συχνότητα του χρονοδιακόπτη

Ένας από τους καλύτερους μεταγλωττιστές για μια γλώσσα που μοιάζει με Basic για τη σειρά AVR μικροελεγκτών οκτώ bit.

Το περιβάλλον ανάπτυξης FastAVR χαρακτηρίζεται από μια βολική, στοχαστική διεπαφή και περιλαμβάνει πρόγραμμα επεξεργασίας, συναρμολογητή, μεταγλωττιστή και προγραμματιστή μικροελεγκτή. Η εφαρμογή διαθέτει επισήμανση εντολών, φιλική διεπαφή και πολλές άλλες λύσεις που έχουν σχεδιαστεί για να διευκολύνουν τη διαδικασία δημιουργίας και εντοπισμού σφαλμάτων προγραμμάτων. Το FastAVR χρησιμοποιεί διευθυνσιοδότηση οκτώ αντί δεκαέξι bit και συγκρίνεται ευνοϊκά με άλλους μεταγλωττιστές παράγοντας εξαιρετικά συμπαγή κώδικα (ειδικά για ελεγκτές με λιγότερα από 256 byte μνήμης RAM). Επιπλέον, στο πρόγραμμα είναι ενσωματωμένες πρόσθετες λειτουργίες μιας γεννήτριας χαρακτήρων για LCD, μια αριθμομηχανή με χρονοδιακόπτη και ένα τερματικό. Η λίστα των υποστηριζόμενων συσκευών μικροελεγκτή από το AVR περιλαμβάνει τις σειρές: 2313, 2323, 2333, 4433, 8515, 8535, ATiny13, ATiny26, ATmega163, Atmega8, Atmega16, Atmega32, ATme many.

Η γλώσσα που χρησιμοποιείται στο FastAVR αποτελείται από οικείες Βασικές εντολές, οι οποίες έχουν ενισχυθεί σημαντικά με πρόσθετες χρήσιμες λειτουργίες (I2C, 1-Wire, LCD και ορισμένες άλλες). Ο μεταγλωττιστής υποστηρίζει δομημένο προγραμματισμό, ο οποίος βελτιώνει την αναγνωσιμότητα των προγραμμάτων. Αυτή η εφαρμογή μεταγλωττίζει το πρόγραμμα που βρίσκεται στο παράθυρο του ενεργού προγράμματος επεξεργασίας σε τυπικό κώδικα συναρμολόγησης AVR χρησιμοποιώντας το δωρεάν πρόγραμμα συναρμολόγησης της Atmel (μέρος του . Ως αποτέλεσμα της μεταγλώττισης και εάν δεν υπάρχουν σφάλματα στο κείμενο προέλευσης, δημιουργείται ένα αρχείο με την επέκταση *.asm. Το περιβάλλον προγραμματισμού εξάγει τον παραγόμενο κώδικα στο assembler, ο οποίος είναι χρήσιμος για έμπειρους προγραμματιστές.

Το FastAVR μπορεί να χρησιμοποιήσει σχεδόν οποιονδήποτε υπάρχοντα προγραμματιστή εντός κυκλώματος για ελεγκτές AVR που είναι συνδεδεμένοι σε σειριακή ή παράλληλη θύρα. Ο πηγαίος κώδικας του προγράμματος πληκτρολογείται σαν κανονικό κείμενο με τη μορφή συμβόλων στον ενσωματωμένο επεξεργαστή αυτού του λογισμικού. Εκτός από την εμφάνιση του κειμένου προέλευσης, το πρόγραμμα επεξεργασίας FastAVR επεξεργάζεται ανεξάρτητα το πρόγραμμα, επισημαίνει εντολές, μεταβλητές και άλλα δεδομένα με χρώμα. Υποστηρίζει επίσης μια δυνατότητα εναλλαγής για στοίχιση μπλοκ κειμένου. Ο κώδικας του προγράμματος μπορεί να προβληθεί και να επεξεργαστεί σε οποιοδήποτε κοινό πρόγραμμα επεξεργασίας. Ωστόσο, όταν γράφετε ένα πρόγραμμα, πρέπει να ακολουθείτε έναν αριθμό κανόνων που δίνονται από τη σύνταξη FastAVR. Για παράδειγμα, σε κάθε πρόγραμμα, ο μεταγλωττιστής πρέπει να καθορίσει τον τύπο του ελεγκτή που χρησιμοποιείται, την ταχύτητα του ρολογιού και το μέγεθος της στοίβας του προγράμματος. Τέτοιες ειδικές οδηγίες (μεταοδηγίες) δεν μετατρέπονται σε κώδικα συναρμολόγησης.

Δεδομένου ότι η οικογένεια μικροελεγκτών AVR αποθηκεύει δεδομένα και κώδικα σε διαφορετικές περιοχές της μνήμης, όταν εργάζονται με το πρόγραμμα FastAVR, οι προγραμματιστές πρέπει να καθορίσουν πού θα τοποθετηθούν τα δεδομένα στη μνήμη. Ο μεταγλωττιστής τακτοποιεί αυτόματα τον κώδικα του προγράμματος.

Το FastAVR δημιουργήθηκε από τον Bojan Ivancic από τη Σλοβενία ​​και είναι προϊόν της MicroDESIGN. Δυστυχώς, ο συγγραφέας εγκατέλειψε το έργο του, ο ιστότοπός του δεν λειτουργεί και τα τηλέφωνα υποστήριξης δεν απαντούν. Η ίδια η εφαρμογή δεν έχει ενημερωθεί εδώ και πολύ καιρό και, ως εκ τούτου, ο μεταγλωττιστής δεν υποστηρίζει τα πιο πρόσφατα μοντέλα ελεγκτών Atmel.

Το πρόγραμμα FastAVR πληρώθηκε. Χωρίς την εισαγωγή του κωδικού εγγραφής, το περιβάλλον ανάπτυξης ξεκινά μόνο σε λειτουργία επίδειξης, η οποία έχει σημαντικούς περιορισμούς. Αυτήν τη στιγμή μπορείτε να κατεβάσετε την εφαρμογή από τον παρακάτω σύνδεσμο. Η συναρμολόγηση που παρουσιάζεται περιλαμβάνει την πιο πρόσφατη έκδοση εργασίας του προγράμματος, αρχεία βοήθειας στα Αγγλικά, παραδείγματα.

Αυτό το προϊόν γράφτηκε στα αγγλικά. Δεν υπάρχει ρωσοποιητής για αυτό.

Το FastAVR εκτελείται σε Microsoft Windows. Η εφαρμογή λειτουργεί σωστά στα λειτουργικά συστήματα 98SE, NT4, 2000 και XP.