Άσκηση 2 η : Εισαγωγή στο eζ430-f2013 με χρήση του IAR Embedded Workbench, ενός αναπτυξιακού περιβάλλοντος για τα MSP430

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Άσκηση 2 η : Εισαγωγή στο eζ430-f2013 με χρήση του IAR Embedded Workbench, ενός αναπτυξιακού περιβάλλοντος για τα MSP430"

Transcript

1

2 Περιεχόμενα Τίτλος Άσκηση 1 η : Εισαγωγή στην οικογένεια μικροελεγκτών MSP430F20xx 3 Αρχιτεκτονική MSP Καταχωρητές Διευθυνσιοδότηση Μνήμη Τρόποι λειτουργίας Περιφερειακά Μακροεντολές Άσκηση Άσκηση 2 η : Εισαγωγή στο eζ430-f2013 με χρήση του IAR Embedded Workbench, ενός αναπτυξιακού περιβάλλοντος για τα MSP Παρουσίαση και Εγκατάσταση ez Έναρξη IAR Embedded Workbench Δημιουργία νέου project Ρυθμίσεις-Compiling Debugging Άσκηση Άσκηση 3 η : Λειτουργίες Εισόδου εξόδου (Digital I/O) Εισαγωγή Καταχωρητές Παραδείγματα Άσκηση Άσκηση 4 η : Αριθμητικές και λογικές πράξεις Εφαρμογές Πράξεις με τις ψηφιακές εισόδους Λειτουργία πληκτρολογίου 4x Άσκηση Άσκηση 5 η : Σήματα διακοπής (Interrupts) Εισαγωγή Καταχωρητές Παραδείγματα Άσκηση Άσκηση 6 η : Χρονιστές / Απαριθμητές (Timers) Εισαγωγή Basic Clock Module Watchdog timer Timer A Capture-Compare modes Καταχωρητές Σήματα διακοπής Παραδείγματα Άσκηση Άσκηση 7 η : Μετατροπέας αναλογικού σήματος σε ψηφιακό με Σίγμα Δέλτα Διαμόρφωση (SD16) A/DC Γενικά Σίγμα Δέλτα Διαμόρφωση(ΣΔ)-Block Διάγραμμα Σελ

3 Καταχωρητές του SD16_A Modes - Temp Sensor Παραδείγματα Άσκηση Άσκηση 8 η : Σειριακή επικοινωνία(usi) Εισαγωγή SPI I 2 C Καταχωρητές Παραδείγματα Άσκηση Άσκηση 9 η : Εισαγωγή στην RF επικοινωνία με χρήση του ez430 - RF Εισαγωγή-Παρουσίαση του ez430-rf Εγκατάσταση του ez430-rf Εισαγωγή στον πομποδέκτη CC Sensor Monitor Visualizer SimpliciTI Παραδείγματα Άσκηση Παράρτημα 1 ο : Εισαγωγή στο Code Composer Studio (CCStudio) IDE Εισαγωγή στο Code Composer Studio v4 (IDE) Εγκατάσταση Έναρξη CCStudio Δημιουργία νέου project Ρυθμίσεις Debugging Σχόλια Παράρτημα 2 ο : Οδήγηση οθόνης υγρών κρυστάλλων 2x Εισαγωγή Pinout Εντολές Αρχικοποίηση και σύνδεση LCD driver header for MSP430(ο κώδικας)

4 - 3 -

5 Αρχιτεκτονική MSP430F20xx Στο κεφάλαιο αυτό παρουσιάζουμε τα βασικά χαρακτηριστικά της οικογένειας μικροεπεξεργαστών msp430x20xx της εταιρίας Texas Instruments. Oι μικροεπεξεργαστές της οικογένειας αυτής διαθέτουν 16-bit RISC αρχιτεκτονική, ποικιλία περιφερειακών και ευέλικτο σύστημα χρονισμού καθώς επίσης και προγραμματιζόμενη μνήμη FLASH, η οποία καθιστά εύκολες και γρήγορες τις αλλαγές στον κώδικα. Η διασύνδεση πραγματοποιείται με αρχιτεκτονική von Neumann, όπου οι δίαυλοι ΜΑΒ και MDB για την μνήμη διευθυνσιοδότησης και δεδομένων, είναι κοινοί. Ορισμένες από τις περιφερειακές συσκευές που υποστηρίζονται είναι ένας 12-bit A/D μετατροπέας, timers, USART(s), ένας Watchdog timer, ένας πολλαπλασιαστής υλικού, κ.α. Τα χαρακτηριστικά τους αυτά τους καθιστούν κατάλληλους για διάφορες και απαιτητικές εφαρμογές. Εξίσου σημαντική είναι η δυνατότητα των επεξεργαστών αυτών να καταναλώνουν λιγότερα από 250 μα σε ενεργό τρόπο λειτουργίας, ενώ μπορούν να αφυπνιστούν σε λιγότερο από 6 μs. Σε κατάσταση αναμονής η κατανάλωση είμαι μικρότερη από 2 μα. Συνεπώς οι msp430 είναι κατάλληλοι για φορητές εφαρμογές με απαίτηση για πολύ μικρή κατανάλωση. εικ.1 Block διάγραμμα του MSP430F20x3-4 -

6 Καταχωρητές H CPU υποστηρίζει χαρακτηριστικά ειδικά σχεδιασμένα για τις σύγχρονες προγραμματιστικές τεχνικές όπως η υποστήριξη υψηλού επιπέδου γλωσσών προγραμματισμού σαν τη C. Ορισμένα από τα χαρακτηριστικά αυτά είναι: 1. RISC αρχιτεκτονική 27 εντολών και 7 μεθόδων διευθυνσιοδότησης. 2. Πλήρης πρόσβαση στους καταχωρητές συμπεριλαμβανομένων του μετρητή κατάστασης(pc), του καταχωρητή κατάστασης(sr) και του δείκτη στοίβας(sp). 3. Κάθε εντολή μπορεί να χρησιμοποιηθεί με κάθε μέθοδο διευθυνσιοδότησης. 4. Λειτουργίες καταχωρητή ενός κύκλου. 5. Ο 16bit δίαυλος διευθύνσεων επιτρέπει απευθείας πρόσβαση σε ολόκληρη τη μνήμη και άμεσο χειρισμό όλων των λέξεων. 6. Η γεννήτρια σταθερών παρέχει τις έξι πιο εύχρηστες άμεσες σταθερές μειώνοντας έτσι τις ανάγκες σε κώδικα. 7. Άμεση μεταφορά από μνήμη σε μνήμη, χωρίς τη μεσολάβηση καταχωρητή. 8. Format εντολών και διευθύνσεων τόσο για χειρισμό λέξεων όσο και bytes. H CPU διαθέτει 16 καταχωρητές των 16bit. Οι καταχωρητές R0,R1,R2 και R3 έχουν ειδικές λειτουργίες ενώ οι καταχωρητές R4- R15 είναι για γενική χρήση. Ο R0 χρησιμοποιείται σαν μετρητής προγράμματος (PC) και η λειτουργία του είναι να δείχνει την επόμενη προς εκτέλεση εντολή. Ο R1 χρησιμοποιείται σαν δείκτης στοίβας. Η λειτουργία του είναι να αποθηκεύει τη διεύθυνση επιστροφής από κάποια υπορουτίνα ή από ρουτίνα εξυπηρέτησης διακοπής. Οι τρόποι λειτουργίας του μικροελεγκτή ελέγχονται από την τιμή που θα έχει ο R2 στον οποίο θα αναφερθούμε παρακάτω. εικ.2 Καταχωρητές MSP430 Mε τους καταχωρητές R2 και R3 παράγονται έξι σταθερές που χρησιμοποιούνται ευρέως στον προγραμματισμό, ώστε να μη χρειάζεται επιπλέον κώδικας. Οι υπόλοιποι 12 καταχωρητές χρησιμοποιούνται για γενικό σκοπό. Μπορούν να χρησιμοποιηθούν σαν καταχωρητές δεδομένων, δείκτες διευθύνσεων ή να περιέχουν κάποιες τιμές και μπορούν να προσπελαστούν με εντολές λέξης ή byte

7 Μέθοδοι Διευθυνσιοδότησης Εντολές Υπάρχουν 7 μέθοδοι για τον τελεστή πηγής και άλλοι 4 για τον τελεστή προορισμού, οι οποίοι μπορούν να διευθυνσιοδοτήσουν τον πλήρη χώρο διευθύνσεων εικ.3 Μέθοδοι διευθυνσιοδότησης MSP430 Το πλήρες σετ εντολών αποτελείται από 27 βασικές εντολές και άλλες 24 που εξομοιώνονται. Τα format των βασικών εντολών είναι: 1. Διπλού τελεστή 2. Απλού τελεστή 3. Άλματος Όλες οι εντολές απλού ή διπλού τελεστή μπορεί να είναι είτε λέξης είτε byte. Λυτό καθορίζεται από την κατάληξη.b ή.w. Οι εντολές byte χρησιμοποιούνται για να προσπελάσουν bytes δεδομένων ή περιφερειακών. Οι εντολές λέξης χρησιμοποιούνται για να προσπελάσουν λέξεις δεδομένων ή περιφερειακών

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

9 εικ.7 Περισσότερα για τις εντολές(κύκλοι εντολών κλπ) μπορείτε να βρείτε στο MSP430x2xx Family User s Guide Μνήμη Οι μικροελεγκτές MSP430 έχουν τον ίδιο χώρο διευθύνσεων για τους καταχωρητές, τη flash memory/rom, τη RAM και τα περιφερειακά. Αυτό έχει σαν αποτέλεσμα να χρησιμοποιούν τις ίδιες εντολές για προσπέλαση στη μνήμη και τα περιφερειακά. Τα δεδομένα μπορούν να προσπελαστούν είτε με εντολές λέξεων είτε με εντολές byte. Ο κώδικας εκτελείται από την μνήμη RAM - 8 -

10 εικ.8 Τα bytes τοποθετούνται σε άρτιες ή περιττές διευθύνσεις, όμως οι λέξεις τοποθετούνται μόνο σε άρτιες διευθύνσεις. Επομένως όταν χρησιμοποιούμε εντολές λέξεων, μόνο άρτιες διευθύνσεις μπορούν να χρησιμοποιηθούν. Το χαμηλής τάξης byte της λέξης βρίσκεται πάντα σε άρτια διεύθυνση. Το υψηλής τάξης byte βρίσκεται στην επόμενη περιττή διεύθυνση από τη διεύθυνση της λέξης. Για παράδειγμα εάν η λέξη δεδομένων τοποθετείται στη διεύθυνση xxx6h τότε το χαμηλής τάξης byte της λέξης τοποθετείται στη διεύθυνση xxx6h και το υψηλής τάξης byte της λέξης τοποθετείται στη διεύθυνση xxx7h. εικ.9-9 -

11 Τρόποι λειτουργίας Η οικογένεια MSP430 έχει σχεδιαστεί για εφαρμογές με σημαντικές απαιτήσεις για εξαιρετικά χαμηλή κατανάλωση ρεύματος. Γι αυτό το λόγο χρησιμοποιεί διαφορετικούς τρόπους (low-power) λειτουργίας. Οι τρόποι αυτοί λειτουργίας λαμβάνουν υπόψη τρείς σημαντικές ανάγκες: 1. Χαμηλή κατανάλωση. 2. Ελαχιστοποίηση της κατανάλωσης των περιφερειακών. 3. Ταχύτητα και ευελιξία των δεδομένων. εικ.10 εικ

12 εικ.12 Διάφορες τεχνικές οδηγούν σε ακόμη χαμηλότερη κατανάλωση ενέργειας. Βασικά προσπαθούμε να μεγιστοποιήσουμε την παραμονή στην κατάσταση LPM3. Η κατανάλωση στην κατάσταση αυτή είναι μικρότερη από 2 μa με όλες τις διακοπές ενεργές και λειτουργία ρολογιού. Τα περιφερειακά ενεργοποιούνται μόνο όταν είναι απαραίτητο. εικ.13 εικ

13 Περιφερειακά Μπορούμε να αναφερθούμε και να ξεχωρίσουμε τα περιφερειακά συστήματα σε 4 κατηγορίες: 1. Timers Basic Timer / Real-Time Clock(RTC) Watchdog (WDT/+) Timer_A / Timer_B 2. Communication Interfaces Universal Serial Interface(USI) o I 2 C/SPI Universal Serial Communication Interface(USCI) o USCI_A (UART/IrDA/SPI) o USCI_B (I 2 C/SPI) 3. ADCs Comparator_A/Slope ADC ADC10 ADC12 SD16/ SD16_A 4. Extras LCD Modules Op-amps Η ομάδα των MSP430 που θα ασχοληθούμε εμφανίζεται στον παρακάτω πίνακα. Μακροεντολές εικ.15 Οι μακροεντολές εμφανίζονται στον προγραμματισμό των μικροελεγκτών. Τόσο στην C αλλά και στην Assembly, όπως θα δούμε στα επόμενα εργαστηριακά μαθήματα πρέπει να ορίσουμε τη βιβλιοθήκη μακροεντολών του μικροελεγκτή που θα προγραμματίσουμε, την οποία θα πρέπει να είμαστε σε θέση να διαβάζουμε κατανοώντας τους ορισμούς των καταχωρητών και τις τιμές τους. Άσκηση 1. Αναγνωρίστε από το datasheet του μικροελεγκτή που θα χρησιμοποιηθεί στις επόμενες εργαστηριακές ασκήσεις τα πλήρη ηλεκτρικά χαρακτηριστικά και καταγράψτε τα. 2. Αναγνωρίστε από το User s Guide του μικροελεγκτή που θα χρησιμοποιηθεί στις επόμενες εργαστηριακές ασκήσεις τα περιφερειακά που υποστηρίζει και καταγράψτε τα

14 - 13 -

15 Παρουσίαση του ez430-f2013 Το ez430-f2013 είναι ένα πλήρες αναπτυξιακό εργαλείο παρέχοντας το κατάλληλο υλικό και λογισμικό για την αξιολόγηση του MSP430F2013 σε μια βολική μορφή USB stick που χρησιμοποιεί SpyBiWire προγραμματιστή (2 pins σε αντίθεση με το κλασικό JTAG που χρησιμοποιεί 4 pins) Προσφέρει και τα 14 pins του MSP430F2013 έτοιμα για χρήση και σύνδεση. Θα χρησιμοποιήσουμε την αναπτυξιακή πλακέτα που υπάρχει στο εργαστήριο για τις παρακάτω ασκήσεις. Εγκατάσταση του ez430-f Αφού έχετε εγκαταστήσει το IAR Embedded Workbench (τοποθετήστε το CD που περιέχεται στο πακέτο και ακολουθήστε τα βήματα στο μενού που ανοίγει) τοποθετήστε το ez430-f2013 σε μια θύρα USB του Η/Υ. 2. Όταν ξεκινήσει ο οδηγός της εγκατάστασης νέου υλικού δώστε σαν κατάλογο εύρεσης προγράμματος οδήγησης τον: C:\Program Files\IAR Systems\Embedded Workbench 4.0\430\drivers\TIUSBFET\WinXP Έναρξη IAR Embedded Workbench Για να ανοίξουμε το IAR Embedded Workbench: Έναρξη όλα τα προγράμματα IAR Systems IAR Embedded Workbench KickStart for MSP430 V4 IAR Embedded Workbench

16 Δημιουργία νέου project IAR Embedded Workbench integrated development environment (IDE) Η δομή του IAR Embedded Workbench αποτελείται ιεραρχικά από: Workspace (που περιέχει project-projects) Project (που περιέχει file-files) File εικ. 1 Όταν ανοίγει το πρόγραμμα υπάρχει ήδη ένα έτοιμο Workspace 2. Create new project in current workspace 3. Empty project OK 4. Save(π.χ. project1) εικ. 2 εικ File Save Workspace(π.χ. tutorials) Save

