Τα πρώτα υπολογιστικά συστήματα CPU σχεδιάστηκαν και υλοποιήθηκαν με χρήση ενός αριθμού ηλεκτρονικών λυχνιών κενού. Οι ηλεκτρονικές λυχνίες είναι ογκώδης και καταναλώνουν αυξημένη ηλεκτρική ενέργεια. Η ανακάλυψη του τρανζίστορ και τα μετέπειτα ολοκληρωμένα κυκλώματα IC έδωσαν μεγάλη ανάπτυξη στις CPUs που τώρα τοποθετούνται πάνω σε τυπωμένα κυκλώματα PCB. Η μετέπειτα τεχνολογία των IC επιτρέπει την τοποθέτηση ολόκληρης της CPU πάνω σε ένα IC τσιπ. Αυτό το CPU ονομάζεται μικροεπεξεργαστής. Μερικοί μικροεπεξεργαστές είναι η οικογένεια x86 της Intel που χρησιμοποιούνται στους επιτραπέζιους επεξεργαστές και το 68000 της Motorola. Οι μικροεπεξεργαστές δεν περιέχουν RAM, ROM ή I/O περιφερειακά. Έτσι θα πρέπει να συνδεθούν εξωτερικά με RAM, ROM και Ι/Ο.
Στο επόμενο βήμα της τεχνολογικής ανάπτυξης, τα διάφορα τμήματα συμπεριλαμβανομένου της CPU, της RAM, της ROM και των Ι/Οs τοποθετούνται στο ίδιο IC τσιπ που ονομάζεται μικροελεγκτής ή MCU (Micro Controller Unit)
Τύποι υπολογιστών
Τυπικά, οι υπολογιστές χωρίζονται σε τρεις κατηγορίες: επιτραπέζιοι, διακομιστές και ειδικευμένα υπολογιστικά συστήματα.
Οι επιτραπέζιοι υπολογιστές (desktop computers) συμπεριλαμβανομένων των PCs, tablets και laptops είναι γενικού σκοπού υπολογιστές. Αυτοί μπορούν να χρησιμοποιηθούν σαν παιχνιδομηχανές, για διάβασμα και συγγραφή κειμένων και οποιαδήποτε άλλη εργασία με το τρέξιμο της ανάλογης εφαρμογής.
Σε αντίθεση τα ειδικευμένα υπολογιστικά συστήματα (embedded systems) κάνουν καθορισμένες υπολογιστικές εργασίες. Σε αυτά το λογισμικό και το υλικό σχεδιάζονται μαζί για να εκτελούν μια συγκεκριμένη λειτουργία. Σε αυτή την κατηγορία ανήκει ο εκτυπωτής, σαν παράδειγμα ειδικευμένου συστήματος, διότι ο επεξεργαστής που έχει εκτελεί μόνο μια εργασία, παίρνει τα δεδομένα και τα εκτυπώνει. Στις περισσότερες περιπτώσεις τα ειδικευμένα υπολογιστικά συστήματα τρέχουν συγκεκριμένο πρόγραμμα που δεν αλλάζει.
Οι διακομιστές (servers) είναι ταχύς υπολογιστές που μπορούν να χρησιμοποιηθούν σαν web hosts, database servers και σε κάθε άλλη εφαρμογή που χρειάζεται να επεξεργαστούμε μεγάλη ποσότητα δεδομένων όπως η πρόγνωση του καιρού.
Επισκόπηση των AVR μικροελεγκτών
Υπάρχουν αρκετοί τύποι AVR μικροελεγκτών με διαφορετικά χαρακτηριστικά. Εκτός από τη σειρά AVR32 είναι όλοι 8-bit μικροελεγκτές που σημαίνει ότι οι CPU μπορούν να δουλέψουν με δεδομένα πλάτους 8-bit κάθε φορά.
Ένα από τα προβλήματα των AVR μικροελεγκτών είναι ότι δεν είναι όλοι 100% συμβατοί μεταξύ τους όταν μεταφέρουμε τον κώδικα από τον ένα μικροελεγκτή στον άλλο. Για να τρέξουμε κώδικα που έχει γραφεί για τον ΑΤtiny85 στον ΑΤmega64 θα πρέπει να κάνουμε ξανά κομπάιλ και πιθανόν να αλλάξουμε μερικές θέσεις καταχωρητών πριν το φορτώσουμε στο ATmega64.
Ο AVR είναι ένας 8-bit μικροελεγκτής με αρχιτεκτονική Harvard με καθορισμένα χαρακτηριστικά όπως ενσωματωμένη μνήμη προγράμματος ROM, ενσωματωμένη μνήμη δεδομένων SRAM μαζί με μνήμη EEPROM. Πάνω στο τσιπ είναι ενσωματωμένοι χρονιστές (timers) και Ι/Ο θύρες. Οι περισσότεροι AVRs έχουν επιπρόσθετα χαρακτηριστικά όπως ADC, PWM και διάφοροι τρόποι επικοινωνίας όπως USART, SPI, I2C(TWI), CAN, USB.
AVR μνήμη προγράμματος ROM
Στους μικροελεγκτές, η μνήμη ROM χρησιμοποιείται για την αποθήκευση προγράμματος και για αυτό το λόγο ονομάζεται program ή code ROM. Το μέγεθος της μνήμης ROM των μικροελεγκτών AVR μπορεί να είναι από 1ΚΒ έως 384ΚΒ εξαρτώμενη από τον τύπο AVR.
Ο μικροελεγκτής AVR είναι ο πρώτος από τους μικροελεγκτές που χρησιμοποιούν on-chip Flash μνήμη για την αποθήκευση της μνήμης προγράμματος. Η μνήμη flash είναι ιδανική για γρήγορη ανάπτυξη εφαρμογών διότι μπορεί να σβηστεί σε λίγα δευτερόλεπτα σε αντίθεση των 20 λεπτών που χρειάζεται η μνήμη UV-EPROM.
AVR μνήμη δεδομένων RAM και EEPROM
Ενώ η μνήμη ROM χρησιμοποιείται για την αποθήκευση του προγράμματος, η μνήμη RAM χρησιμοποιείται για την αποθήκευση δεδομένων. Ο μικροελεγκτής AVR μπορεί να έχει το μέγιστο 64Κ byte για αποθήκευση δεδομένων στην RAM. Όχι όλοι οι AVR μικροελεγκτές, έχουν τόσο πολύ RAM.
Όπως θα δούμε σε επόμενα εδάφια η μνήμη RAM χωρίζεται σε τρία συστατικά: τους γενικής χρήσης καταχωρητές, την Ι/Ο μνήμη και την εσωτερική μνήμη SRAM. Υπάρχουν 32 γενικής χρήσης καταχωρητές σε όλους τους AVR, αλλά τα μεγέθη της SRAM και της Ι/Ο μνήμης είναι διαφορετικά από τσιπ σε τσιπ.
Στους μικροελεγκτές AVR συμπεριλαμβάνεται ένα μικρό μέγεθος μνήμης EEPROM για την αποθήκευση κρίσιμων δεδομένων που δεν αλλάζουν συχνά.
AVR μικροελεγκτή Ι/Ο πινς
Ένας AVR μικροελεγκτής μπορεί να έχει από 3 έως 86 πινς για Ι/Ο έλεγχο. Ο αριθμός Ι/Ο των εισόδων – εξόδων πινς εξαρτάται από το μέγεθος της συσκευασίας. Για παράδειγμα στον ΑΤtiny85 έχουμε 6 πινς για Ι/Ο ενώ στην περίπτωση του 100-pin ATmega2560 έχουμε έως 86 πινς για Ι/Ο.
Περιφερειακά AVR μικροελεγκτών
Οι περισσότεροι AVRs περικλείουν ADC (analog – to – digital converters), χρονιστές (timers) και USART (Universal Synchronous Asynchronous Receiver Transmitter) σαν καθορισμένα περιφερειακά. Όπως θα δούμε σε επόμενο εδάφιο ο ADC είναι 10-bit και ο αριθμός των ADC καναλιών στον AVR μπορεί να είναι μέχρι 16 εξαρτώμενο από τον αριθμό των πινς της συσκευασίας.
Οι AVR μικροελεγκτές μπορούν να έχουν μέχρι 6 χρονιστές μαζί με τον watchdog timer. Το USART περιφερειακό μας επιτρέπει να συνδέσουμε το AVR σύστημα σε σειριακές θύρες όπως τη θύρα COM του PC. Τα περισσότερα μέλη της οικογένειας AVR περιέχουν I2C και SPI διαύλους επικοινωνίας και μερικοί από αυτούς έχουν USB ή CAN δίαυλο.