- Αρχιτεκτονική και εφαρμογές μικροελεγκτή PIC:
- Επιλογή μικροελεγκτή PIC για τα σεμινάρια μας:
- Επιλογή λογισμικού για τα σεμινάρια μας:
- Προετοιμασία με υλικό:
Το 1980, η Intel ανέπτυξε τον πρώτο μικροελεγκτή (8051) με το Harvard Architecture 8051 και έκτοτε οι μικροελεγκτές έφεραν μια επανάσταση στην ηλεκτρονική και την ενσωματωμένη βιομηχανία. Και με την τεχνολογική πρόοδο με την πάροδο του χρόνου, τώρα έχουμε πολλούς πιο αποτελεσματικούς και χαμηλής ισχύος μικροελεγκτές όπως AVR, PIC, ARM. Αυτοί οι μικροελεγκτές είναι πιο ικανοί και εύχρηστοι, έχοντας τα πιο πρόσφατα πρωτόκολλα επικοινωνίας όπως USB, I2C, SPI, CAN κ.λπ. Ακόμα και οι Arduino και Raspberry Pi έχουν αλλάξει εντελώς την προοπτική έναντι των μικροελεγκτών και το Raspberry Pi δεν είναι απλώς ένας μικροελεγκτής αλλά έχει ολόκληρο υπολογιστή μέσα.
Αυτό θα είναι το πρώτο μέρος μιας σειράς σεμιναρίων που δεν έχουν ακόμη έρθει, τα οποία θα σας βοηθήσουν να μάθετε τους μικροελεγκτές PIC. Εάν είστε από ένα ηλεκτρονικό υπόβαθρο και θέλετε πάντα να ξεκινήσετε να μαθαίνετε μερικούς μικροελεγκτές και να μπείτε στον κόσμο της κωδικοποίησης και της δημιουργίας, τότε αυτή η σειρά σεμιναρίων θα είναι το πρώτο σας βήμα για να ξεκινήσετε.
Ο μικροελεγκτής PIC είναι μια πολύ βολική επιλογή για να ξεκινήσετε με έργα μικροελεγκτή, επειδή διαθέτει άριστα φόρουμ υποστήριξης και θα λειτουργήσει ως μια ισχυρή βάση για να βασιστεί σε όλους τους προηγμένους μικροελεγκτές που δεν έχετε ακόμη μάθει.
Αυτά τα σεμινάρια γίνονται για απόλυτους ή ενδιάμεσους μαθητές. έχουμε προγραμματίσει να ξεκινήσουμε με τα πιο βασικά έργα για τα προηγμένα. Δεν περιμένουμε προαπαιτούμενα από τους μαθητές καθώς είμαστε εδώ για να σας βοηθήσουμε από οποιοδήποτε επίπεδο. Κάθε σεμινάριο θα έχει μια θεωρητική εξήγηση και προσομοίωση ακολουθούμενο από ένα πρακτικό σεμινάριο. Αυτά τα μαθήματα δεν θα περιλαμβάνουν πίνακες ανάπτυξης, θα φτιάξουμε τα δικά μας κυκλώματα χρησιμοποιώντας έναν πίνακα διανομής. Προετοιμαστείτε, και αφιερώστε λίγο χρόνο κάθε εβδομάδα για να σας βελτιώσει με τους Μικροελεγκτές.
Τώρα ας ξεκινήσουμε με μια απλή εισαγωγή στους μικροελεγκτές PIC και κάποιες ρυθμίσεις λογισμικού για να ξεκινήσουμε το επόμενο σεμινάριό μας. Ελέγξτε το βίντεο στο τέλος για εγκατάσταση και ρύθμιση των MPLABX, XC8, Proteus και γρήγορη αποσυμπίεση του προγραμματιστή PICkit 3.
Αρχιτεκτονική και εφαρμογές μικροελεγκτή PIC:
Ο μικροελεγκτής PIC εισήχθη από την Microchip Technologies το 1993. Αρχικά αυτά τα PIC αναπτύχθηκαν για να αποτελούν μέρος των υπολογιστών PDP (Programmed Data Processor) και κάθε περιφερειακή συσκευή του υπολογιστή διασυνδέθηκε χρησιμοποιώντας αυτόν τον μικροελεγκτή PIC. Ως εκ τούτου, το PIC παίρνει το όνομά του όπως για τον περιφερειακό ελεγκτή διασύνδεσης. Αργότερα η Microchip έχει αναπτύξει πολλά IC σειρών PIC τα οποία μπορούν να χρησιμοποιηθούν για οποιαδήποτε μικρή εφαρμογή όπως μια εφαρμογή φωτισμού μέχρι την προηγμένη.
Κάθε μικροελεγκτής πρόκειται να χτιστεί γύρω από κάποια αρχιτεκτονική, ο πιο διάσημος τύπος Αρχιτεκτονικής είναι η αρχιτεκτονική του Χάρβαρντ, το PIC μας βασίζεται σε αυτήν την αρχιτεκτονική καθώς ανήκει στην κλασική οικογένεια 8051. Ας δούμε μια μικρή εισαγωγή για την αρχιτεκτονική του Χάρβαρντ του PIC.
Ο μικροελεγκτής PIC16F877A αποτελείται από μια ενσωματωμένη θύρα CPU, θύρες εισόδου / εξόδου, οργάνωση μνήμης, μετατροπέα A / D, χρονοδιακόπτες / μετρητές, διακοπές, σειριακή επικοινωνία, ταλαντωτή και μονάδα CCP που συλλέγουν καθιστούν το IC έναν ισχυρό μικροελεγκτή για αρχάριους. Το γενικό μπλοκ διάγραμμα της αρχιτεκτονικής PIC φαίνεται παρακάτω
CPU (Κεντρική μονάδα επεξεργασίας):
Ο μικροελεγκτής διαθέτει CPU για την εκτέλεση αριθμητικών λειτουργιών, λογικών αποφάσεων και λειτουργιών σχετικών με τη μνήμη. Η CPU πρέπει να συντονιστεί μεταξύ της μνήμης RAM και των άλλων περιφερειακών του μικροελεγκτή.
Αποτελείται από ένα ALU (Arithmetic Logic Unit), χρησιμοποιώντας το οποίο εκτελεί τις αριθμητικές πράξεις και τις λογικές αποφάσεις. Υπάρχει επίσης ένα MU (μονάδα μνήμης) για την αποθήκευση των οδηγιών μετά την εκτέλεση. Αυτό το MU αποφασίζει το μέγεθος προγράμματος του MC μας. Αποτελείται επίσης από ένα CU (Μονάδα Ελέγχου) που λειτουργεί ως δίαυλος επικοινωνίας μεταξύ της CPU και άλλων περιφερειακών του μικροελεγκτή. Αυτό βοηθά στην ανάκτηση των δεδομένων μετά την επεξεργασία τους στους καθορισμένους καταχωρητές.
Μνήμη τυχαίας προσπέλασης (RAM):
Μνήμη τυχαίας προσπέλασης είναι αυτή που αποφασίζει την ταχύτητα του μικροελεγκτή μας. Η μνήμη RAM αποτελείται από καταχωρημένες τράπεζες εντός αυτής, στις οποίες ανατίθεται μια συγκεκριμένη εργασία. Συνολικά μπορούν να ταξινομηθούν σε δύο τύπους:
- Μητρώο γενικού σκοπού (GPR)
- Μητρώο Ειδικής Λειτουργίας (SFR)
Όπως υποδηλώνει το όνομα, το GPR χρησιμοποιείται για γενικές λειτουργίες μητρώου όπως προσθήκη, αφαίρεση κ.λπ. Αυτές οι λειτουργίες περιορίζονται εντός 8-bit. Όλοι οι καταχωρητές βάσει του GPR είναι εγγράψιμοι και αναγνώσιμοι από τον χρήστη. Δεν έχουν καμία λειτουργία από μόνες τους, εκτός εάν έχει καθοριστεί λογισμικό.
Ενώ το SFR χρησιμοποιείται για την εκτέλεση πολύπλοκων ειδικών λειτουργιών που περιλαμβάνουν επίσης περίπου 16-bit χειρισμό, οι καταχωρητές τους μπορούν να διαβαστούν μόνο (R) και δεν μπορούμε να γράψουμε (W) τίποτα σε αυτά. Επομένως, αυτοί οι καταχωρητές έχουν προκαθορισμένες λειτουργίες για εκτέλεση, οι οποίες έχουν καθοριστεί τη στιγμή της κατασκευής και απλώς εμφανίζουν το αποτέλεσμα σε εμάς, χρησιμοποιώντας τα οποία μπορούμε να εκτελέσουμε κάποιες σχετικές λειτουργίες.
Μνήμη μόνο για ανάγνωση (ROM):
Η μνήμη μόνο για ανάγνωση είναι το μέρος όπου αποθηκεύεται το πρόγραμμά μας. Αυτό αποφασίζει το μέγιστο μέγεθος του προγράμματος μας. Ως εκ τούτου καλείται επίσης ως μνήμη προγράμματος. Όταν το MCU βρίσκεται σε λειτουργία, το πρόγραμμα που είναι αποθηκευμένο στο ROM εκτελείται σύμφωνα με κάθε κύκλο οδηγιών. Αυτή η μονάδα μνήμης μπορεί να χρησιμοποιηθεί μόνο κατά τον προγραμματισμό του PIC, κατά την εκτέλεση γίνεται μνήμη μόνο για ανάγνωση.
Ηλεκτρικά διαγράψιμη προγραμματιζόμενη μνήμη μόνο για ανάγνωση (EEPROM):
Το EEPROM είναι ένας άλλος τύπος μονάδας μνήμης. Σε αυτήν τη μονάδα μνήμης οι τιμές μπορούν να αποθηκευτούν κατά την εκτέλεση του προγράμματος. Οι τιμές που αποθηκεύονται εδώ μπορούν να διαγραφούν μόνο ηλεκτρικά. Αυτές οι τιμές θα διατηρηθούν στο PIC ακόμα και όταν το IC είναι απενεργοποιημένο. Μπορούν να χρησιμοποιηθούν ως μικρός χώρος μνήμης για την αποθήκευση των εκτελεσμένων τιμών. Ωστόσο, ο χώρος μνήμης θα είναι πολύ μικρότερος στις στροφές του KB.
Μνήμη Flash :
Η μνήμη Flash είναι επίσης προγραμματιζόμενη μνήμη μόνο για ανάγνωση (PROM) στην οποία μπορούμε να διαβάζουμε, να γράφουμε και να διαγράφουμε το πρόγραμμα χιλιάδες φορές. Γενικά, ο μικροελεγκτής PIC χρησιμοποιεί αυτόν τον τύπο ROM.
Θύρες I / O
- Το PIC16F877A μας αποτελείται από πέντε θύρες, συγκεκριμένα Port A, Port B, Port C, Port D & Port E.
- Και από τα πέντε PORTS μόνο το Port A είναι 16-bit και το PORT E είναι 3-bit. Τα υπόλοιπα PORTS είναι 8-bit.
- Οι καρφίτσες σε αυτά τα PORTS μπορούν να χρησιμοποιηθούν είτε ως είσοδος ή έξοδος, με βάση τη διαμόρφωση TRIS Register.
- Εκτός από την εκτέλεση λειτουργιών I / O, οι ακίδες μπορούν επίσης να χρησιμοποιηθούν για Ειδικές λειτουργίες όπως SPI, Interrupt, PWM κ.λπ.
Λεωφορείο:
Ο όρος Bus είναι απλώς μια δέσμη καλωδίων που συνδέει τη συσκευή εισόδου ή εξόδου με CPU και RAM.
Ο δίαυλος δεδομένων χρησιμοποιείται για τη μεταφορά ή τη λήψη των δεδομένων.
Ο δίαυλος διευθύνσεων χρησιμοποιείται για τη μετάδοση της διεύθυνσης μνήμης από τα περιφερειακά στη CPU. Οι ακίδες I / O χρησιμοποιούνται για τη διασύνδεση των εξωτερικών περιφερειακών. Τα πρωτόκολλα σειριακής επικοινωνίας UART και USART χρησιμοποιούνται για διασύνδεση σειριακών συσκευών όπως GSM, GPS, Bluetooth, IR κ.λπ.
Επιλογή μικροελεγκτή PIC για τα σεμινάρια μας:
Οι μικροελεγκτές PIC της Microchip Company χωρίζονται σε 4 μεγάλες οικογένειες. Κάθε οικογένεια διαθέτει μια ποικιλία συστατικών που παρέχουν ενσωματωμένα ειδικά χαρακτηριστικά:
- Η πρώτη οικογένεια, PIC10 (10FXXX) - ονομάζεται Low End.
- Η δεύτερη οικογένεια, PIC12 (PIC12FXXX) - ονομάζεται Mid-Range.
- Η τρίτη οικογένεια είναι το PIC16 (16FXXX).
- Η τέταρτη οικογένεια είναι PIC 17/18 (18FXXX)
Εφόσον αρχίζουμε να μαθαίνουμε για το PIC, ας επιλέξουμε ένα IC που χρησιμοποιείται και είναι διαθέσιμο παγκοσμίως. Αυτό το IC ανήκει στην οικογένεια 16F, ο αριθμός εξαρτήματος του IC είναι PIC16F877A. Από το πρώτο σεμινάριο έως το τέλος θα χρησιμοποιούμε το ίδιο IC με αυτό το IC είναι εξοπλισμένο με όλες τις προηγμένες δυνατότητες όπως SPI, I2C και UART κ.λπ. προχωρήστε σε κάθε σεμινάριο και τελικά χρησιμοποιείτε όλες τις παραπάνω δυνατότητες.
Μόλις επιλεγεί το IC, είναι πολύ σημαντικό να διαβάσετε το φύλλο δεδομένων του IC. Αυτό πρέπει να είναι το πρώτο βήμα σε όποια ιδέα πρόκειται να δοκιμάσουμε. Τώρα, αφού έχουμε επιλέξει αυτό το PIC16F877A, ας διαβάσουμε τις προδιαγραφές αυτού του IC στο φύλλο δεδομένων.
Το Περιφερειακό χαρακτηριστικό, αναφέρει ότι έχει 3 χρονοδιακόπτες, δύο εκ των οποίων είναι 8-bit και ένα είναι 16-bit prescaler. Αυτά τα χρονόμετρα χρησιμοποιούνται για τη δημιουργία λειτουργιών χρονισμού στο πρόγραμμά μας. Μπορούν επίσης να χρησιμοποιηθούν ως μετρητές. Δείχνει επίσης ότι έχει επιλογές CCP (Σύλληψη λήψης και PWM), που μας βοηθούν να δημιουργήσουμε σήματα PWM και να διαβάσουμε τα εισερχόμενα σήματα συχνότητας. Για επικοινωνία με εξωτερική συσκευή, διαθέτει SPI, I2C, PSP και USART. Για λόγους ασφαλείας, είναι εξοπλισμένο με Brown-out Reset (BOR), το οποίο βοηθά στην επαναφορά του προγράμματος while.
Τα αναλογικά χαρακτηριστικά, υποδηλώνει ότι το IC διαθέτει 10-bit ADC 8-καναλιών. Αυτό σημαίνει ότι το IC μπορεί να μετατρέψει τις αναλογικές τιμές σε ψηφιακή με ανάλυση 10-bit και διαθέτει 8 αναλογικές ακίδες για να τις διαβάσει. Έχουμε επίσης δύο εσωτερικούς συγκριτές που μπορούν να χρησιμοποιηθούν για να συγκρίνουν την εισερχόμενη τάση απευθείας χωρίς να τις διαβάσουν πραγματικά μέσω του λογισμικού.
Οι Ειδικές Λειτουργίες Μικροελεγκτή, δηλώνουν ότι έχει 100.000 κύκλους διαγραφής / εγγραφής, που σημαίνει ότι μπορείτε να τον προγραμματίσετε για περίπου 100.000 φορές. In-Circuit Serial Programming ™ (ICSP ™), μας βοηθά να προγραμματίσουμε το IC απευθείας χρησιμοποιώντας το PICKIT3. Ο εντοπισμός σφαλμάτων μπορεί να γίνει μέσω In-Circuit Debug (ICD). Ένα άλλο χαρακτηριστικό ασφαλείας είναι το χρονόμετρο Watchdog (WDT), το οποίο είναι ένα αξιόπιστο χρονόμετρο που επαναφέρει ολόκληρο το πρόγραμμα εάν απαιτείται.
Η παρακάτω εικόνα αντιπροσωπεύει τα pinouts του PIC16F877A IC μας. Αυτή η εικόνα αντιπροσωπεύει κάθε πινέλο έναντι του ονόματος και των άλλων χαρακτηριστικών του. Αυτό μπορεί επίσης να βρεθεί στο φύλλο δεδομένων. Κρατήστε αυτήν την εικόνα εύχρηστη γιατί θα μας βοηθήσει κατά τη διάρκεια του υλικού μας.
Επιλογή λογισμικού για τα σεμινάρια μας:
Ο μικροελεγκτής PIC μπορεί να προγραμματιστεί με διαφορετικά λογισμικά που διατίθενται στην αγορά. Υπάρχουν άνθρωποι που εξακολουθούν να χρησιμοποιούν τη γλώσσα Συνέλευσης για τον προγραμματισμό των PIC MCU. Για τα σεμινάρια μας επιλέξαμε το πιο προηγμένο λογισμικό και μεταγλωττιστή που έχει αναπτυχθεί από την ίδια την Microchip.
Για να προγραμματίσουμε τον μικροελεγκτή PIC θα χρειαστούμε ένα IDE (Integrated Development Environment), όπου θα πραγματοποιείται ο προγραμματισμός. Ένας μεταγλωττιστής, όπου το πρόγραμμά μας μετατρέπεται σε μορφή αναγνώσιμη από MCU που ονομάζεται αρχεία HEX. Ένα IPE (Ολοκληρωμένο Περιβάλλον Προγραμματισμού), το οποίο χρησιμοποιείται για την απόρριψη του hex αρχείου μας στις PIC MCUs μας.
IDE: MPLABX v3.35
IPE: MPLAB IPE v3.35
Μεταγλωττιστής: XC8
Η Microchip έχει δώσει και τα τρία αυτά λογισμικά δωρεάν. Μπορούν να ληφθούν απευθείας από την επίσημη σελίδα τους. Παρέχω επίσης το σύνδεσμο για την εξυπηρέτησή σας. Μετά τη λήψη, εγκαταστήστε τα στον υπολογιστή σας. Εάν έχετε κάποιο πρόβλημα, μπορείτε να δείτε το βίντεο που δίνεται στο τέλος.
Για σκοπούς προσομοίωσης χρησιμοποιήσαμε λογισμικό που ονομάζεται PROTEUS 8, το οποίο παρέχεται από την Labcenter. Αυτό το λογισμικό μπορεί να χρησιμοποιηθεί για την προσομοίωση του κώδικα που δημιουργείται χρησιμοποιώντας το MPLABX. Υπάρχει ένα δωρεάν λογισμικό επίδειξης που μπορείτε να κατεβάσετε από την επίσημη σελίδα τους μέσω του συνδέσμου.
Προετοιμασία με υλικό:
Όλα τα σεμινάρια μας θα καταλήξουν σε υλικό. Για να μάθετε το PIC με τον καλύτερο δυνατό τρόπο, συνιστάται πάντα να ελέγχετε τους κωδικούς και τα κυκλώματά μας μέσω υλικού, επειδή η αξιοπιστία της προσομοίωσης είναι πολύ μικρότερη. Οι κωδικοί που λειτουργούν σε λογισμικό προσομοίωσης, ενδέχεται να μην λειτουργούν όπως περιμένατε στο υλικό σας. Ως εκ τούτου, θα χτίζουμε τα δικά μας κυκλώματα σε πίνακες Perf για να απορρίψουμε τους κωδικούς μας.
Για να πετάξουμε ή να ανεβάσουμε τον κωδικό μας στο PIC, θα χρειαζόμαστε το PICkit 3. Ο προγραμματιστής / εντοπιστής σφαλμάτων PICkit 3 είναι ένας απλός, χαμηλού κόστους εντοπιστής σφαλμάτων κυκλώματος που ελέγχεται από υπολογιστή με λογισμικό MPLAB IDE (v8.20 ή μεγαλύτερο) μια πλατφόρμα Windows. Ο προγραμματιστής / εντοπιστής σφαλμάτων PICkit 3 αποτελεί αναπόσπαστο μέρος της σουίτας εργαλείων του προγραμματιστή ανάπτυξης. Εκτός από αυτό θα χρειαστούμε και άλλο υλικό όπως Perf board, Soldering station, PIC ICs, Crystal ταλαντωτές, πυκνωτές κ.λπ. Αλλά θα τα προσθέσουμε στη λίστα μας καθώς προχωράμε στα μαθήματά μας.
Έφερα το PICkit 3 μου από το amazon, το βίντεο unboxing του ίδιου μπορεί να βρεθεί στο παρακάτω βίντεο. Παρέχεται επίσης ο σύνδεσμος για το PICKIT3. η τιμή μπορεί να είναι λίγο υψηλή, αλλά πιστέψτε με αξίζει να επενδύσετε.