17 Ρυθμίσεις-Compiling 6. Καλό θα ήταν σε αυτό το σημείο να κάνουμε τις ρυθμίσεις αρχικοποίησης της συσκευής μας ώστε να συνεργάζεται με το project. Δεξί κλικ στο project1 Debug Options ή Menu Project Options και κάνουμε τις ρυθμίσεις όπως στο σχήμα. εικ. 4 Για να επιλέξουμε αν θέλουμε να περάσουμε το πρόγραμμα στον μικροελεγκτή ή αν θέλουμε να κάνουμε προσομοίωση μόνο στον υπολογιστή επιλέγουμε την κατάλληλη επιλογή στην καρτέλα Debugger FET Debugger Πρόγραμμα στον μικροελεγκτή ή Simulator Προσομοίωση και ΟΚ. εικ Στη συνέχεια πρέπει να προσθέσουμε αρχεία με τον εκτελέσιμο κώδικα(είτε σε Assembly, είτε σε C ή C++). Δεξί κλικ στο project1 Debug Add Add Files. Έστω ότι προσθέτουμε το αρχείο msp430x20x3_p1_01.c και το βλέπουμε στον editor(δεξί μεγάλο παράθυρο) με διπλό κλικ. εικ Τώρα είμαστε έτοιμοι να κάνουμε compile:project Rebuild all. Προσέχουμε για λάθη στο παράθυρο μηνυμάτων!!!! εικ

18 9. Συνεχίζουμε με Project Debug όπου βλέπουμε την παρακάτω οθόνη Debugging εικ. 8 Μπορούμε να ξεχωρίσουμε τα επιμέρους τμήματα, εκτός από αυτά που ήδη γνωρίζουμε, σε: Γραμμή εργαλείων ροής του προγράμματος(για το Debug) Disassembly Το Disassembly είναι ένα από τα πολλά «εργαλεία» που μπορούμε να δούμε μέσω του μενού View Τα πιο χρήσιμα εργαλεία και οι περιγραφές τους είναι: Breakpoints Δείχνει τα σημεία ελέγχου που έχουμε ορίσει στο debugging Disassembly Ο κώδικάς μας μεταφρασμένος σε assembly Memory Γραφική απεικόνιση της μνήμης του μικροελεγκτή Register Οι καταχωρητές του μικροελεγκτή ανά ομάδες Watch Βλέπουμε τιμές μεταβλητών/καταχωρητών Locals Δείχνει αυτόματα τιμές για τοπικές μεταβλητές Auto Δείχνει αυτόματα τιμές ανάλογα με τη ροή του προγράμματος Live Watch Παίρνει δείγματα συνέχεια για μεταβλητές/καταχωρητές, ακόμα και κατά τη διάρκεια εκτέλεσης του προγράμματος Quick Watch Ένα γρήγορο δείγμα τιμής μεταβλητής /καταχωρητή Call Stack Εικονική αναπαράσταση του σωρού ανά ρουτίνες Terminal I/O Τερματικό εισόδου/εξόδου Stack Απεικόνιση του σωρού του μικροελεγκτή Η γραμμή εργαλείων με τα στοιχεία της μας επιτρέπουν τον έλεγχο του Debug. Τα στοιχεία και οι επιμέρους λειτουργίες τους είναι: εικ

19 10. Όπως βλέπουμε ο κέρσορας βρίσκεται στην πρώτη εκτελέσιμη γραμμή του προγράμματός. Έχουμε δύο επιλογές: Άμεση εκτέλεση Βηματική εκτέλεση 11. Βηματική εκτέλεση προγράμματος Ανοίγουμε το μενού των καταχωρητών από το View Register Πατώντας το Next statement βλέπουμε ότι εκτελέστηκε η πρώτη γραμμή του προγράμματος και ο έλεγχος πέρασε στη δεύτερη γραμμή που είναι έτοιμη να εκτελεστεί. 12. Σε κάθε εντολή μπορούμε να ελέγχουμε τους καταχωρητές που εμπλέκονται, οι οποίοι εμφανίζονται με έντονο χρώμα στο μενού Registers 13. Για να σταματήσουμε τη διαδικασία του Debugging πατάμε Άσκηση 1. Πραγματοποιείστε τα παραπάνω βήματα ρυθμίζοντας κατάλληλα το IAR Embedded Workbench για να κάνετε προσομοίωση στον MSP430F2013. Τρέξτε βηματικά το πρόγραμμα και παρατηρείστε τις εγγραφές που γίνονται στους καταχωρητές. 2. Επαναλάβετε τα βήματα μεταφέροντας το πρόγραμμα στον μικροελεγκτή. Καταγράψτε διαφορές. 3. Ανοίξτε το Workspace Flashing the LED από το παράθυρο στην εκκίνηση του IAR Embedded Workbench(εικ. 1). Example applications Flashing the LED Open Επιλέξτε τον κατάλογο που θα αποθηκευτούν τα αρχεία που θα δημιουργηθούν Select Επιλέξτε κατάλληλο Project (εικ. 10) για τον μικροελεγκτή MSP430CG4619 και κάντε προσομοίωση με βηματική εκτέλεση. 4. Επιλέξτε από το Flashing the LED το κατάλληλο πρόγραμμα σε γλώσσα C για τον μικροελεγκτή του ez430. (χρησιμοποιείστε πρόγραμμα ρυθμισμένο για προγραμματιστή με SpyBiWire. εικ

20 - 19 -

21 Εισαγωγή Οι μικροελεγκτές MSP430 έχουν μέχρι 8 ψηφιακές βαθμίδες εισόδου-εξόδου (I/O-ports), P1 έως P7. Κάθε port αποτελείται από 8 I/O pins. Κάθε I/O pin ρυθμίζεται ανεξάρτητα από τα υπόλοιπα σαν είσοδος ή έξοδος και μπορούμε να διαβάσουμε ή να γράψουμε την τιμή του ανεξάρτητα από τα άλλα. Επίσης μπορούμε να ορίζουμε στο καθένα εσωτερικούς αντιστάτες(pullup/pulldown). Τα P1 και P2 έχουν δυνατότητα σημάτων διακοπής(interrupts). O F2013, με τον οποίο κατά βάση θα ασχοληθούμε, έχει μόνο τα P1 και P2 διαθέσιμα. Από αυτά μπορούμε να διαχειριστούμε συνολικά 10 pins, τα 8 του P1 και τα P2.6 και P2.7 από το P2. Οι λειτουργίες των ports ορίζονται από τις τιμές των αντίστοιχων καταχωρητών. Καταχωρητές 1. PxIN Η τιμή των bits του καταχωρητή αντιστοιχεί στην τιμή που έχουν τα bits του port στην είσοδό τους όταν έχουν ρυθμιστεί ως είσοδοι. Bit=0 λογικό 0(low input) Bit=1 λογικό 1(high input) 2. PxOUT Η τιμή των bits του καταχωρητή αντιστοιχεί στην τιμή που πάρουν τα bits του port στην έξοδό τους όταν έχουν ρυθμιστεί ως έξοδοι χωρίς εσωτερικούς αντιστάτες. Bit=0 λογικό 0(low output) Bit=1 λογικό 1(high output) Με εσωτερικούς αντιστάτες ενεργοποιημένους:. Bit=0 pulldown αντιστάτης Bit=1 pullup αντιστάτης 3. PxDIR Η τιμή των bits του καταχωρητή ορίζουν το κάθε pin σαν είσοδο(input) ή έξοδο(output)

22 Bit=0 input Bit=1 output 4. PxSEL Κάποια από τα pins έχουν εκτός από την κύρια λειτουργία τους (Ι/Ο) και δευτερεύουσες λειτουργίες μιας και χρησιμοποιούνται από περιφερειακές διατάξεις. Η τιμή των bits του καταχωρητή ορίζουν τη λειτουργία του αντίστοιχου pin: κύρια, δευτερεύουσα. Bit=0 κύρια λειτουργία pin Bit=1 δευτερεύουσα λειτουργία pin 5. PxREN Η τιμή των bits του καταχωρητή ενεργοποιεί/απενεργοποιεί στο κάθε pin τους εσωτερικούς αντιστάτες. Bit=0 ανενεργοί εσωτερικοί αντιστάτες Bit=1 ενεργοί εσωτερικοί αντιστάτες εικ. 1 εικ. 2 Με τους υπόλοιπους καταχωρητές που έχουν να κάνουν με τα σήματα διακοπής των port θα ασχοληθούμε σε επόμενο εργαστήριο

23 Παραδείγματα 1. Αναβοσβήνει στο port 1 το pin 0 (P1.0) με assembly #include "msp430x20x3.h" ; ORG 0F800h ; Program Reset ; RESET mov.w #0F80h,SP ; Initialize stack pointer StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT SetupP1 bis.b #001h,&P1DIR ; P1.0 output Mainloop xor.b #001h,&P1OUT ; Toggle P1.0 Wait mov.w #050000,R15 ; Delay to R15 L1 dec.w R15 ; Decrement R15 jnz L1 ; Delay over? jmp Mainloop ; Again ; ; Interrupt Vectors ; ORG 0FFFEh ; MSP430 RESET Vector DW RESET ; END 2. Αναβοσβήνει στο port 1 το pin 0 (P1.0) με C #include <msp430x20x3.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR = 0x01; // Set P1.0 to output direction for (;;) { volatile unsigned int i; P1OUT ^= 0x01; // Toggle P1.0 using exclusive-or i = 50000; // Delay do (i--); while (i!= 0);

24 Άσκηση 1. Παρατηρήστε τα παραδείγματα. Καταγράψτε τις διαφορές και τις ομοιότητες ανάμεσα στα δύο προγράμματα και εντοπίστε τη δομή της κάθε γλώσσας προγραμματισμού. 2. Δημιουργήστε ένα workspace στο IAR Embedded Workbench με το όνομα askhsh3 Προσθέστε ένα project για assembly με όνομα askhsh3-asm στο workspace askhsh3 και τοποθετήστε τον κώδικα του παραδείγματος 1 στο αρχείο asm.s43 Προσθέστε ένα project για C με όνομα askhsh3-c στο workspace askhsh3 και τοποθετήστε τον κώδικα του παραδείγματος 2 στο αρχείο main.c Εντοπίστε τους χώρους μνήμης που ορίζουν τα δύο προγράμματα και καταγράψτε τα όριά τους. Τρέξτε βηματικά και τα δύο. Παρατηρήστε και καταγράψτε τι κάνουν τα προγράμματα. 3. Αλλάξτε την καθυστέρηση στα προγράμματα σύμφωνα με τον Α.Μ. σας και ρυθμίστε κατάλληλα ώστε να ανάβει/σβήνει pin στο P1 σύμφωνα με το πρώτο ψηφίου του Α.Μ. σας(π.χ. Α.Μ.=28816=delay και θα ανάβει/σβήνει το P1.2) 4. Ρυθμίστε κατάλληλα ώστε να ανάβουν/σβήνουν μονά ή ζυγά pinς στο P1 σύμφωνα με το τελευταίο ψηφίου του Α.Μ. σας(π.χ. Α.Μ.=28816 θα ανάβουν/σβήνουν τα ζυγά pins του P1, δηλ P1.0,2,4,6) 5. Τροποποιείστε τα προγράμματα κατάλληλα ώστε να υλοποιούν το εξής πρόγραμμα: Έστω Α.Μ το οποίο έχει 5 ψηφία με ψηφίο0=6 ψηφίο4=2. Όπου ψηφίοx εκτός ορίων παίρνουμε ψηφίοx/2(ακέραιος) εικ.3 6. Δημιουργήστε κατάλληλο πρόγραμμα το οποίο θα προσομοιώνει το σήμα κινδύνου SOS. Υπενθυμίζουμε: εικ. 4 Χρησιμοποιήστε σαν έξοδο την P1.0 και αν t=χρόνος διάρκειας τελείας τότε 3*t=χρόνος διάρκειας παύλας

25 - 24 -

26 Πράξεις με τις ψηφιακές εισόδους Στην άσκηση αυτή θα ασχοληθούμε με αριθμητικές αλλά και λογικές πράξεις με τον MSP430 σε assembly αλλά και C. Μερικές από τις εντολές αριθμητικών και λογικών πράξεων στην assembly: ADD - Add without carry ADDC - Add with carry SUB - Sub without carry SUBC - Sub with carry AND - Logical AND XOR - Logical XOR RRC- Rotate right with carry RLC- Rotate left with carry INC- Increment by 1 DEC- Decrement by 1 Έστω ότι θέλουμε να προσθέσουμε δύο δεκαεξαδικούς αριθμούς(35η και 27Η) και το αποτέλεσμα να το δούμε σαν έξοδο στο P1: Σε assembly: Σε C: mov.b #35h,R4 int a=0x27; mov.b #27h,R5 int b=0x35; add R4,R5 a=a+b; bis.b R5,&P1OUT P1OUT = a; Ενημερωθείτε για τις εντολές αριθμητικών πράξεων τόσο από το πρώτο μέρος του φυλλαδίου, όσο και από το MSP430x2xx Family User s Guide Ενημερωθείτε για τον τρόπο που χειρίζεται η C αριθμητικές και λογικές πράξεις Λειτουργία πληκτρολογίου 4x4 Μια ολοκληρωμένη ιδέα για να κατανοήσουμε τη χρήση των πράξεων γενικότερα σε Ι/Ο είναι το πληκτρολόγιο γενικής χρήσης(keypad) σαν αυτό που χρησιμοποιείται στα τηλέφωνα, σε συναγερμούς, τηλεχειριστήρια κλπ. εικ.1 Keypad 3 x

27 Στα πλαίσια της άσκησης παρουσιάζουμε ένα keypad 4x4 με τις παρακάτω συνδέσεις και πλήκτρα: Το οποίο λειτουργεί βάση του επόμενου διαγράμματος ροής: εικ

28 Ο κώδικας που το υλοποιεί σε C: #include <msp430x20x3.h> #include <stdio.h> int scan(void); int nextkey(char pr1); char const KEY[4][4] = {{'7','8','9','F', {'4','5','6','E', {'1','2','3','D', {'0','A','B','C'; void main( void ) {char press; WDTCTL = WDTPW + WDTHOLD; P1OUT = 0x00; P1DIR = 0xF0; while(1) {press = scan(); printf("%c",press); nextkey(press); int scan(void) {int i,j; char pressed=' '; P1OUT = 0x10; for( i = 0; i < 4; i++) { int k=1; for( j = 0; j < 4; j++) {if (P1IN == P1OUT + k) {pressed=key[i][j]; break; k=(k<<1); if( pressed!= ' ' ) break; P1OUT = (P1OUT << 1); return(pressed); int nextkey(char pr1) {char press2; while(1) {press2 = scan(); if( pr1 == press2 ) { else break; return(0);

29 ΑΣΚΗΣΗ 1. Αφού ενημερωθείτε για τις εντολές αριθμητικών και λογικών πράξεων στην assembly δημιουργήστε ένα Workspace στο IAR Workbench για την άσκηση και σε αυτό εισάγετε projects που θα δείχνουν τη λειτουργία της κάθε μιας από της εντολές: SUB, CMP, DADD, SWPB, INV. Παρατηρήστε τη συμπεριφορά τους στο debugger και σχολιάστε. 2. Ενημερωθείτε για τις αντίστοιχες εντολές στη C και δημιουργήστε αντίστοιχο Workspace με το προηγούμενο με projects σε C. Παρατηρήστε τη συμπεριφορά τους στο debugger και σχολιάστε. 3. Γράψτε κατάλληλο πρόγραμμα το οποίο θα ελέγχει την είσοδο στο P1 και : Α)Αν είναι ενεργοποιημένη η είσοδος P0.0 να ενεργοποιείται η P0.6 Α)Αν είναι ενεργοποιημένη η είσοδος P0.1 να ενεργοποιείται η P0.7 ΝΑ γραφεί σε assembly και C και να ελεγχθεί η λειτουργία τους 4. Ενημερωθείτε για τις επαναληπτικές δομές καθώς και για τις δομές δεδομένων στη C και μετά περιγράψτε τη λειτουργία του παρακάτω προγράμματος: #include "msp430x20x3.h" #include "stdio.h" void main(void){ int i,j,tmp; int a[20]= {0x000C,0x0C62,0x0180,0x0D4A,0x00F0,0x0CCF,0x0C35,0x096E,0x02E4, 0x0BDB,0x0788,0x0AD7,0x0AC9,0x0D06,0x00EB,0x05CC,0x0AE3,0x05B7, 0x001D,0x0000; for (i=0; i<19; i++){ for (j=0; j<19-i; j++){ if (a[j+1] < a[j]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; printf("changed %d",a[j]); printf(" with %d",a[j+1]); printf("\n"); for(int i = 0; i < 20; ++i){ printf("%d",a[i]); printf("\n"); while(1); 5. Εξηγήστε το διαγράμματος ροής του πληκτρολογίου 4x4. Εξομοιώστε και ελέγξτε τη λειτουργία του. Τροποποιείστε τον κώδικα κατάλληλα ώστε να μπορεί ύστερα από σωστή πληκτρολόγηση να εμφανίζει τις φράσεις ELECTRONICS DEPARTMENT και T.E.I. PIREA. Τέλος τροποποιείστε ξανά και τυπώστε το ονοματεπώνυμό σας με λατινικούς χαρακτήρες

