Εισαγωγή στους μικροελεγκτές AVR

Τα πρώτα υπολογιστικά συστήματα CPU, σχεδιάστηκαν και υλοποιήθηκαν με χρήση ενός αριθμού από ηλεκτρονικές λυχνίες κενού. Οι ηλεκτρονικές λυχνίες είναι ογκώδης και καταναλώνουν αυξημένη ηλεκτρική ενέργεια. Η ανακάλυψη του τρανζίστορ και των μετέπειτα ολοκληρωμένων κυκλωμάτων IC, έδωσαν μεγάλη ανάπτυξη στις CPUs,  που τώρα τοποθετούνται πάνω σε τυπωμένα κυκλώματα PCB. Η μετέπειτα τεχνολογία των IC, επιτρέπει την τοποθέτηση ολόκληρης της CPU πάνω σε ένα IC τσιπ. Αυτό το CPU ονομάζεται μικροεπεξεργαστής. Μερικοί μικροεπεξεργαστές είναι η οικογένεια x86 της Intel που χρησιμοποιούνται στους προσωπικούς υπολογιστές και ο μικροεπεξεργαστής 68000 της Motorola. Οι μικροεπεξεργαστές δεν περιέχουν RAM, ROM ή I/O περιφερειακά. Έτσι θα πρέπει να συνδεθούν εξωτερικά με RAM, ROM και κυκλώματα Ι/Ο.

Οι μικροελεγκτές σαν ολοκληρωμένοι μικροϋπολογιστές, περιλαμβάνουν στο ίδιο ολοκληρωμένο κύκλωμα την CPU (κεντρική μονάδα επεξεργασίας) τις μνήμες RAM και ROM και τα απαραίτητα περιφερειακά κυκλώματα. Οι μικροελεγκτές αυτοί είναι ουσιαστικά πλήρη μικροϋπολογιστικά συστήματα, που χρειάζονται ελάχιστα εξωτερικά εξαρτήματα για τις περισσότερες εφαρμογές στις οποίες απευθύνονται να λειτουργήσουν. Παραδείγματα τέτοιων εφαρμογών είναι συστήματα συναγερμών, συστήματα ελέγχου οικιακών συσκευών, αυτομάτων θυρών κ.ά.

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

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

Οι μικροελεγκτές έχουν συνήθως αρχιτεκτονική Harvard, που σημαίνει ότι η περιοχή μνήμης που διατίθεται για την αποθήκευση του προγράμματος (μνήμη Flash) διευθυνσιοδοτείται ανεξάρτητα από εκείνη τη μνήμη που χρησιμοποιείται για την προσωρινή αποθήκευση μεταβλητών (μνήμη SRAM) ή των τιμών για την διαμόρφωση του συστήματος (μνήμη EEPROM).

Ένα χαρακτηριστικό παράδειγμα σύγχρονων μικροελεγκτών είναι οι μικροελεγκτές AVR της εταιρείας ATMEL. Αυτοί οι μικροελεγκτές είναι 8bit, που σημαίνει ότι ο δίαυλος δεδομένων έχει πλάτος 8bit. Οι μικροελεγκτές AVR προσφέρονται σε μια ποικιλία αριθμού ακροδεκτών. Οι απλούστεροι από αυτούς, αποτελούνται από μικρά και φθηνά ολοκληρωμένα των 8 ακροδεκτών, κατάλληλα για εφαρμογές πολύ χαμηλού κόστους με περιορισμένες απαιτήσεις σε πλήθος προγραμματιζόμενων ακροδεκτών γενικού σκοπού. Οι πιο εξελιγμένοι μικροελεγκτές της οικογένειας, διαθέτουν περισσότερους από 60 προγραμματιζόμενους ακροδέκτες γενικού σκοπού. Επίσης πολλά μέλη της σειράς, διατίθενται σε τρεις παραλλαγές: τους απλούς μικροελεγκτές που λειτουργούν στα 5V, τους χαμηλής κατανάλωσης στα 2,7V (κατάληξη L) και τους πολύς χαμηλής κατανάλωσης στα 1,8V (κατάληξη V).

Οι ακροδέκτες γενικού σκοπού, μπορούν να κάνουν περισσότερες από μια λειτουργίες, όπως για παράδειγμα, είσοδοι με δυνατότητα πρόκλησης διακοπών (interrupt) στην εσωτερική CPU, είσοδοι κεντρικού ρολογιού (oscillator) ή ασύγχρονης οδήγησης μετρητών (counter), ακροδέκτες για σύνδεση με διάφορες διεπαφές όπως τις σειριακές θύρες (USRT) καθώς τις SPI και τις I2C.

Στο εσωτερικό ενός μικροελεγκτή, όπως ο AVR, υπάρχει ένα πλήθος από διαφορετικούς τύπους μνήμης, όπως εκείνης της Flash για την εγγραφή του προγράμματος του συστήματος (firmware), η μνήμη EEPROM για την αποθήκευση διάφορων παραμέτρων διευθέτησης, καθώς και ένα πλήθος θέσεων μνήμης RAM για τις μεταβλητές του λογισμικού.

Ο μικροελεγκτής AVR είναι ο πρώτος από τους μικροελεγκτές που χρησιμοποιεί on-chip Flash μνήμη, για την αποθήκευση της μνήμης προγράμματος. Η μνήμη flash είναι ιδανική για γρήγορη ανάπτυξη εφαρμογών, διότι μπορεί να σβηστεί σε λίγα δευτερόλεπτα, σε αντίθεση των 20 λεπτών που απαιτεί η μνήμη UV-EPROM.

Όπως θα δούμε σε επόμενα εδάφια, η μνήμη RAM χωρίζεται σε τρία συστατικά: τους γενικής χρήσης καταχωρητές, την Ι/Ο μνήμη και την εσωτερική μνήμη SRAM. Υπάρχουν 32 γενικής χρήσης καταχωρητές σε όλους τους AVR, αλλά τα μεγέθη της SRAM και της Ι/Ο μνήμης είναι διαφορετικά από τσιπ σε τσιπ.

Ένα από τα προβλήματα των AVR μικροελεγκτών είναι ότι, δεν είναι όλοι 100% συμβατοί μεταξύ τους όταν μεταφέρουμε τον κώδικα από τον ένα μικροελεγκτή στον άλλο. Για παράδειγμα, αν θέλουμε να τρέξουμε κώδικα που έχει γραφεί για τον ΑΤtiny85, για να τον τρέξουμε στον ΑΤmega64, θα πρέπει να μεταγλωττίσουμε κάνουμε ξανά τον κώδικα και πιθανόν θα πρέπει να διορθώσουμε τα δεδομένα των καταχωρητών πριν το φορτώσουμε στο ATmega64.