30 - 29 -

31 Εισαγωγή Τα σήματα διακοπής συνιστούν, ουσιαστικά, μια τεχνική αντίδρασης του μικροεπεξεργαστή. Σύμφωνα με αυτήν, η CPU διακόπτει τη συνηθισμένη λειτουργία της, για να ανταποκριθεί αποτελεσματικά σε ασύγχρονα γεγονότα ιδιαίτερης σημασίας. Τέτοια γεγονότα μπορεί να είναι η διακοπή τροφοδοσίας, ένας συναγερμός, η παρέλευση ενός καθορισμένου χρονικού διαστήματος ή ακόμα δεδομένα έτοιμα για αποστολή από/σε κάποια περιφερειακή διάταξη κ.α. Στο υπολογιστικό σύστημα των MSP430 αναγνωρίζουμε τριών ειδών σήματα διακοπής: 1. System Reset 2. (Non) - maskable NMI (Υποχρεωτικό σήμα διακοπής) 3. Maskable (Προγραμματιζόμενο σήμα διακοπής) Τα οποία υπηρετούνται βάση του παρακάτω διαγράμματος: Καταχωρητές εικ.1 P1 και P2 Interrupts Κάθε pin στα P1 και P2 έχουν δυνατότητα ενεργοποίησης σημάτων διακοπής ρυθμιζόμενα από τους καταχωρητές PxIFG, PxIE, και PxIES 1. PxIFG Bit=0 δεν εκκρεμεί σήμα διακοπής Bit=1 εκκρεμεί σήμα διακοπής 2. PxIES Bit=0 Ο PxIFG έχει ορίζεται για μετάβαση 0 1 Bit=1 Ο PxIFG έχει ορίζεται για μετάβαση PxIE Κάθε PxIE bit ενεργοποιεί το αντίστοιχο PxIFG bit Bit=0 Σήμα διακοπής απενεργοποιημένο Bit=1 Σήμα διακοπής ενεργοποιημένο Watchdog Timer Interrupts Αν και με τον Watchdog timer θα ασχοληθούμε στο επόμενο μάθημα θα δούμε κάποια παραδείγματα που έχουν να κάνουν με τα σήματα διακοπής του που ορίζονται σχετικά εύκολα

32 Παραδείγματα Ορισμός του P1.4 ώστε να δημιουργεί ένα σήμα διακοπής για μετάβασή του από 1 σε 0 και υπηρέτησή του αλλάζοντας την κατάσταση του P1.0 Παράδειγμα 1(assembly) #include "msp430x20x3.h" ; ORG 0F800h ; Program Reset ; RESET mov.w #0280h,SP ; Initialize stack pointer StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT SetupP1 mov.b #001h,&P1DIR ; P1.0 output, else input mov.b #010h,&P1OUT ; P1.4 set, else reset bis.b #010h,&P1REN ; P1.4 pullup bis.b #010h,&P1IE ; P1.4 Interrupt enabled bis.b #010h,&P1IES ; P1.4 hi/low edge bic.b #010h,&P1IFG ; P1.4 IFG Cleared ; Mainloop bis.w #LPM4+GIE,SR ; LPM4, enable interrupts nop ; Required only for debugger ; ; P1_ISR; Toggle P1.0 Output ; xor.b #001h,&P1OUT ; P1.0 = toggle bic.b #010h,&P1IFG reti ; P1.4 IFG Cleared ; Return from ISR ; ; ; Interrupt Vectors ; ORG 0FFFEh ; MSP430 RESET Vector DW RESET ; ORG 0FFE4h ; P1.x Vector DW P1_ISR ; END Στο παραπάνω παράδειγμα βλέπουμε: 1. Τον τρόπο με τον οποίο ορίζονται οι καταχωρητές για να υπηρετηθεί ένα σήμα διακοπής στο P Τον τρόπο που ορίζουμε τις καταστάσεις χαμηλής κατανάλωσης στον MSP Το πώς ορίζονται οι ρουτίνες υπηρέτησης των σημάτων διακοπής

33 Παράδειγμα 1(C) #include <msp430x20x3.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR = 0x01; // P1.0 output, else input P1OUT = 0x10; // P1.4 set, else reset P1REN = 0x10; // P1.4 pullup P1IE = 0x10; // P1.4 interrupt enabled P1IES = 0x10; // P1.4 Hi/lo edge P1IFG &= ~0x10; // P1.4 IFG cleared _BIS_SR(LPM4_bits + GIE); #pragma vector=port1_vector interrupt void Port_1(void) { P1OUT ^= 0x01; P1IFG &= ~0x10; // Enter LPM4 w/interrupt // Port 1 interrupt service routine // P1.0 = toggle // P1.4 IFG cleared Τις περισσότερες φορές απενεργοποιούμε τον watchdog timer. Στα παρακάτω παραδείγματα θα δούμε τι γίνεται όταν δεν τον απενεργοποιούμε και τον χρησιμοποιήσουμε για να δημιουργεί σήματα διακοπής. Παράδειγμα 2(C) #include <msp430x20x3.h> void main(void) { WDTCTL = WDT_MDLY_32; IE1 = WDTIE; P1DIR = 0x01; _BIS_SR(LPM0_bits + GIE); #pragma vector=wdt_vector interrupt void watchdog_timer(void) { P1OUT ^= 0x01; // Set Watchdog Timer interval to ~30ms // Enable WDT interrupt // Set P1.0 to output direction // Enter LPM0 w/ interrupt // Watchdog Timer interrupt routine // Toggle P1.0 using exclusive-or

34 Παράδειγμα 2(assembly) #include "msp430x20x3.h" ; ORG 0F800h ; Program Reset ; RESET mov.w #0280h,SP ; Initialize stackpointer SetupWDT mov.w #WDT_MDLY_32,&WDTCTL ; WDT ~30ms interval bis.b #WDTIE,&IE1 ; Enable WDT interrupt SetupP1 bis.b #001h,&P1DIR ; P1.0 output Mainloop bis.w #CPUOFF+GIE,SR ; CPU off, enable interrupts nop ; Required only for debugger ; WDT_ISR; Toggle P1.0 ; xor.b #001h,&P1OUT ; Toggle P1.0 reti ; ; ORG 0FFFEh ; MSP430 RESET Vector DW RESET ; ORG 0FFF4h ; WDT Vector DW WDT_ISR ; END Παράδειγμα 3(C) #include <msp430x20x3.h> void main(void) { WDTCTL = WDT_ARST_1000; P1DIR = 0x01; P1OUT ^= 0x01; // Toggle P1.0 _BIS_SR(LPM3_bits); Παράδειγμα 3(assembly) // Set Watchdog Timer timeout 1s // Set P1.0 to output #include "msp430x20x3.h" ; ORG 0F800h ; Program Reset ; RESET mov.w #0280h,SP ; Initialize stackpointer SetupWDT mov.w #WDT_ARST_1000,&WDTCTL ;Watchdog timeout 1s bis.b #001h,&P1DIR ; P1.0 output xor.b #001h,&P1OUT ; Toggle P1.0 bis.w #LPM3,SR ; Mainloop jmp $ ; ORG 0FFFEh ; MSP430 RESET Vector DW RESET ; END

35 Άσκηση 1. Ενημερωθείτε από το manual του μικροελεγκτή για τον αλγόριθμο υπηρέτησης των σημάτων διακοπής. Σχεδιάστε το διάγραμμα ροής του. 2. Εξηγήστε αναλυτικά τη λειτουργία του παραδείγματος 1 και τροποποιείστε κατάλληλα ώστε να ενεργοποιεί σήματα διακοπής στη μετάβαση 0 σε Δημιουργείστε κατάλληλο workspace για την άσκηση με projects τα παραδείγματα 2 & 3(σε assembly και C). Σχολιάστε τη λειτουργία τους. 4. Τροποποιείστε κατάλληλα το παράδειγμα 3 αλλάζοντας την καθυστέρηση δημιουργίας σήματος διακοπής

36 - 35 -

37 Εισαγωγή Όταν μιλάμε για χρονιστές/απαριθμητές (timers) σε μικροελεγκτές εννοούμε εκείνες τις μονάδες που μας επιτρέπουν να μετράμε χρόνο, δηλ. να απαριθμούμε την τιμή ενός καταχωρητή έως ότου φτάσει αυτή είτε σε μια δεδομένη τιμή, είτε στη μέγιστη τιμή που μπορεί να πάρει, είτε μηδενιστεί. Γενικότερα είναι ένα πολύ σημαντικό εργαλείο σε εφαρμογές που θέλουμε να λειτουργούν σε πραγματικό χρόνο. Μας προσφέρουν κάποιες ευκολίες σε ενσωματωμένες εφαρμογές όπως: 1. Εύκολη μέτρηση συγκεκριμένου χρόνου με ακρίβεια 2. Αυτόματο περιοδικό ξύπνημα του μικροελεγκτή 3. Αλλάζοντας τις απλές καθυστερήσεις με χρήση ενός timer μπορούμε να «κοιμίζουμε» τον μικροελεγκτή για χαμηλότερη κατανάλωση ενέργειας. Στην οικογένεια των MSP430x2xx μπορούμε να δούμε τα παρακάτω περιφερειακά χρονιστών/απαριθμητών: 1. Basic Clock Module+ BCS+ 2. Watchdog Timer WDT+ 3. Timer_A Basic Clock Module+ (BCS+) / Block Διάγραμμα Είναι το βασικό σύστημα που ορίζει το χρονισμό του μικροελεγκτή και υποστηρίζει 3 διαφορετικά σήματα για το χρονισμό του: 1. Εξωτερικός κρύσταλλος. Υποστηρίζονται ανάλογα το μοντέλο είτε χαμηλής συχνότητας με δύο επιλογές (LF:32768 Ηz και HF:400KHz - 16 ΜΗz) (LFXT1CLK), είτε μεγαλύτερης συχνότητας (400KHz - 16 ΜΗz) (XT2CLK), είτε και τα δύο. 2. Εσωτερικός ψηφιακός ταλαντωτής (DCOCLK) 3. Εσωτερικός ταλαντωτής χαμηλής συχνότητας (περίπου 12 ΚΗz) (VLOCLK) Τα οποία οδηγούν ελεγχόμενα από το πρόγραμμα 3 διαφορετικούς χρονιστές για τη λειτουργία του μικροελεγκτή: 1. ACLK: Βοηθητικό ρολόι για τα περιφερειακά. Οδηγείται είτε από το LFXT1CLK, είτε από το VLOCLK. 2. MCLK: Κύριο ρολόι για την CPU. Οδηγείται από ένα από τα LFXT1CLK, VLOCLK, XT2CLK ή DCOCLK. 3. SMCLK: Δευτερεύον ρολόι. Οδηγείται από ένα από τα LFXT1CLK, VLOCLK, XT2CLK ή DCOCLK. Στην αρχική κατάσταση του μικροελεγκτή το ACLK οδηγείται από το LFXT1CLK σε LF και τα MCLK και SMCLK οδηγούνται από τον DCOCLK με συχνότητα περίπου 1 ΜΗz

38 Το DCOCLK ρυθμίζεται βάση τριών καταχωρητών: 1. RSELx: ορίζει την γραφική ορισμού 2. DCOx : ορίζει μία από τις 8 περιοχές πάνω στην RSELx 3. MODx: επιλέγουμε από 5 τιμές ανάμεσα σε DCOx και DCOx+1 Κάθε μικροελεγκτής έχει ορισμένες τιμές έτοιμες σαν ορισμένες σταθερές στο λεξιλόγιό του. π.χ. για τον F2013 οι τιμές CALDCO_8MHZ και CALBC1_8MHZ στους καταχωρητές BCSCTL1 και DCOCTL δίνουν συχνότητα 8 ΜΗz για το DCOCLK

39 Watchdog Timer WDT+ / Block Διάγραμμα Είναι ένας χρονιστής που έχει σαν ρόλο τον έλεγχο του προγράμματος και σε περίπτωση που κάτι δεν δουλεύει σωστά και έχει κολλήσει κάνει επαναφορά του μικροελεγκτή και του προγράμματος(reset). Χαρακτηριστικά: 1. Λειτουργία χρονιστή(timer) ή ελεγκτή(watchdog) 2. 4 προγραμματιζόμενα χρονικά διαστήματα ελέγχου 3. Έλεγχος του ακροδέκτη RST/NMI και της λειτουργίας του. 4. Επιλογή ρολογιού οδήγησης για τον WDT+ Στην αρχική κατάσταση του μικροελεγκτή το WDT+ λειτουργεί σαν ελεγκτής (watchdog mode) οδηγούμενος από το DCOCLK και κάνει reset τον μικροελεγκτή κάθε κύκλους εντολής. Timer_A Εισαγωγή / Block Διάγραμμα Χαρακτηριστικά: 1. Υποστηρίζει 4 τρόπους λειτουργίας:

40 2. Επιλογή σήματος χρονισμού από το πρόγραμμα 3. Μέχρι 3 προγραμματιζόμενους καταχωρητές capture/compare 4. Δυνατότητα εξόδων με προγραμματιζόμενα PWM σήματα 5. Δυνατότητα ελεγχόμενων interrupt 6. Ασύγχρονη είσοδος και έξοδος σημάτων Capture / Compare Βlocks Το capture block χρησιμοποιείται για να μετρήσουμε την περίοδο χρονικών γεγονότων. Το compare block χρησιμοποιείται σαν γεννήτρια παλμών ή σημάτων διακοπής σε δεδομένες χρονικές στιγμές. Το σήμα εξόδου από τα capture/compare blocks μπορεί να προγραμματιστεί ως ένα από 8 modes. Με δεδομένα τους 3 ενεργούς τρόπους λειτουργίας του Timer_A παρακάτω βλέπουμε τις κυματομορφές εξόδου για τα 8 modes

41 Καταχωρητές

42 Σήματα Διακοπής Ανάλογα με τη λειτουργία του χρονιστή μπορούμε να χρησιμοποιήσουμε/λάβουμε διαφορετικά σήματα διακοπής. 1. Capture mode : Το CCIFG (capture/compare interrupt flag) ενεργοποιείται όταν η τιμή του timer καταγραφθεί στον καταχωρητή TACCRx. 2. Compare mode : Το CCIFG ενεργοποιείται όταν η τιμή του μετρητή TAR γίνει ίση με την τιμή που θέσουμε στον καταχωρητή TACCRx. 3. Γενικότερα μπορούμε να ορίσουμε την τιμή του CCIFG μέσα από το πρόγραμμα Παραδείγματα Παράδειγμα 1(BCS+) #include <msp430x20x3.h> void main(void) { WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer if (CALBC1_1MHZ ==0xFF CALDCO_1MHZ == 0xFF) {while(1); BCSCTL1 = CALBC1_1MHZ; // Set range 1 MHz DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation P1DIR = 0x13; // P1.0,1 and P1.4 outputs P1SEL = 0x11; // P1.0,4 ACLK, SMCLK output while(1) { P1OUT = 0x02; // P1.1 = 1 P1OUT &= ~0x02; // P1.1 =

43 Παράδειγμα 2(WDT+) Βλέπουμε τι γίνεται όταν δεν απενεργοποιούμε τον watchdog timer. #include <msp430x20x3.h> void main(void) { P1DIR = 0x01; // Set P1.0 to output P1OUT ^= 0x01; // Toggle P1.0 _BIS_SR(LPM4_bits); // Stop all clocks Παράδειγμα 3(WDT+) Επίδειξη δυνατοτήτων του watchdog timer. #include <msp430x20x3.h> void main(void) { // WDT is clocked by fsmclk (1 MHz) WDTCTL = WDT_MRST_32; // ~32ms interval (default) //WDTCTL = WDT_MRST_8; // ~8ms //WDTCTL = WDT_MRST_0_5; // ~0.5ms //WDTCTL = WDT_MRST_0_064; // ~0.064ms // WDT is clocked by faclk (32 KHz) //WDTCTL = WDT_ARST_1000; // 1000ms //WDTCTL = WDT_ARST_250; // 250ms //WDTCTL = WDT_ARST_16; // 16ms //WDTCTL = WDT_ARST_1_9; // 1.9ms P1DIR = 0x01; P1OUT ^=0x01; _BIS_SR(LPM0_bits + GIE); // Enter LPM3 w/interrupt Παράδειγμα 4(WDT+) #include "msp430x20x3.h" ; ORG 0F800h ; Program Reset ; RESET mov.w #0280h,SP ; Initialize stackpointer Setup mov.w #WDT_ADLY_250,&WDTCTL ; WDT 250ms, ACLK bis.b #WDTIE,&IE1 ; Enable WDT interrupt SetupP1 bis.b #001h,&P1DIR ; P1.0 output ; Mainloop bis.w #LPM3+GIE,SR ; Enter LPM3, interrupts enabled nop ; Required only for debugger ; WDT_ISR ;Toggle P1.0 ; xor.b #001h,&P1OUT ; Toggle P1.0 reti ; ;

44 ; Interrupt Vectors ; ORG 0FFFEh ; MSP430 RESET Vector DW RESET ; ORG 0FFF4h ; WDT Vector DW WDT_ISR ; END Παράδειγμα 5(Timer_A) Toggle P1.1/TA0, Up Mode, 32kHz ACLK #include <msp430x20x3.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR = 0x02; P1SEL = 0x02; CCTL0 = OUTMOD_4; CCR0 = 10-1; TACTL = TASSEL_1 + MC_1; _BIS_SR(LPM3_bits); // Stop WDT // P1.1 output // P1.1 option select // CCR0 toggle mode // ACLK, upmode // Enter LPM3 w/interrupt Παράδειγμα 6(Timer_A) Toggle P1.0-2, Cont. Mode, DCO SMCLK P1.1 = CCR0 ~ 1MHz/(2*200) ~2500Hz P1.2 = CCR1 ~ 1MHz/(2*1000) ~500Hz P1.0 = overflow ~ 1MHz/(2*65536) ~8Hz #include <msp430x20x3.h> void main(void) {WDTCTL = WDTPW + WDTHOLD; P1SEL = 0x06; P1DIR = 0x07; CCTL0 = OUTMOD_4 + CCIE; CCTL1 = OUTMOD_4 + CCIE; TACTL = TASSEL_2 + MC_2 + TAIE; _BIS_SR(LPM0_bits + GIE); // Stop WDT // P1.1 - P1.2 option select // P1.0 - P1.2 outputs // CCR0 toggle, interrupt enabled // CCR1 toggle, interrupt enabled // SMCLK, Contmode, int enabled // Enter LPM0 w/ interrupt #pragma vector=timera0_vector interrupt void Timer_A0 (void) { CCR0 += 200; // Add Offset to CCR0 // Timer A0 interrupt service routine #pragma vector=timera1_vector interrupt void Timer_A1(void) {switch( TAIV ) {case 2: CCR1 += 1000; break; // Add Offset to CCR1 case 10: P1OUT ^= 0x01; break; // Timer_A2 Interrupt Vector (TAIV) // Timer_A3 overflow

45 Παράδειγμα 7(Timer_A) Toggle P1.1/TA0, Up/Down Mode, 32 khz ACLK P1.1 = 32768/20 = khz #include <msp430x20x3.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR = 0x02; P1SEL = 0x02; CCTL0 = OUTMOD_4; CCR0 = 5; TACTL = TASSEL_1 + MC_3; _BIS_SR(LPM3_bits); // Stop WDT // P1.1 output // P1.1 option select // CCR0 toggle mode // ACLK, up-down mode // Enter LPM3 Παράδειγμα 8(Timer_A) Γεννήτρια συχνοτήτων χρησιμοποιώντας τον Timer_A2 σε up mode, reset/set(pwm) #include <msp430x20x3.h> void main( void ) { void d0(); void re(); // Δήλωση Υπορουτινών void mi(); void fa(); void sol(); void la(); void si(); WDTCTL = WDTPW WDTHOLD; P1DIR = BIT2; // Έξοδος bit για buzzer P1SEL = BIT2; // Ενεργοποίηση του bit2 για TA0 CCTL1 = OUTMOD_7; // Reset/set for(;;) { while(p1in!= 0x00) // Είναι κάτι πατημένο? { if( P1IN == BIT0 ) {d0(); if( P1IN == BIT1 ) {re(); if( P1IN == BIT3 ) {mi(); if( P1IN == BIT4 ) {fa(); if( P1IN == BIT5 ) {sol(); if( P1IN == BIT6 ) {la(); if( P1IN == BIT7 ) {si(); TACTL = MC_0; // Κλείσε τον Timer

46 void d0() { CCR0 = ; // Περίοδος CCR1 = 501; // Duty Cycle 50% TACTL = TASSEL_2 MC_1; // Up mode, SMCLK void re() { CCR0 = 894-1; CCR1 = 447; TACTL = TASSEL_2 MC_1; void mi() { CCR0 = 796-1; CCR1 = 398; TACTL = TASSEL_2 MC_1; void fa() { CCR0 = 750-1; CCR1 = 375; TACTL = TASSEL_2 MC_1; void sol() { CCR0 = 669-1; CCR1 = 335; TACTL = TASSEL_2 MC_1; void la() { CCR0 = 596-1; CCR1 = 298; TACTL = TASSEL_2 MC_1; void si() { CCR0 = 532-1; CCR1 = 266; TACTL = TASSEL_2 MC_1; Άσκηση 1. Ενημερωθείτε από το User s Guide της οικογένειας μικροελεγκτών MSP430x2xx για τα περιφερειακά που αναφέρθηκαν στην εισαγωγή της άσκησης(bcs+, WDT+, Timer_A2). Χαρακτηριστικά, λειτουργία, καταχωρητές. 2. Ενημερωθείτε από το Datasheet του μικροελεγκτή MSP430x20x για τα pins που συσχετίζονται με τα BCS+, WDT+ και Timer_A2. 3. Δημιουργείστε κατάλληλο workspace με project το παράδειγμα 1. Εφαρμόστε στο αναπτυξιακό και σχολιάστε τη λειτουργία του. Μετρήστε τις συχνότητες που δημιουργήθηκαν. Ύστερα τροποποιήστε το πρόγραμμα με εναλλακτικές συχνότητες λειτουργίας και μετρήστε ξανά τις συχνότητες. 4. Δημιουργείστε κατάλληλο workspace με projects τα παραδείγματα 2, 3 & 4. Εφαρμόστε στο αναπτυξιακό και σχολιάστε τη λειτουργία τους

47 Τροποποιήστε το παράδειγμα 2 αλλάζοντας με τους υπόλοιπους δυνατούς συνδυασμούς και σχολιάστε. Εξηγήστε πως λειτουργεί το παράδειγμα 3 και που μπορεί να χρησιμοποιηθεί. 5. Δημιουργείστε κατάλληλο workspace με projects τα παραδείγματα 5, 6 & 7. Καταλάβετε πως εγγράφονται οι καταχωρητές για διαφορετικές λειτουργίες και πως υπηρετούνται σήματα διακοπής του Timer_A2. Τροποποιείστε τους καταχωρητές κατά βούληση. Εφαρμόστε στο αναπτυξιακό και σχολιάστε τη λειτουργία τους. 6. Δημιουργείστε κατάλληλο workspace με projects το παράδειγμα 8. Εφαρμόστε στο αναπτυξιακό και σχολιάστε τη λειτουργία του. Δημιουργήστε νέο κώδικα με βάση το παράδειγμα 8 που θα εναλλάσσει τις συχνότητες αυτόματα κάθε 1 sec δηλ. ΝΤΟ-ΡΕ-ΜΙ-ΦΑ-ΣΟΛ-ΛΑ-ΣΙ-ΝΤΟ Ενημερωθείτε για τη χρήση και λειτουργία των σερβοκινητήρων. Ύστερα δημιουργήστε κατάλληλο κώδικα που θα φτιάχνει τις παρακάτω κυματομορφές. Χρησιμοποιείστε τον Timer_A2 σε κατάλληλο mode και κυματομορφή εξόδου. Ρυθμίστε κατάλληλα τους καταχωρητές για την περίοδο και το εύρος του παλμού. Ρυθμίστε στον κώδικά σας την επιλογή του παλμού στην έξοδο ανάλογα του button που θα πατηθεί

48 - 47 -

49 A/DC Γενικά Όταν μιλάμε για έναν μετατροπέα αναλογικού σήματος σε ψηφιακό (A/D ή A to D) εννοούμε μια ηλεκτρονική διάταξη που δέχεται συνεχή αναλογικά σήματα και τα μετατρέπει σε διακριτούς αριθμούς. Η αντίστροφη διαδικασία ονομάζεται μετατροπή ψηφιακού σήματος σε αναλογικό. Πρακτικά ένας A/D δέχεται μια συνεχή τάση και τη μετατρέπει σε έναν ψηφιακό αριθμό ανάλογα με το μέγεθος της τάσης. Σίγμα Δέλτα Διαμόρφωση (ΣΔ) - Block Διάγραμμα Η διαμόρφωση ΣΔ είναι μια τεχνική κωδικοποίησης σημάτων χρησιμοποιώντας διαμόρφωση πυκνότητας παλμού(pdm). Χρησιμοποιείται σε διάφορες εφαρμογές όπως A/D, D/A, συνθέτες συχνότητας, switching τροφοδοτικά και έλεγχος κινητήρων. Χρησιμοποιώντας ΣΔ σε έναν A/D μπορούμε να πετύχουμε υψηλή ανάλυση. Σε ένα απλοποιημένο σχηματικό διάγραμμα με Σ/Δ για A/D βλέπουμε έναν ελεγχόμενο από τάση ταλαντωτή και ένα μετρητή των παλμών του ταλαντωτή. Επειδή η ανατροφοδότηση του ταλαντωτή έχει τη μορφή της συνάρτησης Dirac ή Δ και ο μετρητής συνήθως αναγράφεται ως Σ, προκύπτει και το Σ/Δ. Πολλές φορές στην πράξη χρησιμοποιούνται 2 ης και μεγαλύτερης τάξης διαμορφωτές. Στον MSP430F2013 υπάρχει ενσωματωμένος ένας μετατροπέας A/D με Σ/Δ προσφέροντας : Ανάλυση 16 bit Σ/Δ Μέχρι 8 διαφορικές αναλογικές είσοδοι Ενσωματωμένο αισθητήριο θερμοκρασίας Ελεγχόμενη από τον χρήστη τάση αναφοράς 1,2V

50 Επειδή το SD16_A module έχει σχεδιαστεί για να ικανοποιεί εφαρμογές χαμηλής κατανάλωσης όταν δεν κάνει A/D μετατροπή, απενεργοποιείται και ενεργοποιείται ξανά στην επόμενη μετατροπή. Προσοχή: Η εσωτερική τάση αναφοράς δεν απενεργοποιείται αυτόματα!!! Καταχωρητές του SD16_A

51 Modes - Temp Sensor Αναφέρθηκε παραπάνω ότι υποστηρίζονται μέχρι 8 αναλογικές είσοδοι. Απ αυτές οι 5 πρώτες (Α0-Α4) είναι ελεύθερες για εξωτερική χρήση ενώ από τις υπόλοιπες η Α5 είναι ένας διαιρέτης της τάσης, η Α6 είναι ένα αισθητήριο θερμοκρασίας και η Α7 είναι ένα βραχυκύκλωμα που χρησιμοποιείται όταν χρειάζεται καλιμπράρισμα. Επίσης ανάλογα την εφαρμογή μπορούμε να επιλέξουμε τη σχέση που θα έχει η αναλογική μας είσοδος με την ψηφιακή έξοδο από 3 διαφορετικές σχέσεις(modes) Για να χρησιμοποιήσουμε το ενσωματωμένο αισθητήριο θερμοκρασίας πρέπει να ορίσουμε τους κατάλληλους καταχωρητές: SD16INCHx = 110 και SD16REFON = 1 και για να πάρουμε πρακτικά αποτελέσματα πρέπει να γνωρίζουμε την απόκριση του αισθητηρίου από την παρακάτω γραφική

52 Παραδείγματα Παράδειγμα 1 Ανάβει το led στο P1.0 όταν η τάση στην αναλογική είσοδο Α1 είναι μεγαλύτερη από 0.3 V. #include <msp430x20x3.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR = 0x01; // Set P1.0 to output direction SD16CTL = SD16REFON + SD16SSEL_1;// 1.2V ref, SMCLK SD16INCTL0 = SD16INCH_1; // A1+/- SD16CCTL0 = SD16UNI + SD16IE; // 256OSR, unipolar, interrupt enable SD16AE = SD16AE2; // P1.1 A1+, A1- = VSS SD16CCTL0 = SD16SC; // Set bit to start conversion _BIS_SR(LPM0_bits + GIE); #pragma vector = SD16_VECTOR interrupt void SD16ISR(void) { if (SD16MEM0 < 0x7FFF) // SD16MEM0 > 0.3V?, clears IFG P1OUT &= ~0x01; else P1OUT = 0x01; Παράδειγμα 2 #include <msp430x20x3.h> #include <stdio.h> #define ADCDeltaOn 31 static unsigned int LastADCVal; void main(void) { BCSCTL2 = DIVS_3; WDTCTL = WDT_MDLY_32; IE1 = WDTIE; P1DIR = 0x01; // ~0.5 Deg C delta // holds ADC temperature result // SMCLK/8 // WDT Timer interval // Enable WDT interrupt // P1.0 to output direction SD16CTL = SD16REFON +SD16SSEL_1;// 1.2V ref, SMCLK SD16INCTL0 = SD16INCH_6; // A6+/- SD16CCTL0 = SD16SNGL + SD16IE ; // Single conv, interrupt _BIS_SR(LPM0_bits + GIE); // Enter LPM0 with interrupt #pragma vector=sd16_vector interrupt void SD16ISR(void) { int Celsius; if (SD16MEM0 <= LastADCVal + ADCDeltaOn) { Celsius = ((SD16MEM0-0x8000)/72)-273;//hex to Celsius convert P1OUT &= ~0x01;

53 printf("%x %d\n",sd16mem0,celsius); //print results else { Celsius = ((SD16MEM0-0x8000)/72)-273;//hex to Celsius convert P1OUT = 0x01; // LED on LastADCVal = SD16MEM0; printf("%x %d\n",sd16mem0,celsius); //print results // Watchdog Timer interrupt service routine #pragma vector=wdt_vector interrupt void watchdog_timer(void) { SD16CCTL0 = SD16SC; // Start SD16 conversion Άσκηση 1. Ενημερωθείτε από το User s Guide της οικογένειας μικροελεγκτών MSP430x2xx για τα περιφερειακά που υποστηρίζουν A/D. 2. Ενημερωθείτε για τη διαμόρφωση Σ/Δ γενικά αλλά και ειδικά στους MSP430. Πως λειτουργεί, χαρακτηριστικά, block διάγραμμα, καταχωρητές, ενεργοποίηση, είσοδοι, μετατροπή, temp sensor. 3. Ενημερωθείτε για το πώς συντάσσεται και χρησιμοποιείται η εντολή printf στη γλώσσα C. Τι ορίσματα δέχεται και πως παραμετροποιείται. 4. Δημιουργείστε κατάλληλο workspace με project το παραδείγματα 1. Δείτε τον τρόπο που ορίζονται οι καταχωρητές. Σχολιάστε τη λειτουργία του. Τροποποιείστε κατάλληλα για τάσεις 0,2V και 0,5V και διαφορετικά modes εξόδου και δείτε στην πράξη τι αλλάζει. 5. Προσθέστε στο workspace για το ερώτημα 4 project με το παράδειγμα 2. Για να δείτε τη λειτουργία του ενεργοποιείστε το Terminal I/O όταν κάνετε debug. Σχολιάστε τη λειτουργία του και βρείτε το ποσοστό του σφάλματος στη μέτρηση, αν υπάρχει. Βρείτε πως διαμορφώνεται η εξίσωση μετατροπής της τιμής του A/D σε ο C. 6. Αν μπορείτε βελτιστοποιείστε το παράδειγμα 2 σε ότι χρειάζεται

54 - 53 -

55 Εισαγωγή Στην εισαγωγή των μικροελεγκτών MSP430 αναφέρθηκαν και τα περιφερειακά που υποστηρίζει. Θα ασχοληθούμε με τα περιφερειακά για σειριακή επικοινωνία που στην οικογένεια MSP430F20xx είναι ένα, το USI(Universal Serial Interface). Η καρδιά του USI αποτελείται από έναν shift register που σε συνδυασμό με το ενσωματωμένο υλικό στον μικροελεγκτή και ελάχιστο κώδικα από τον χρήστη μπορεί να ενεργοποιήσει είτε το SPI είτε το I 2 C πρωτόκολλο. SPI(Serial Peripheral Interface Bus) Το SPI είναι ένα σύγχρονο πρωτόκολλο σειριακής επικοινωνίας δύο κατευθύνσεων (full-duplex). Υποστηρίζει λειτουργία master/slave και η οικογένεια MSP430F20xx υποστηρίζει βασικά 3-wire αλλά και 4-wire SPI:

56 I 2 C (Inter-Integrated Circuit) Το I2C είναι ένα σειριακό πρωτόκολλο επικοινωνίας. Υποστηρίζει λειτουργία πολλών master/slave και λειτουργεί με δύο σήματα(καλώδια). Καταχωρητές Παραδείγματα 1. SPI full-duplex 3-wire Master #include <msp430x20x3.h> void main(void) { volatile unsigned int i; WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1OUT = 0x10; // P1.4 set, else reset P1REN = 0x10; // P1.4 pullup P1DIR = 0x01; // P1.0 output, else input USICTL0 = USIPE7 + USIPE6 + USIPE5 + USIMST + USIOE; // Port, SPI master USICTL1 = USIIE; // Counter interrupt, flag remains set USICKCTL = USIDIV_4 + USISSEL_2; // /16 SMCLK USICTL0 &= ~USISWRST; // USI released for operation USISRL = P1IN; // init-load data P1DIR = 0x04; // Reset Slave P1DIR &= ~0x04; for (i = 0xFFF; i > 0; i--); // Time for slave to ready USICNT = 8; // init-load counter _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt // USI interrupt service routine #pragma vector=usi_vector interrupt void universal_serial_interface(void)

57 { if (0x10 & USISRL) P1OUT = 0x01; else P1OUT &= ~0x01; USISRL = P1IN; USICNT = 8; // re-load counter 2. SPI full-duplex 3-wire Slave #include "msp430x20x3.h" ; ORG 0F800h ; Program Reset ; RESET mov.w #0280h,SP ; Initialize stackpointer StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer SetupP1 mov.b #010h,&P1OUT ; P1.4 set, else bis.b #010h,&P1REN ; P1.4 pullup bis.b #001h,&P1DIR ;SetupUSI bis.b #USIPE7+USIPE6+USIPE5+USIOE,&USICTL0; Port, SPI slave bis.b #USIIE,&USICTL1 ; Counter interrupt, flag remains bic.b #USISWRST,&USICTL0 ; Enable USI mov.b &P1IN,&USISRL ; init-load TX data mov.b #08h,&USICNT ; init-load counter, clear flag ;Mainloop bis.b #LPM4+GIE,SR nop ; LPM4 w/ interrupts enabled ; Required for debugger only ; ; USI_ISR; ; mov.b &USISRL,R4 ; Temp save RX'ed char mov.b &P1IN,&USISRL ; mov.b #08h,&USICNT ; re-load counter, clear flag bic.b #01h,&P1OUT ; bit.b #010h,R4 ; jnc L2 ; L1 bis.b #01h,&P1OUT ; L2 reti ; Exit ISR ; ; ; Interrupt Vectors Used MSP430x20x2/3 ; ORG 0FFFEh ; MSP430 RESET Vector DW RESET ; ORG 0FFE8h ; USICNT DW USI_ISR ; END

58 3. I 2 C Master Receiver, single byte #include "msp430x20x3.h" #define I2CState R4 #define slav_data R5 #define slav_add R6 ; RSEG CSTACK ; Define stack segment ; RSEG CODE ; Assemble to Flash memory EVEN ; RESET mov.w #SFE(CSTACK),SP ; Initialize stackpointer StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer CheckCal cmp.b #0FFh,&CALBC1_1MHZ ; Calibration constants erased? jeq Trap cmp.b #0FFh,&CALDCO_1MHZ jne Load Trap jmp $ ; Trap CPU!! Load mov.b &CALBC1_1MHZ,&BCSCTL1 ; Set DCO to 1MHz mov.b &CALDCO_1MHZ,&DCOCTL SetupP1 mov.b #0xC0,&P1OUT ; P1.6&P1.7 Pullups bis.b #0xC0,&P1REN ; P1.6&P1.7 Pullups mov.b #0xFF,&P1DIR ; unused pins as output SetupP2 mov.b #0x00,&P2OUT mov.b #0xFF,&P2DIR SetupUSI mov.b #USIPE6+USIPE7+USIMST+USISWRST,&USICTL0 ;Port, I2C master mov.b #USIIE+USII2C,&USICTL1 ; Counter interrupt, enable I2C mov.b #USIDIV_3+USISSEL_2+USICKPL,&USICKCTL ; SCL=SMCLK/8(~120KHz) bis.b #USIIFGCC,&USICNT ; bic.b #USISWRST,&USICTL0 ; Enable USI bic.b #USIIFG,&USICTL1 ; Clear pending flag clr.w I2CState clr.b slav_data mov.b #0x91,slav_add Mainloop bis.b #USIIFG,&USICTL1 ; Set flag and start communication bis.w #LPM0+GIE,SR ; Enter LPM0, enable interrupts nop ; Used for debugger call #Delay ; Delay between commn. cycles jmp Mainloop ; USI_ISR ; ; add.w I2CState,PC ; I2C State Machine jmp STATE0 jmp STATE2-57 -

59 jmp STATE4 jmp STATE6 jmp STATE8 jmp STATE10 STATE0 bis.b #0x01,&P1OUT ; LED on: sequence start clr.b &USISRL ; Generate start condition bis.b #USIGE+USIOE,&USICTL0 ; bic.b #USIGE,&USICTL0 ; & send address to slave mov.b slav_add,&usisrl ; and transmit address R/W =1 mov.b &USICNT,R8 ; Bit counter = 8, Tx adress and.b #0xE0,R8 add.b #0x08,R8 mov.b R8,&USICNT mov.w #2,I2CState ; Go to next state rx address (N)ACK bic.b #USIIFG,&USICTL1 ; clear pending flag reti STATE2 ; Receive Address Ack/Nack bit bic.b #USIOE,&USICTL0 ; SDA = input bis.b #0x01,&USICNT ; Bit counter = 1, rx (N)ACK mov.w #4,I2CState ; Go to next state, chk (N)ACK bic.b #USIIFG,&USICTL1 reti STATE4 ; Process Address (N)Ack & data Rx bit.b #0x01,&USISRL ; if NACK received jnc Data_Rx ; else ACK received bis.b #USIOE,&USICTL0 clr.b &USISRL bis.b #0x01,&USICNT ; bit counter = 1, SCL high, SDA low mov.w #10,I2CState ; Go to next state, generate stop bis.b #0x01,&P1OUT ; Turn on LED : error bic.b #USIIFG,&USICTL1 reti Data_Rx bis.b #8,&USICNT ; bit counter = 8, Rx data mov.w #6,I2CState ; goto next state: Test data, (N)ACK bic.b #0x1,&P1OUT ; LED off bic.b #USIIFG,&USICTL1 reti STATE6 ; Send Data (N)Ack bit bis.b #USIOE,&USICTL0 ; SDA = output cmp.b slav_data,&usisrl ; if data valid jnz Data_NACK ; data invalid, goto NACK loop clr.b &USISRL ; send ACK inc.b slav_data ; Increment slave data bic.b #0x01,&P1OUT ; LED off jmp STATE6_Exit Data_NACK mov.b #0xFF,&USISRL ; Send NACK bis.b #0x1,&P1OUT ; LED on:error

60 STATE6_Exit bis.b #0x1,&USICNT ; Bit counter = 1, send NACK bit mov.w #8,I2CState ; goto next state, prep stop bic.b #USIIFG,&USICTL1 reti STATE8 ; Pre stop condition bis.b #USIOE,&USICTL0 ; SDA =output clr.b &USISRL bis.b #0x01,&USICNT ; Bit counter = 1, SCL high, SDA low mov.w #10,I2CState ; Go to next state, generate stop bic.b #USIIFG,&USICTL1 reti STATE10 ; Generate stop condition mov.b #0xFF,&USISRL ; USISRL=1 to release SDA bis.b #USIGE,&USICTL0 ; Transparent latch enabled bic.b #USIGE+USIOE,&USICTL0 ; Latch/SDA output disabled mov.w #0,I2CState ; Reset state machine for next Tx bic.w #LPM0,0(SP) ; Exit active for next transfer bic.b #USIIFG,&USICTL1 reti ; Delay ; Delay between communication cycles ; mov.w #0xFFFF,R7 DL1 dec.w R7 jnz DL1 ret ; ; Interrupt Vectors Used MSP430x2013 ; COMMON INTVEC ORG RESET_VECTOR ; MSP430 RESET Vector DW RESET ; ORG USI_VECTOR ; USICNT DW USI_ISR ; END 4. I 2 C Slave Transmitter, single byte #include <msp430x20x3.h> char SLV_Data = 0; // Variable for transmitted data char SLV_Addr = 0x90; // Address is 0x48<<1 for R/W int I2C_State = 0; // State variable void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog if (CALBC1_1MHZ ==0xFF CALDCO_1MHZ == 0xFF) {

61 while(1); // If calibration constants erased // do not load, trap CPU!! BCSCTL1 = CALBC1_1MHZ; // Set DCO DCOCTL = CALDCO_1MHZ; P1OUT = 0xC0; // P1.6 & P1.7 Pullups P1REN = 0xC0; // P1.6 & P1.7 Pullups P1DIR = 0xFF; // Unused pins as outputs P2OUT = 0; P2DIR = 0xFF; USICTL0 = USIPE6+USIPE7+USISWRST; // Port & USI mode setup USICTL1 = USII2C+USIIE+USISTTIE; // Enable I2C mode & USI interrupts USICKCTL = USICKPL; // Setup clock polarity USICNT = USIIFGCC; // Disable automatic clear control USICTL0 &= ~USISWRST; // Enable USI USICTL1 &= ~USIIFG; // Clear pending flag _EINT(); while(1) { LPM0; // CPU off, await USI interrupt _NOP(); // Used for IAR //****************************************************** // USI interrupt service routine //****************************************************** #pragma vector = USI_VECTOR interrupt void USI_TXRX (void) { if (USICTL1 & USISTTIFG) // Start entry? { P1OUT = 0x01; // LED on: Sequence start I2C_State = 2; // Enter 1st state on start switch(i2c_state) { case 0: //Idle, should not get here break; case 2: //RX Address USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, RX Address USICTL1 &= ~USISTTIFG; // Clear start flag I2C_State = 4; // Go to next state: check address break; case 4: // Process Address and send (N)Ack if (USISRL & 0x01) // If read... SLV_Addr++; // Save R/W bit USICTL0 = USIOE; // SDA = output if (USISRL == SLV_Addr) // Address match? { USISRL = 0x00; // Send Ack P1OUT &= ~0x01; // LED off

62 I2C_State = 8; else { USISRL = 0xFF; P1OUT = 0x01; I2C_State = 6; USICNT = 0x01; break; case 6: // Prep for Start condition USICTL0 &= ~USIOE; SLV_Addr = 0x90; I2C_State = 0; break; case 8: // Send Data byte USICTL0 = USIOE; USISRL = SLV_Data; USICNT = 0x08; I2C_State = 10; break; case 10: // Receive Data (N)Ack USICTL0 &= ~USIOE; USICNT = 0x01; I2C_State = 12; break; case 12: // Process Data Ack/NAck if (USISRL & 0x01) { P1OUT = 0x01; else { P1OUT &= ~0x01; SLV_Data++; // Prep for Start condition USICTL0 &= ~USIOE; SLV_Addr = 0x90; I2C_State = 0; break; USICTL1 &= ~USIIFG; // Go to next state: TX data // Send NAck // LED on: error // Go to next state: prep for next Start // Bit counter = 1, send (N)Ack bit // SDA = input // Reset slave address // Reset state machine // SDA = output // Send data byte // Bit counter = 8, TX data // Go to next state: receive (N)Ack // SDA = input // Bit counter = 1, receive (N)Ack // Go to next state: check (N)Ack // If Nack received... // LED on: error // Ack received // LED off // Increment Slave data // SDA = input // Reset slave address // Reset state machine // Clear pending flags

63 Άσκηση 1. Ενημερωθείτε για τα σειριακά πρωτόκολλα SPI και I 2 C: αρχή λειτουργίας, σήματα και υλοποίηση. 2. Ενημερωθείτε από το User s Guide του μικροελεγκτή για τα περιφερειακά που υποστηρίζουν σειριακή επικοινωνία: ενεργοποίηση, λειτουργίες, καταχωρητές. 3. Δημιουργείστε κατάλληλο workspace για την άσκηση με projects τα παραδείγματα 1, 2, 3 & 4. Εφαρμόστε στο αναπτυξιακό και σχολιάστε τη λειτουργία τους. 4. Πραγματοποιήστε κατάλληλη συνδεσμολογία των αναπτυξιακών ανά δύο, έτσι ώστε να υποστηρίζουν το πρωτόκολλο SPI(3-wire). Ύστερα φορτώστε κατάλληλο κώδικα υλοποιώντας το πρωτόκολλο έχοντας master/slave σύνδεση. Δείτε τη λειτουργία του στην πράξη. 5. Πραγματοποιήστε κατάλληλη συνδεσμολογία των αναπτυξιακών ανά δύο, έτσι ώστε να υποστηρίζουν το πρωτόκολλο I 2 C(2-wire). Ύστερα φορτώστε κατάλληλο κώδικα υλοποιώντας το πρωτόκολλο έχοντας master/slave σύνδεση και μεταφορά δεδομένων από το master στο slave. Τροποποιήστε κατάλληλα για μεταφορά δεδομένων από το slave στο master.δείτε τη λειτουργία του στην πράξη

64 - 63 -

65 Εισαγωγή Παρουσίαση του ez430-rf2500 Το ez430-rf2500 είναι ένα ολοκληρωμένο αναπτυξιακό εργαλείο που περιλαμβάνει όλο το υλικό και το λογισμικό που απαιτείται για την λειτουργία ενός ασύρματου συστήματος με τους MSP430 σε ένα USB stick. Χρησιμοποιεί τον MSP430F22x4 και τον CC2500, έναν πολυκάναλο πομποδέκτη RF για χαμηλής ισχύος ασύρματες εφαρμογές. Ο USB προγραμματιστής του ez430-rf2500 προσφέρει έναν ελεγκτή UART δημιουργώντας μια θύρα για απευθείας σειριακή επικοινωνία με το αναπτυξιακό. Επίσης μπορεί να προγραμματίσει και τις εκδόσεις των ez430-f2013 και ez430- F

66 Εγκατάσταση του ez430-rf Αφού έχουμε ήδη εγκαταστήσει το Sensor Monitor Visualizer (τοποθετήστε το CD που περιέχεται στο πακέτο και ακολουθήστε τα βήματα στο μενού που ανοίγει) τοποθετήστε το ez430- RF2500 σε μια θύρα USB του Η/Υ. 2. Τα Windows το εγκαθιστούν αυτόματα. 3. Επίσης βρίσκουν και ένα καινούριο υλικό, το MSP430 Application UART. 4. Στο παράθυρο της εγκατάστασης του καινούριου υλικού επιλέγουμε αυτόματη εγκατάσταση και είμαστε έτοιμοι να προχωρήσουμε. Εισαγωγή στον πομποδέκτη CC2500 Ο CC2500 συνδέεται και ελέγχεται μέσω ενός ελεγκτή SPI, Και στο RF2500 έτσι είναι συνδεδεμένο, έτοιμο για προγραμματισμό

67 Sensor Monitor Visualizer Στο πακέτο του RF2500 περιέχεται ότι χρειάζεται για μια πρώτη γνωριμία στα ασύρματα δίκτυα αισθητήρων(wsn). Σ αυτό το παράδειγμα ορίζονται δύο συσκευές. Μία ως Access Point και μία ως End Device, οι οποίες διαβάζουν από τον ενσωματωμένο στον μικροελεγκτή αισθητήρα θερμοκρασίας δεδομένα, τα οποία στέλνονται στο Access Point και εκμεταλλεύονται από το υπάρχον λογισμικό στο πακέτο για την απεικόνιση του δικτύου. 1. Ανοίγουμε και αποθηκεύουμε τον φάκελο με τον κώδικα στην επιφάνεια εργασίας(από το CD που περιέχεται στο πακέτο) 2. Ανοίγουμε το workspace ez430-rf2500 Sensor Monitor Demo v1.xx.eww και επιλέγουμε ως ενεργό το project End Device. 3. Ρυθμίζουμε κατάλληλα και περνάμε το πρόγραμμα στη συσκευή. 4. Αφαιρούμε την πλακέτα από τον προγραμματιστή και τη συνδέουμε στη βάση με τις μπαταρίες. 5. Τοποθετούμε την άλλη πλακέτα στον προγραμματιστή, επιλέγουμε ως ενεργό το project Access Point. 6. Ρυθμίζουμε κατάλληλα και περνάμε το πρόγραμμα στη συσκευή. 7. Κλείνουμε το IAR Embedded Workbench αφήνοντας την συσκευή σε λειτουργία και τρέχουμε το ez430-rf2500 Sensor Monitor από την επιφάνεια εργασίας και ενεργοποιούμε την πλακέτα που τροφοδοτείται από τις μπαταρίες αλλάζοντας θέση στο jumper.βλέπουμε την παρακάτω εικόνα: Μπορούμε να ρυθμίζουμε περισσότερα από ένα End Device και τότε θα δούμε κάτι τέτοιο: Παραπάνω είδαμε ένα εικονικό περιβάλλον απόδοσης του δικτύου και των τιμών που λαμβάνει το Access Point. Ας δούμε σε βαθύτερο επίπεδο τι γίνεται:

68 1. Έναρξη Όλα τα προγράμματα Βοηθήματα Επικοινωνίες HyperTerminal.exe 2. Name: Msp430 UART, επιλέγουμε το port που αντιστοιχεί στο MSP430 Application UART και ρυθμίζουμε ως εξής: SimpliciTI Το SimpliciTI είναι ένα πρωτόκολλο δικτύου RF για μικρά RF δίκτυα. Έχει σχεδιαστεί για εύκολη εφαρμογή και ανάπτυξη με τα RF αναπτυξιακά εργαλεία της Texas Instruments όπως το ez430-rf2500 υποστηρίζοντας τις οικογένειες πομποδεκτών CC1XXX/CC25XX/CC430. Όλα τα απαραίτητα εργαλεία(κώδικες κλπ) υπάρχουν διαθέσιμα και στο CD που περιέχεται στο πακέτο. Παράδειγμα ενός SimpliciTI δικτύου

69 Παραδείγματα Για τη δημιουργία ενός project που να υποστηρίζει RF επικοινωνία στο IAR Embedded Workbench πρέπει να ενσωματώσουμε τους κατάλληλους οδηγούς. 1. Δημιουργούμε ένα project κατά τα γνωστά 2. Στις ρυθμίσεις για το project C/C++ Compiler Preprocessor προσθέτουμε τους απαραίτητους κώδικες από το SimpliciTI Additional include directories Defined symbols \bsp Board Support Package Οδηγοί αρχικοποίησης MRFI_CC2500 \bsp\drivers buttons & leds \bsp\boards\ez430rf Ορισμός συσκευής Ορισμός RF συσκευής \mrfi Minimal RF Interface Οδηγοί αρχικοποίησης 3. Δημιουργήστε την παρακάτω δομή για το project δημιουργώντας φακέλους και προσθέτοντας τα κατάλληλα αρχεία. 4. Προσθέστε τον κυρίως κώδικα π.χ. main.c στον φάκελο Application

70 Παράδειγμα 1 Ανάβει σταθερά τα δύο ενσωματωμένα led #include "msp430x22x4.h" int main( void ) { WDTCTL = WDTPW + WDTHOLD; P1DIR = 0x03; P1OUT = 0x03; while(1); Παράδειγμα 2 Αφού τοποθετηθεί σε τουλάχιστον δύο RF2500 και τροφοδοτηθούν τότε πατήστε το ενσωματωμένο button σε ένα από τα δύο. #include "mrfi.h" int main(void) { BSP_Init(); P1REN = 0x04; P1IE = 0x04; MRFI_Init(); MRFI_WakeUp(); MRFI_RxOn(); bis_sr_register(gie+lpm4_bits); void MRFI_RxCompleteISR() { P1OUT ^= 0x02; #pragma vector=port1_vector interrupt void Port_1 (void) { P1IFG &= ~0x04; mrfipacket_t packet; packet.frame[0]=8+20; MRFI_Transmit(&packet, MRFI_TX_TYPE_FORCED); P1OUT ^= 0x01; BSP_Init() MRFI_Init() Απενεργοποιεί τον watchdog timer, ορίζει συχνότητα λειτουργίας του MCLK στα 8MHz, τα Led σαν εξόδους και το button σαν είσοδο. Ενεργοποιεί την σύνδεση του μικροελεγκτή με τον πομποδέκτη (SPI) και αρχικοποιεί κατάλληλα τους καταχωρητές του CC2500. MRFI_WakeUp() Ξεκινά την RF επικοινωνία ενεργοποιώντας τον κρύσταλλο στο CC

71 Παράδειγμα 3 #include "radios/family1/mrfi_spi.h" #include "mrfi.h" uint8_t index_output = 9; mrfipacket_t packettosend; int main(void) {BSP_Init(); MRFI_Init(); P3SEL = 0x30; UCA0CTL1 = UCSSEL_2; UCA0BR0 = 0x41; UCA0BR1 = 0x3; UCA0MCTL = UCBRS_2; UCA0CTL1 &= ~UCSWRST; // P3.4,5 = USCI_A0 TXD/RXD // SMCLK // 9600 from 8Mhz // Initialize USCI state machine IE2 = UCA0RXIE; // Enable USCI_A0 RX interrupt MRFI_WakeUp(); MRFI_RxOn(); index_output=0; bis_sr_register(gie+lpm4_bits); void MRFI_RxCompleteISR() {uint8_t i; P1OUT ^= 0x02; mrfipacket_t packet; MRFI_Receive(&packet); char output[] = {" "; for (i=9;i<29;i++) { output[i-9]=packet.frame[i]; if (packet.frame[i]=='\r') {output[i-9]='\n'; output[i-8]='\r'; TXString(output, (sizeof output)); #pragma vector=usciab0rx_vector interrupt void USCI0RX_ISR(void) {char rx = UCA0RXBUF; uint8_t i; packettosend.frame[index_output]=rx; index_output++; if (rx=='\r' index_output==29) { packettosend.frame[0]=28; MRFI_Transmit(&packetToSend, MRFI_TX_TYPE_FORCED); index_output = 9; for(i=9;i<29;i++) { packettosend.frame[i]=' '; P1OUT ^= 0x01; P1OUT ^= 0x02; TXString(&rx, 1);

72 Το παραπάνω παράδειγμα είναι μια ολοκληρωμένη σύνθεση RF επικοινωνίας. Ενεργοποιεί το ενσωματωμένο UART και στέλνει μηνύματα από ένα τερματικό παράθυρο στον buffer του CC2500, το οποίο με τη σειρά του το στέλνει στο άλλο CC2500 που προωθεί το μήνυμα σε ένα άλλο τερματικό παράθυρο. ΑΣΚΗΣΗ 1. Ενημερωθείτε από το manual του μικροελεγκτή για τα χαρακτηριστικά του(ηλεκτρικά χαρακτηριστικά, καταχωρητές, περιφερειακά). Ενημερωθείτε από το manual του πομποδέκτη για τα χαρακτηριστικά του(ηλεκτρικά χαρακτηριστικά, καταχωρητές, συχνότητα εκπομπής, ισχύς εκπομπής, περιφερειακά). Ενημερωθείτε για το πρωτόκολλο SimpliciTI. 2. Προτείνεται τρόπους υπολογισμού της κατανάλωσης ισχύος του αναπτυξιακού χρησιμοποιώντας τη βάση με τις μπαταρίες. 3. Δημιουργήστε κατάλληλο workspace για την άσκηση με project το παράδειγμα 1. Σε νέο project στο ίδιο workspace τροποποιείστε το παράδειγμα 1 έτσι ώστε να ενεργοποιούνται τα led όταν πατηθεί το ενσωματωμένο button. 4. Δημιουργήστε κατάλληλο workspace για RF επικοινωνία με project το παράδειγμα 2. Δείτε στην πράξη πως λειτουργεί ο κώδικας και εξηγήστε. Προτείνετε τρόπους βελτιστοποίησης. 5. Αφού ενημερωθήκατε για τη συχνότητα εκπομπής του αναπτυξιακού τροποποιείστε το project με το παράδειγμα 2 προσθέτοντας τις παρακάτω γραμμές κώδικα όπου χρειάζεται αφού τις συμπληρώσετε με τις κατάλληλες τιμές: #include "radios/family1/mrfi_spi.h".... mrfispiwritereg(channr,???? ); Εξηγήστε πως βοηθά αυτό στη λειτουργία του προγράμματος. 6. Αφού ενημερωθήκατε για τη εκπομπή ισχύς του πομποδέκτη τροποποιείστε το project με το παράδειγμα 2 προσθέτοντας τις παρακάτω γραμμές όπου χρειάζεται και ελέγξτε τη λειτουργία του για διάφορες τιμές: #include "radios/family1/mrfi_spi.h".... mrfispiwritereg(patable,???? ); Εξηγήστε πως επιδρά στη λειτουργία του πομποδέκτη. 7. Δημιουργήστε κατάλληλο workspace για RF επικοινωνία με project το παράδειγμα 3. Δείτε τη λειτουργία του. Εξηγήστε με διάγραμμα ροής. Βελτιστοποιήστε αν χρειάζεται χρησιμοποιώντας και τις παραπάνω γραμμές κώδικα

73 - 72 -

74 Εισαγωγή στο Code Composer Studio v4 (IDE) Το Code Composer Studio (CCStudio) είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης για DSPs και μικροελεγκτές της ΤΙ. Περιλαμβάνει μια σουίτα εργαλείων που χρησιμοποιούνται για την ανάπτυξη και τον εντοπισμό σφαλμάτων στις ενσωματωμένες εφαρμογές. Περιλαμβάνει μεταγλωττιστές για κάθε μία από τις οικογένειες της ΤΙ, συντάκτη πηγαίου κώδικα, εντοπισμό σφαλμάτων και πολλά άλλα χαρακτηριστικά. Το CCStudio παρέχει οικεία εργαλεία και επιτρέπει στον χρήστη να ξεκινήσει πιο γρήγορα από ποτέ και προσθέτει λειτουργικότητα στην εφαρμογή του χάρη στα εξελιγμένα εργαλεία του. Εγκατάσταση 1. Θα βρείτε το αρχείο εγκατάστασης του CCStudio είτε στο cd που περιέχεται στα αναπτυξιακά εργαλεία της TI είτε τη νεότερη έκδοση στο 2. Έχει αρκετά εύκολο παραθυριακό setup Έναρξη CCStudio Για να ανοίξουμε το CCStudio: Έναρξη όλα τα προγράμματα Texas Instruments Code Composer Studio v4 Code Composer Studio v4 Core Edition

75 Δημιουργία νέου project - Ρυθμίσεις Η δομή του CCStudio(όπως και του IAR IDE) αποτελείται ιεραρχικά από: Workspace (που περιέχει project-projects) Project (που περιέχει file-files) File Στην πρώτη οθόνη που βλέπουμε επιλέγουμε το φάκελο του workspace που θα εργαστούμε και έπειτα βλέπουμε την αρχική οθόνη του CCStudio. 1. File New CCS Project

76 2. π.χ. New Project Next 3. Επιλέγουμε Full C/C++ Indexer Next

77 4. Ορίζουμε στο παράθυρο τις ρυθμίσεις σύμφωνα με τον μικροελεγκτή που θέλουμε να προγραμματίσουμε. Αν το πρόγραμμα μας θα είναι σε assembly πρέπει να επιλέξουμε Treat as an Assembly-only project. 5. Finish Βλέπουμε το νέο project στο αριστερό παράθυρο του CCStudio. 6. Εισάγουμε το αρχείο με τον κώδικα που θέλουμε π.χ. msp430x20x3_1.c κάνοντας δεξί κλικ στο New project [Active Debug] Add Files to Project... msp430x20x3_1.c και Open. και το βλέπουμε με διπλό κλικ. 7. Τώρα είμαστε έτοιμοι να κάνουμε compile:menu Project Rebuild all. Προσέχουμε για λάθη στο παράθυρο μηνυμάτων!!!! 8. Συνεχίζουμε με Target Debug Active Project αφού συνδέσουμε κατάλληλα τον μικροελεγκτή που θα προγραμματίσουμε και βλέπουμε την παρακάτω οθόνη:

78 Debugging Tα «εργαλεία» μπορούμε να τα δούμε μέσω του μενού View 1. Όπως βλέπουμε ο κέρσορας βρίσκεται στην πρώτη εκτελέσιμη γραμμή του προγράμματός. Έχουμε δύο επιλογές: Άμεση εκτέλεση Βηματική εκτέλεση 2. Βηματική εκτέλεση προγράμματος Ανοίγουμε το μενού των καταχωρητών από το View Registers Πρακτικά πατώντας Target Step Into βλέπουμε ότι εκτελέστηκε η πρώτη γραμμή του προγράμματος και ο έλεγχος πέρασε στη δεύτερη γραμμή που είναι έτοιμη να εκτελεστεί. 3. Σε κάθε εντολή μπορούμε να ελέγχουμε τους καταχωρητές που εμπλέκονται, οι οποίοι εμφανίζονται στο μενού Registers ανά ομάδες. 4. Για να σταματήσουμε τη διαδικασία του Debugging πατάμε Target Terminate All Σχόλια Γενικά το CCStudio είναι ένα αναπτυξιακό περιβάλλον με πολλές δυνατότητες. Σε σύγκριση με το IAR(IDE) υστερεί σε ένα βασικό κομμάτι, δεν υποστηρίζει simulation(προσομοίωση), αλλά υπερτερεί σε άλλα. Υποστηρίζει αυτόματη σύνδεση για νεότερες εκδόσεις διορθώνοντας τυχόν λάθη με πολύ καλή υποστήριξη, έχει πολύ καλό σύστημα βοήθειας για όλες τις λειτουργίες του και σε σχέση με το IAR(IDE) υποστηρίζει 16ΚΒ κώδικα στον compiler για C/C++. Γενικά στέκεται αρκετά καλά σε επίπεδο λειτουργιών και επιλογών του debugger δίνοντας την ευκολία που χρειάζεται με τα τόσα εργαλεία. Ας μην ξεχνάμε ότι βασίζεται στο γνωστό αναπτυξιακό περιβάλλον ανοιχτού κώδικα Eclipse, το οποίο είναι δοκιμασμένο και σταθερό στο χρόνο

79 - 78 -

80 Εισαγωγή Μια οθόνη υγρών κρυστάλλων (LCD), είναι μια λεπτή, επίπεδη ηλεκτρονική οθόνη που χρησιμοποιεί τις ιδιότητες των υγρών κρυστάλλων (LCS). Οι υγροί κρύσταλλοι δεν εκπέμπουν φως άμεσα. Απαιτείται επομένως μια φωτεινή πηγή για να λειτουργήσουν και γι αυτό έχουν χαρακτηριστεί ως «παθητικές» οθόνες. Οι πιο κοινές οθόνες LCD βασίζονται στην κλασική Hitachi HD44780 ή σε άλλες συμβατές με την HD Παρακάτω, θα δούμε οθόνες LCD χαρακτήρων και τη διασύνδεση τους με τον μικροελεγκτή MSP430F2013 με 4-bit. Pinout Παρακάτω βλέπουμε το pinout για μια οθόνη χαρακτήρων LCD 2x

81 Εντολές Από τον παραπάνω πίνακα βγαίνουν οι παρακάτω εντολές για πιο εύκολη μεταχείριση με τον μικροελεγκτή

82 Αρχικοποίηση και σύνδεση Ανάλογα με το μοντέλο μπορεί και να μπορεί να λειτουργήσει και με τροφοδοσία 3.7V. Αν δεν γίνεται αυτό θα πρέπει να χρησιμοποιηθεί κατάλληλη διάταξη(π.χ. buffer) για να λειτουργήσει με τάση 5V. Γενικά εκτός από την τροφοδοσία η σύνδεση με τον μικροελεγκτή γίνεται συνδέοντας μόνο 4-bits δεδομένων και 2 ακόμα για Enable/Register Select. Το Read/Write το συνδέουμε στο ground αφού μόνο γράφουμε. Παρακάτω βλέπουμε τη ρουτίνα αρχικοποίησης για λειτουργία 4-bit

Σελ. Θεωρία : Θεωρητική εισαγωγή στους µικροελεγκτές MSP430. Τίτλος

Σελ. Θεωρία : Θεωρητική εισαγωγή στους µικροελεγκτές MSP430. Τίτλος Περιεχόµενα Τίτλος Σελ. Θεωρία : Θεωρητική εισαγωγή στους µικροελεγκτές MSP430...... 6 Μικροελεγκτές γενικά....................................... 6 Μικροελεγκτές vs. Μικροεπεξεργαστές..................

Διαβάστε περισσότερα

ΜΕΡΟΣ 1. Διακοπές (Interrupts)

ΜΕΡΟΣ 1. Διακοπές (Interrupts) Εργαστήριο Μικροελεγκτών 6η ΑΣΚΗΣΗ ΗΜΕΡΟΜΗΝΙΑ ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΑΜ ΕΞΑΜΗΝΟ ΣΚΟΠΟΣ ΕΡΓΑΣΤΗΡΙΟΥ Διακοπές (Interrupts) Τρόπο Λειτουργίας (Operating Modes) ΜΕΡΟΣ 1. Διακοπές (Interrupts) 1. Εισαγωγή 1. Μια διακοπή

Διαβάστε περισσότερα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

Μαθαίνοντας το hardware του αναπτυξιακού

Μαθαίνοντας το hardware του αναπτυξιακού 1. ΑΣΚΗΣΗ 1 Μαθαίνοντας το hardware του αναπτυξιακού Προϋποθέσεις Το εργαστήριο αυτό προϋποθέτει το διάβασμα και χρήση των εξής: Αρχείο mcbstr9.chm HTML, που δίδεται με τα υπόλοιπα αρχεία του εργαστηρίου.

Διαβάστε περισσότερα

Καθολική Σειριακή Διεπιφάνεια (Universal Serial Interface)

Καθολική Σειριακή Διεπιφάνεια (Universal Serial Interface) Καθολική Σειριακή Διεπιφάνεια (Universal Serial Interface) Εισαγωγή Η καθολική σειριακή διεπιφάνεια (universal serial interface, USI) παρέχει SPI (Serial peripheral interface) και I 2 C (Inter integrated

Διαβάστε περισσότερα

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Τι εννοούμε με τον όρο υπολογιστικό σύστημα και τι με τον όρο μικροϋπολογιστικό σύστημα; Υπολογιστικό

Διαβάστε περισσότερα

Προγραμματισμός σε C και προγραμματισμός Μακροεντολών με τον ΕΖ430

Προγραμματισμός σε C και προγραμματισμός Μακροεντολών με τον ΕΖ430 Προγραμματισμός σε C και προγραμματισμός Μακροεντολών με τον ΕΖ430 Άσκηση 1. Πολλαπλασιασμός και διαίρεση με ολίσθηση bits. Οι πολλαπλασιασμοί και οι διαιρέσεις είναι περίπλοκες διαδικασίες για υλοποίηση

Διαβάστε περισσότερα

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino UNO Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O

Διαβάστε περισσότερα

WDT και Power Up timer

WDT και Power Up timer Ο ΜΙΚΡΟΕΛΕΓΚΤΗΣ PIC O μικροελεγκτής PIC κατασκευάζεται από την εταιρεία Microchip. Περιλαμβάνει τις τρεις βασικές κατηγορίες ως προς το εύρος του δίαυλου δεδομένων (Data Bus): 8 bit (σειρές PIC10, PIC12,

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects)

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects) ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ Τίτλος Μαθήματος Μικροελεγκτές και Ενσωματωμένα συστήματα Ανάπτυξη και Εφαρμογές Κωδικός Μαθήματος Μ2 Θεωρία / Εργαστήριο Θεωρία + Εργαστήριο Πιστωτικές μονάδες 4 Ώρες Διδασκαλίας 2Θ+1Ε

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ 1.1 ΕΙΣΑΓΩΓΗ ΣΤΑ ΑΝΑΛΟΓΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ 1 1.1.1 Αναλογικά σήματα 1 1.1.2 Οι αντιστάσεις 3 1.1.3 Οι πυκνωτές 7 1.1.4 Τα πηνία 11 1.1.5 Οι δίοδοι 13 1.1.6

Διαβάστε περισσότερα

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Interrupts - Διακοπές Είναι ένας τρόπος για να διακοπεί η ροή ενός προγράμματος έτσι ώστε να εξυπηρετηθεί ένα έκτακτο γενογός

Διαβάστε περισσότερα

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Πλατφόρμες ενσωματωμένων συστημάτων Διδάσκων: Παναγιώτης Καρκαζής Περίγραμμα - Δίαυλοι επικοινωνίας - Μνήμες -Συσκευές Ι/Ο Timers Counters keyboards Leds 7 segment display

Διαβάστε περισσότερα

10. Πληκτρολόγιο matrix 4x4

10. Πληκτρολόγιο matrix 4x4 10. Πληκτρολόγιο matrix 4x4 Το πληκτρολόγιο matrix 4x4 αποτελείται από 16 πλήκτρα διακόπτες τα οποία είναι συνδεδεμένα μεταξύ τους ανά 4 σε τέτοια διάταξη ώστε, με το ένα άκρο τους να σχηματίζουν 4 σειρές

Διαβάστε περισσότερα

Embedded Systems Laboratory LAB 06 CLKS-a

Embedded Systems Laboratory LAB 06 CLKS-a Embedded Systems Laboratory LAB 06 CLKS-a Μετρητές (Timers) και Ρολόγια (Clocks) Στο τρέχον εργαστήριο θα ασχοληθούµε µε τις πηγές και τις γραµµές χρονισµού του MSP430F2013. Η διάταξη των επαφών που µας

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ ΕΙΣΑΓΩΓΗ Θέµατα ❸Συστήµατα Η/Υ (αναφορά) ❸Γλώσσα υπολογιστών ❸Γλώσσες προγραµµατισµού (low-high level) ❸Low level VS high level programming ❸Βασικά µέρη Η/Υ ❸Μικροϋπολογιστές (µc µp) ❸Αρχιτεκτονική µικροελεγκτών

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ Σκοπός της άσκησης Οι φοιτητές θα εξοικειωθούν με την πλακέτα του μικροελεγκτή και θα αναγνωρίσουν τα βασικά της στοιχεία. Επίσης θα εξοικειωθούν

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΛΕΓΚΤΩΝ

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΛΕΓΚΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΛΕΓΚΤΩΝ ATMEL AVR8 ΠΟΡΛΙΔΑΣ ΔΗΜΗΤΡΙΟΣ ATMEL AVR Atmega16 Χαρακτηριστικά Μικροελεγκτής 8-bit υψηλής απόδοσης και χαμηλής κατανάλωσης Προοδευμένη αρχιτεκτονική RISC (Reduced instruction

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017)

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017) ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017) Περιγραφή της Άσκησης Ο σκοπός της πρώτης άσκησης είναι κυρίως η εξοικείωση με το περιβάλλον προγραμματισμού του Arduino, γι αυτό και δεν είναι ιδιαίτερα σύνθετη. Αρχικά, θα

Διαβάστε περισσότερα

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

Διαβάστε περισσότερα

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

Διαβάστε περισσότερα

12. Διακοπές Interrupts (IRQ)

12. Διακοπές Interrupts (IRQ) 2. Διακοπές Interrupts (IRQ) Πίνακας Ι. Χειρισμός διακοπών στον ATmega6. A/A Program address Source Vector Interrupt definition External Pin, Power-on Reset, Brown-outReset, Watchdog Reset, and JTAG AVR

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 3 : Μια άποψη του κορυφαίου επιπέδου λειτουργίας και διασύνδεσης του υπολογιστή Καρβούνης Ευάγγελος Η έννοια

Διαβάστε περισσότερα

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Μαθηµα 2 ηµήτρης Λιούπης 1 Intel SA-1110 µc StrongARM core. System-on-Chip. Εξέλιξη των SA-110 και SA-1100. 2 ARM cores ARM: IP (intellectual

Διαβάστε περισσότερα

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ασύγχρονη σειριακή

Διαβάστε περισσότερα

Ενσωµατωµένα Συστήµατα

Ενσωµατωµένα Συστήµατα Ενσωµατωµένα Συστήµατα για εφαρµογές πραγµατικού χρόνου Μικροελεγκτής Arduino Ιωάννης Καλόµοιρος Αναπληρωτής Καθηγητής Τµήµα Μηχανικών Πληροφορικής Μάθηµα 7ο Τι είναι το Arduino... Ένα open-hardware σύστηµα

Διαβάστε περισσότερα

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW.

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW. Σκοπός Μάθημα 2 Δραστηριότητα 1 Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Βασική δομή ενός προγράμματος στο LabVIEW. Εμπρόσθιο Πλαίσιο (front panel). Σχεδίαση

Διαβάστε περισσότερα

1. Περιβάλλον εργασίας παραδείγματα σύνταξης

1. Περιβάλλον εργασίας παραδείγματα σύνταξης 1. Περιβάλλον εργασίας παραδείγματα σύνταξης Θα χρειαστούμε τα προγράμματα Atmel Studio 7.0 (http://www.atmel.com/) και khazama AVR Programmer (http://khazama.com/project/programmer/). Τα προγράμματα διατίθενται

Διαβάστε περισσότερα

Συστήματα Μικροεπεξεργαστών

Συστήματα Μικροεπεξεργαστών Εργαστήριο 1 ο Εισαγωγή στον AVR Περίγραμμα Εργαστηριακής Άσκησης Εισαγωγή... 2 Κατηγορίες μικροελεγκτών AVR... 2 Εξοικείωση με το περιβάλλον AVR Studio 4... 3 Βήμα 1ο: Δημιουργία νέου έργου (project)...

Διαβάστε περισσότερα

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

Διαβάστε περισσότερα

Είναι το πρωτόκολλο RS232 που χρησιμοποιείται στις σειριακές θύρες COM με τη διαφορά ότι εκτελείται σε επίπεδο τάσεων TTL. 2

Είναι το πρωτόκολλο RS232 που χρησιμοποιείται στις σειριακές θύρες COM με τη διαφορά ότι εκτελείται σε επίπεδο τάσεων TTL. 2 16. USART Οι AVR διαθέτουν ενσωματωμένη διάταξη για υποστήριξη σειριακής επικοινωνίας USART 1 (Universal Synchronous and Asynchronous serial Receiver and Transmitter). Η ενσωματωμένη διάταξη μας εξυπηρετεί

Διαβάστε περισσότερα

10. Πληκτρολόγιο matrix 4x4

10. Πληκτρολόγιο matrix 4x4 10. Πληκτρολόγιο matrix 4x4 Το πληκτρολόγιο matrix 4x4 αποτελείται από 16 πλήκτρα διακόπτες τα οποία είναι συνδεδεμένα μεταξύ τους ανά 4 σε τέτοια διάταξη ώστε, με το ένα άκρο τους να σχηματίζουν 4 σειρές

Διαβάστε περισσότερα

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες Στην 4 η εργαστηριακή άσκηση θα ασχοληθούμε με την ιεραρχική σχεδίαση. Συγκεκριμένα θα μάθουμε να σχεδιάζουμε απλές οντότητες τις οποίες

Διαβάστε περισσότερα

2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ

2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ 1 2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ Σκοπός της άσκησης: εξοικείωση µε τις θύρες εισόδου/εξόδου ενός µικροελεγκτή 2. Θεωρητικό Μέρος 2.1.1 Θύρες εισόδου / εξόδου

Διαβάστε περισσότερα

Ενσωματωμένα Συστήματα

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ARDUINO Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 1: Εισαγωγή στα ενσωματωμένα συστήματα (embedded systems) Εργαστήριο Αυτομάτου Ελέγχου Ενσωματωμένα συστήματα (Embedded Systems) Ενσωματωμένα συστήματα (Embedded

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... 11

ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... 11 ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... 11 1. ΑΣΚΗΣΗ 1... 13 Προϋποθέσεις... 13 Εισαγωγή... 13 1.1 Το Υλικό του Αναπτυξιακού (Hardware)... 14 1.1.1 Διαβάζοντας το σχηματικό... 16 1.1.2 STR912FAW44XB... 16 1.1.3 Χάρτης

Διαβάστε περισσότερα

Εφαρμογές Σειριακής Επικοινωνίας

Εφαρμογές Σειριακής Επικοινωνίας Εφαρμογές Σειριακής Επικοινωνίας Εισαγωγή Στο μάθημα αυτό θα μάθουμε πώς να χρησιμοποιούμε την βιβλιοθήκη serial για την επικοινωνία από την πλατφόρμα Arduino πίσω στον υπολογιστή μέσω της θύρας usb. Τι

Διαβάστε περισσότερα

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοινωνία. Σειριακή Επικοινωνία USB Σύνδεση / Πρωτόκολλο Σκοπός Εντολή επιλογής (if) Εντολή Επανάληψης (while) Πίνακες 1 Μέρος Α : Σκοπός

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016)

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016) ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016) Περιγραφή της Άσκησης Στόχος της άσκησης είναι η δημιουργία ενός συστήματος διαχείρισης φωτισμού. Μία φωτομεταβαλλόμενη αντίσταση (LDR) θα διαπιστώνει την ποσότητα του φωτός

Διαβάστε περισσότερα

ΑΝΑLOG TO DIGITAL CONVERTER (ADC)

ΑΝΑLOG TO DIGITAL CONVERTER (ADC) ΑΝΑLOG TO DIGITAL CONVERTER (ADC) O ADC αναλαμβάνει να μετατρέψει αναλογικές τάσεις σε ψηφιακές ώστε να είναι διαθέσιμες εσωτερικά στο μικροελεγκτή για επεξεργασία. Η αναλογική τάση που θέλουμε να ψηφιοποιηθεί

Διαβάστε περισσότερα

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ» Περιεχόμενα Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»... 2 Καταχωρητές... 3 Αριθμητική-λογική μονάδα... 3 Μονάδα μνήμης... 4 Μονάδα Εισόδου - Εξόδου... 5 Μονάδα ελέγχου... 5 Ρεπερτόριο Εντολών «ΑΒΑΚΑ»... 6 Φάση

Διαβάστε περισσότερα

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O Pins:

Διαβάστε περισσότερα

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: Σελίδα 1 από 11 Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: την επικοινωνία, µε τα υπόλοιπα ολοκληρωµένα κυκλώµατα του υπολογιστικού συστήµατος. την παροχή τροφοδοσίας

Διαβάστε περισσότερα

ε. Ένα κύκλωμα το οποίο παράγει τετραγωνικούς παλμούς και απαιτείται εξωτερική διέγερση ονομάζεται ασταθής πολυδονητής Λ

ε. Ένα κύκλωμα το οποίο παράγει τετραγωνικούς παλμούς και απαιτείται εξωτερική διέγερση ονομάζεται ασταθής πολυδονητής Λ ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΣΑΒΒΑΤΟ 16/04/2016 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ (ΣΥΣΤΗΜΑΤΑ ΨΗΦΙΑΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ) ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΠΕΝΤΕ (5) ΕΝΔΕΙΚΤΙΚΕΣ

Διαβάστε περισσότερα

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό. Ερωτήσεις θεωρίας MY Μέρος Α. Υλικό. 1. Η μνήμη ROM είναι συνδυαστικό ή ακολουθιακό κύκλωμα; 2. α) Να σχεδιαστεί μία μνήμη ROM που να δίνει στις εξόδους της το πλήθος των ημερών του μήνα, ο αριθμός του

Διαβάστε περισσότερα

«ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

«ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ «ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ 8085 ΧΟΝΔΡΙΚΟ ΔΙΑΓΡΑΜΜΑ 8085 CPU ΟΙ ΚΑΤΑΧΩΡΗΤΕΣ ΤΟΥ 8085 Ο ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗΣ ΕΝΤΟΛΩΝ Η ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ ΟΙ «ΣΗΜΑΙΕΣ» FLAGS Η ΜΟΝΑΔΑ

Διαβάστε περισσότερα

ΡΟΜΠΟΤΙΚΗ ΜΕ ARDUINO - ARDUINO ΚΑΙ ΗΧΟΣ I. Δημιουργός: Δρ.Αθανάσιος Μπαλαφούτης Επιβλέπων: Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ

ΡΟΜΠΟΤΙΚΗ ΜΕ ARDUINO - ARDUINO ΚΑΙ ΗΧΟΣ I. Δημιουργός: Δρ.Αθανάσιος Μπαλαφούτης Επιβλέπων: Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ ΡΟΜΠΟΤΙΚΗ ΜΕ ARDUINO - ARDUINO ΚΑΙ ΗΧΟΣ I Δημιουργός: Δρ.Αθανάσιος Μπαλαφούτης Επιβλέπων: Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ 1 ARDUINO ΚΑΙ ΗΧΟΣ ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή, μηχανές παραγωγής ήχου Χρήση του πιεζοηλεκτρικού

Διαβάστε περισσότερα

Προγραμματισμο ς σε Arduino

Προγραμματισμο ς σε Arduino Προγραμματισμο ς σε Arduino Arduino UNO & Innoesys Educational Shield www.devobox.com Ηλεκτρονικά Εξαρτήματα & Υλικά Κατασκευής Πρωτοτύπων Λέανδρου 79, 10443, Κολωνός +30 210 51 55 513, info@devobox.com

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ

ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΟΙΚΟΝOΜΟΥ ΧΑΡΗΣ (6424) ΦΩΚΟΣ ΝΙΚΟΛΑΟΣ(6592) ΚΑΜΒΥΣΗΣ ΝΙΚΟΛΑΟΣ(7178) 2013-2014 ΠΕΡΙΕΧΟΜΕΝΑ Σκοπός της εργασίας Ανάλυση Arduino Uno Δημιουργία πληροφορίας Αποστολή και

Διαβάστε περισσότερα

Εγκατάσταση του Arduino IDE

Εγκατάσταση του Arduino IDE ΑΣΠΑΙΤΕ Συλλογή και Επεξεργασία Δεδομένων Εργαστήριο ΠΕΡΙΕΧΟΜΕΝΑ: Πώς να κατεβάσετε και να εγκαταστήσετε το Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE), για το προγραμματισμό του Arduino. Χρησιμοποιώντας το

Διαβάστε περισσότερα

Οδηγώντας μια οθόνη υγρών κρυστάλλων Liquid Crystal Display

Οδηγώντας μια οθόνη υγρών κρυστάλλων Liquid Crystal Display Οδηγώντας μια οθόνη υγρών κρυστάλλων Liquid Crystal Display Σχηματικό Διάγραμμα μιας Οθόνης Υγρών Κρυστάλλων To Lcd εσωτερικά έχει έναν controller που είναι υπεύθυνος για την επεξεργασία τον δεδομένων

Διαβάστε περισσότερα

Εφαρμογές μικροελεγκτών

Εφαρμογές μικροελεγκτών Μικροελεγκτές Έναν ορισμό που θα μπορούσαμε να δώσουμε για τους μικροελεγκτές είναι ο εξής: Μικροελεγκτής είναι ένα προγραμματιζόμενο ολοκληρωμένο κύκλωμα το οποίο διαθέτει επεξεργαστή, μνήμη, διάφορα

Διαβάστε περισσότερα

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 4 Real Mode Interrupts

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 4 Real Mode Interrupts Προηγμένοι Μικροεπεξεργαστές Φροντιστήριο 4 Real Mode Interrupts Επισκόπηση Μορφές control tranfer Γενικά μη προγραμματισμένες Ασυγχρονα προς την εκτέλεση του προγράμματος Hardware interrupts Σύγχρονα

Διαβάστε περισσότερα

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΡΟΜΠΟΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΜΠΑΝΤΗΣ ΑΝΤΩΝΙΟΣ 533 ΤΣΙΚΤΣΙΡΗΣ ΔΗΜΗΤΡΙΟΣ 551 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΡΟΜΠΟΤ LEGO NXT Το ρομπότ

Διαβάστε περισσότερα

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ ΙΑΚΟΠΕΣ (INTERRUPTS) ΟΙ ΙΑΚΟΠΕΣ ΕΙΝΑΙ «ΣΥΜΒΑΝΤΑ», ΕΣΩΤΕΡΙΚΑ

Διαβάστε περισσότερα

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή 8.1 Τακτική σάρωση (Polling) Ας υποθέσουμε ότι έχουμε ένα πληκτρολόγιο συνδεδεμένο σε ένα υπολογιστικό σύστημα. Το πληκτρολόγιο είναι μια μονάδα εισόδου.

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

ΠΕΡΙΓΡΑΦΗ ΥΛΙΚΟΥ AVR 1. ΕΙΣΑΓΩΓΗ 1.1 ΓΕΝΙΚΗ ΔΟΜΗ 1.2 ΟΙΚΟΓΕΝΕΙΕΣ 1.3 ΤΥΠΟΙ 1.4 ΕΡΓΑΛΕΙΑ

ΠΕΡΙΓΡΑΦΗ ΥΛΙΚΟΥ AVR 1. ΕΙΣΑΓΩΓΗ 1.1 ΓΕΝΙΚΗ ΔΟΜΗ 1.2 ΟΙΚΟΓΕΝΕΙΕΣ 1.3 ΤΥΠΟΙ 1.4 ΕΡΓΑΛΕΙΑ ΠΕΡΙΓΡΑΦΗ ΥΛΙΚΟΥ AVR 1. ΕΙΣΑΓΩΓΗ 1.1 ΓΕΝΙΚΗ ΔΟΜΗ 1.2 ΟΙΚΟΓΕΝΕΙΕΣ 1.3 ΤΥΠΟΙ 1.4 ΕΡΓΑΛΕΙΑ Oι βασικές αρχές λειτουργίας των RISC είναι : Εντολές ενός κ.μ. με κατάλληλη σχεδίαση της μονάδας διοχέτευσης Μεγάλος

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Σχεδίαση Ψηφιακών Συστημάτων. Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Σχεδίαση Ψηφιακών Συστημάτων. Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ᄃ Σχεδίαση Ψηφιακών Συστημάτων Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών

Διαβάστε περισσότερα

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1. Arduino + LabVIEW: Μέτρηση Έντασης Φωτός με Φωτοαντίσταση. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1. Arduino + LabVIEW: Μέτρηση Έντασης Φωτός με Φωτοαντίσταση. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Σκοπός Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1 Arduino + LabVIEW: Μέτρηση Έντασης Φωτός με Φωτοαντίσταση. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Βασική δομή ενός προγράμματος στο LabVIEW. Εμπρόσθιο

Διαβάστε περισσότερα

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual MILE Simulator Version 1.0 User's Manual Νοέμβριος, 2011 Περιεχόμενα 1. Εισαγωγή στον προσομοιωτή...2 1.1 Εγκατάσταση...2 1.2 Βοήθεια Διευκρινήσεις...2 2. Ξεκινώντας με τον προσομοιωτή...3 2.1 Το memory

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ Οι λογικές πράξεις που υποστηρίζει η Assembly του 8088 είναι : Πράξη AND Πράξη OR Πράξη NOT Πράξη XOR Με τις λογικές πράξεις μπορούμε

Διαβάστε περισσότερα

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης Γρήγορη αναφορά Αντιγραφή Δημιουργία αντιγράφων Γρήγορη δημιουργία αντιγράφου 3 Στον πίνακα ελέγχου του εκτυπωτή πατήστε το κουμπί αντίγραφο 4 Εάν τοποθετήσατε το έγγραφο στη γυάλινη επιφάνεια σάρωσης

Διαβάστε περισσότερα

Βασικές Έννοιες της Πληροφορικής

Βασικές Έννοιες της Πληροφορικής Βασικές Έννοιες της Πληροφορικής Ηλεκτρονικός Υπολογιστής Αυτόματη ηλεκτρονική μηχανή που δέχεται, φυλάσσει, επαναφέρει, επεξεργάζεται και παρουσιάζει πληροφορίες σύμφωνα με προκαθορισμένες εντολές. Δεδομένα

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

Διαβάστε περισσότερα

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Οργάνωση Υπολογιστών (Ι) (η κεντρική μονάδα επεξεργασίας) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Ένα

Διαβάστε περισσότερα

για τις ρυθμίσεις LabView μέσα από το κανάλι και του καλωδίου USB.

για τις ρυθμίσεις LabView μέσα από το κανάλι   και του καλωδίου USB. 1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας Δραστηριότητα: 11 Μάθημα: Εργαστήριο Δικτύων Υπολογιστών Αντικείμενο : Μέτρηση

Διαβάστε περισσότερα

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino. Το Arduino είναι βασισμένο σε μια απλή μητρική πλακέτα ανοικτού κώδικα, με ενσωματωμένο

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

Διαβάστε περισσότερα

OGO! - Ενσωματωμένες λειτουργίες που «μετράνε»! Αυτοματισμοί εύκολα, γρήγορα & οικονομικά

OGO! - Ενσωματωμένες λειτουργίες που «μετράνε»! Αυτοματισμοί εύκολα, γρήγορα & οικονομικά OGO! - που «μετράνε»! Αυτοματισμοί εύκολα, γρήγορα & οικονομικά Εισαγωγή LOGO! Αυτοματισμοί εύκολα, γρήγορα & οικονομικά Το αυθεντικό! Τηλ. : 210 6864534 Σύνδεση της οθόνης μηνυμάτων κειμένου LOGO! TD

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών (Ι)

Οργάνωση Υπολογιστών (Ι) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Οργάνωση Υπολογιστών (Ι) (η κεντρική μονάδα επεξεργασίας) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Ένα

Διαβάστε περισσότερα

Εργαστηριακές ασκήσεις λογικών κυκλωμάτων 11 A/D-D/A

Εργαστηριακές ασκήσεις λογικών κυκλωμάτων 11 A/D-D/A 11.1 Θεωρητικό μέρος 11 A/D-D/A 11.1.1 Μετατροπέας αναλογικού σε ψηφιακό σήμα (A/D converter) με δυαδικό μετρητή Σχ.1 Μετατροπέας A/D με δυαδικό μετρητή Στο σχήμα 1 απεικονίζεται σε block diagram ένας

Διαβάστε περισσότερα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 4 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο

Διαβάστε περισσότερα

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται Τομέας: Ηλεκτρονικός Εκπαιδευτικός: Μπουλταδάκης Στέλιος Μάθημα: Συλλογή και μεταφορά δεδομένων μέσω Η/Υ, Αισθητήρες-Ενεργοποιητές Αντικείμενο: α) Μέτρηση θερμοκρασίας με το αισθητήριο LM335 και μεταφορά

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Εισαγωγή στη C θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών (IΙI)

Οργάνωση Υπολογιστών (IΙI) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (IΙI) (συσκευές εισόδου-εξόδου) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό

Διαβάστε περισσότερα

Συστήματα Αυτομάτου Ελέγχου

Συστήματα Αυτομάτου Ελέγχου ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΑΥΤΟΜΑΤΙΣΜΟΥ Καθ. Εφαρμογών: Σ. Βασιλειάδου Εργαστήριο Συστήματα Αυτομάτου Ελέγχου για Ηλεκτρολόγους Μηχανικούς Εργαστηριακές Ασκήσεις Χειμερινό

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD

ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD Σκοπός του εργαστηρίου: Οι φοιτητές εξοικειώνονται με βασικές απεικονίσεις αριθμητικών ψηφίων και χαρακτήρων, καθώς και με τη βασική οδήγηση τέτοιων απεικονίσεων,

Διαβάστε περισσότερα

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου για συγκεκριμένους υπολογιστές ή άλλη προγραμματιζόμενη

Διαβάστε περισσότερα

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ CPUs Διδάσκων: Παναγιώτης Καρκαζής Περίγραμμα -Συσκευές Ι/Ο - Διακοπές, Εξαιρέσεις, Παγίδες -Καταστάσεις λειτουργίας -Συνεπαξεργαστές mechanism Συσκευές Ι/Ο Οι συσκευές

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 201 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: ΜΙΚΡΟΕΛΕΓΚΤΕΣ

ΜΑΘΗΜΑ: ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΜΑΘΗΜΑ: ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΩΝ ΕΞΕΤΑΣΕΩΝ ΙΑΝΟΥΑΡΙΟΥ 2011 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης: 28-1-2011 ΘΕΜΑ 1 Να σχεδιαστεί μία μνήμη ROM που να περιέχει το κείμενο "MICRO". Ο ASCII κωδικός

Διαβάστε περισσότερα

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται

Διαβάστε περισσότερα

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 5: Εξωτερικές διακοπές του 8051

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 5: Εξωτερικές διακοπές του 8051 Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών Βοήθημα εκτέλεσης εργαστηριακής άσκησης 5: Εξωτερικές διακοπές του 8051 Ο κώδικας για την παρούσα εργαστηριακή άσκηση σας δίδεται κατά το μεγαλύτερο μέρος

Διαβάστε περισσότερα

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

Διαβάστε περισσότερα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα 1ο ΕΠΑΛ Περάματος 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino.

Διαβάστε περισσότερα

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

Διαβάστε περισσότερα

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 5. Ρυθμίζοντας τη Φορά Περιστροφής. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 5. Ρυθμίζοντας τη Φορά Περιστροφής. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Σκοπός Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 5 Ρυθμίζοντας τη Φορά Περιστροφής DC Κινητήρα. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Βασική δομή ενός προγράμματος στο LabVIEW. Εμπρόσθιο Πλαίσιο (front

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ 1. Υπορουτίνες Μαθηµατικών Πράξεων 1.1. Προσηµασµένοι και απροσήµαστοι αριθµοί 1.2. Μετατροπές προσηµασµένων και απροσήµαστων αριθµών

ΠΕΡΙΕΧΟΜΕΝΑ 1. Υπορουτίνες Μαθηµατικών Πράξεων 1.1. Προσηµασµένοι και απροσήµαστοι αριθµοί 1.2. Μετατροπές προσηµασµένων και απροσήµαστων αριθµών ΠΕΡΙΕΧΟΜΕΝΑ 1. Υπορουτίνες Μαθηµατικών Πράξεων 1.1. Προσηµασµένοι και απροσήµαστοι αριθµοί 1.2. Μετατροπές προσηµασµένων και απροσήµαστων αριθµών Cr0 Μετατροπή αριθµού 8 Bits από µορφή προσηµασµένου µε

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 3: Καταχωρητές, Τμήματα, Διευθυνσιοδότηση Μνήμης, SEGMENT, MOV, ADD, SUB, INT, TITLE, LEA

Διαβάστε περισσότερα

Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ. Ασκήσεις 1-2 Εισαγωγή

Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ. Ασκήσεις 1-2 Εισαγωγή Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΒΙΟΜΗΧΑΝΙΚΟΙ ΑΥΤΟΜΑΤΙΣΜΟΙ Εφαρµογές Προγραµµατιζόµενων Λογικών Ελεγκτών-Εργαστήριο Εργαστηριακός Συνεργάτης: Βέλλος Κων/νος Ασκήσεις 1-2 Εισαγωγή

Διαβάστε περισσότερα

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων Σκοπός Συλλογή & Επεξεργασία Δεδομένων Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές Ελέγχου. Πρόγραμμα Εντολές Επεξεργασίας Δεδομένων Εντολή Εκχώρησης Εντολές Ελέγχου Λογική συνθήκη Εντολή

Διαβάστε περισσότερα

8051 Interrupt Ports. Name Alternate Function

8051 Interrupt Ports. Name Alternate Function Σκοπόςτης Διάλεξης Εισαγωγήστις πηγές διακοπών (interrupts) και στον τρόπο που αυτές είναι διαχειρίσιμες από την αρχιτεκτονική 8051 Πώς συνδέονται οι διακόπτες και τα πληκτρολόγια σε ένα μικροϋπολογιστή

Διαβάστε περισσότερα

Οδηγίες προγραμματισμού MOTORLINE EVO 60 & 100 Μηχανισμός για γκαραζόπορτες οροφής

Οδηγίες προγραμματισμού MOTORLINE EVO 60 & 100 Μηχανισμός για γκαραζόπορτες οροφής Οδηγίες προγραμματισμού MOTORLINE EVO 60 & 100 Μηχανισμός για γκαραζόπορτες οροφής Τοποθέτηση μηχανισμού Εγκαταστήστε το μηχανισμό σύμφωνα με τα σχέδια του αγγλικού φυλλαδίου δίνοντας ιδιαίτερη προσοχή

Διαβάστε περισσότερα

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1 Μνήμη Διευθύνσεις Δείκτες Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη Η/Υ Ειδικό υλικό, ξεχωριστό από τον επεξεργαστή Χρησιμεύει για την αποθήκευση δεδομένων και της κατάστασης εκτέλεσης του προγράμματος

Διαβάστε περισσότερα

Παραδείγματα Assembly (Μέρος

Παραδείγματα Assembly (Μέρος Παραδείγματα Assembly (Μέρος Β) 1 Άσκηση 1 Γράψτε ένα πρόγραμμα (4 εντολών) με το οποίο μπορείτε να προσθέσετε το περιεχόμενο των θέσεων μνήμης 0Χ30000000 και 0Χ30000001. Το αποτέλεσμα να αποθηκευτεί ως

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

Διαβάστε περισσότερα