Κάθε ενσωματωμένο σύστημα έχει ένα σύνολο θυρών εισόδου / εξόδου, ψηφιακές ή και αναλογικές. Οι ψηφιακές θύρες μπορεί να είναι: Παράλληλες θύρες Σειριακές θύρες Θύρες επικοινωνίας άλλων πρωτοκόλλων όπως I2C, CANbus, USB, IEEE1394 Firewire, PCI, κλπ Οι παράλληλες θύρες αποτελούνται από έναν αριθμό bits που μπορούν να οδηγούνται ανεξάρτητα. Συνήθως οι παράλληλες θύρες μπορούν να προγραμματιστούν ώστε να συμπεριφέρονται ως είσοδοι ή ως έξοδοι ακόμα και ανά bit. Οι παράλληλες θύρες ελέγχονται μέσω ειδικών διευθύνσεων I/O και εντολών κώδικα μηχανής, τόσο για την ρύθμιση όσο και για επικοινωνία. Οι σειριακές θύρες και οι θύρες των άλλων πρωτοκόλλων μπορούν να οδηγηθούν είτε απευθείας (απαιτείται εξειδικευμένη γνώση του hardware) ή μέσω υπορουτινών συστήματος διαθέσιμες στον προγραμματιστή. Μια παράλληλη θύρα αποτελείται από έναν αριθμό bits που συνήθως μπορούν να προγραμματιστούν ανεξάρτητα ως είσοδοι ή έξοδοι. Αρχικά ο χρήστης πρέπει να ρυθμίσει τα bit της θύρας στέλνοντας την κατάλληλη λέξη σε έναν «καταχωρητή ρύθμισης» και μετά μπορεί να προσπελάσει τα bits της θύρας με εντολές read και write σε ένα καταχωρητή «θύρας». Παράδειγμα: Ρύθμιση θύρας: BCF STATUS, RP0 ; Επιλογή Bank0 άρα ο καταχ. PORTB είναι ορατός CLRF PORTB ; Αρχικοποίηση του PORTB μηδενίζοντας τα μάνδαλα. BSF STATUS, RP0 ; Επιλογή Bank1. Ο καταχ. TRISB είναι ορατός. MOVLW 0xCF ; Τιμή για ρύθμιση της κατεύθυνσης δεδομένων 0xCF =11001111 MOVWF TRISB ; RB<3:0> είσοδοι, RB<5:4> έξοδοι, RB<7:6> είσοδοι Λειτουργία I/O στην θύρα (εγγραφή - write): MOVLW 0x10 ; Φόρτωσε στον W την τιμή 0x10 = 00010000 MOV WF PORTB ; Το bit 4 είναι 1 (π.χ. το συνδεδεμένο LED ανάβει) (ανάγνωση - read) BTFSS PORTB,0 ; Έλεγξε το bit 0 του PortB GOTO start ; Αν το bit 0 είναι μηδέν (=0) πήγαινε στο start <code to handle bit set> ; Αν το bit 0 είναι ένα (=1) εκτελείται αυτός ο κώδικας 1
Οι περισσότεροι Μικροελεγκτές PIC ενσωματώνουν 2 θύρες σειριακής επικοινωνίας: 1. Universal Synchronous Asynchronous Receiver Transmitter (USART/SCI) με ανίχνευση διεύθυνσης 9-bit. Μπορεί να λειτουργήσει με τρεις τρόπους: Asynchronous (full duplex) Synchronous Master (half duplex) Synchronous Slave (half duplex) 2. Master Synchronous Serial Port (MSSP) με SPI (Master mode) και I2C (Master/Slave). Μπορεί να λειτουργήσει με 2 τρόπους: Serial Peripheral Interface (SPI) Inter-Integrated Circuit (I2C) USART : Universal Synchronous Asynchronous Receiver Transmitter. Χρησιμοποιείται για να στέλνει και να λαμβάνει μικρά πακέτα (χαρακτήρες) πάνω από μία σειριακή γραμμή. Η μετάδοση γίνεται bit προς bit πάνω από μία ψηφιακή γραμμή. Η παραδοσιακή σειριακή επικοινωνία λειτουργεί με ±5-15 V DC (+15V=0-15V=1) Ορολογία: Baud Rate: η ταχύτητα με την οποία λειτουργεί η ψηφιακή σύνδεση, μετριέται σε bits / second και τυπικά είναι στη περιοχή 110 έως 56,600 bps. Full Duplex - η ικανότητα ταυτόχρονης μετάδοσης και λήψης. Half Duplex - μεταδίδει και λαμβάνει αλλά όχι ταυτόχρονα. RS-232 ένα δημοφιλές στάνταρ επικοινωνίας για σειριακή επικοινωνία. Parity (ισοτιμία) ένας μηχανισμός ανίχνευσης σφάλματος που βασίζεται στο άθροισμα των bits (αριθμός των 1) ενός πακέτου. Η ισοτιμία μετάδοσης πρέπει να ταιριάζει με την ισοτιμία λήψης. Even Parity το άθροισμα των bits πρέπει να είναι ζυγός αριθμός. Καθορίζεται ένα επιπλέον bit 1 ή 0 ώστε το άθροισμα να είναι ζυγό. Odd Parity το άθροισμα των bits πρέπει να είναι μονός αριθμός. Καθορίζεται ένα επιπλέον bit 1 ή 0 ώστε το άθροισμα να είναι μονό. 2
Σύγχρονη Επικοινωνία: Η πληροφορία μεταδίδεται από τον πομπό με ακολουθιακό τρόπο, bit προς bit, με σταθερό ρυθμό μετάδοσης, και η συχνότητα του ρολογιού μεταδίδεται επίσης από τον πομπό στον δέκτη. Αυτό σημαίνει ότι πομπός και δέκτης είναι συγχρονισμένοι μεταξύ τους με το ίδιο ρολόι. Ασύγχρονη Επικοινωνία: Πομπός και δέκτης δεν μπορούν να μεταδώσουν μεγάλες ακολουθίες από bits καθώς δεν υπάρχει πλήρης συγχρονισμός ανάμεσα στον πομπό που στέλνει τα δεδομένα και τον δέκτη που τα λαμβάνει. Σε αυτή την περίπτωση η πληροφορία χωρίζεται σε πακέτα μεγέθους ενός byte. Κάθε πακέτο έχει ένα Start bit και ένα Stop bit. Το Start bit σημαδεύει τη έναρξη της μετάδοσης ενός νέου πακέτου. Το Stop bit σημαδεύει το τέλος. Τα πακέτα πληροφορίας δεν μεταδίδονται αναγκαστικά σε ίσες χρονικές αποστάσεις, καθώς είναι ανεξάρτητα του ρολογιού. Όμως ο ρυθμός μετάδοσης των bits (baud rate) είναι προσυμφωνημένος. Η USART του PIC μπορεί να υλοποιήσει διάφορα σειριακά πρωτόκολλα όπως RS-232, RS-422, RS-485. 3
Η μετάδοση των bit συγχρονίζεται με το ρολόι Η μετάδοση ακολουθεί συγκεκριμένο πρωτόκολλο περιλαμβάνοντας bit ελέγχου (Start, Parity, Stop) που πλαισιώνουν τα δεδομένα μετάδοσης. 1 start bit, 5-9 data bits, 0-1 parity bit, 1-2 stop bits. 4
Όταν ο πομπός θέλει να μεταδώσει μία λέξη βάζει την γραμμή σε κατάσταση 0 (space) για περίοδο ενός bit. Ένα space αναπαρίσταται με +12V. Όταν ο δέκτης βλέπει αυτό το λογικό 0, που ονομάζεται start bit, καταλαβαίνει ότι ακολουθεί ένας χαρακτήρας. Η εισερχόμενη ροή δεδομένων χωρίζεται σε 7 περιόδους και τα bits διαβάζονται στο κέντρο κάθε περιόδου. Το ρολόι του δέκτη δεν είναι συγχρονισμένο με το ρολόι του πομπού και τα bits δεν διαβάζονται αναγκαστικά ακριβώς στο μέσον του παλμού. Αφού έχουν αποσταλεί 7 bits δεδομένων, αποστέλλεται ένα bit ισοτιμίας σαν μέσο ανίχνευσης σφαλμάτων. Αν ο δέκτης βρει ότι η ληφθείσα ισοτιμία δεν ταιριάζει με τη προσυμφωνημένη, παράγει ένα σφάλμα και ο τρέχων χαρακτήρας απορρίπτεται. Το bit ισοτιμίας είναι προαιρετικό και μπορεί (μετά από συμφωνία) να μην μεταδίδεται.. Το bit ισοτιμίας ακολουθούν 1 ή 2 stop bits σε λογικό 1. Το stop bit δεν μεταφέρει πληροφορία και παίζει τον ρόλο του διαστήματος μεταξύ διαδοχικών χαρακτήρων. Αφού μεταδοθεί το stop bit, μπορεί να μεταδοθεί ένας νέος χαρακτήρας οποιαδήποτε στιγμή. Οι ασύγχρονες σειριακές διασυνδέσεις χρησιμοποιούνται ευρέως για την μετάδοση δεδομένων υπό την μορφή χαρακτήρων. Ο PIC 16F84A δεν περιλαμβάνει USART, αλλά άλλα μοντέλα όπως ο PIC 16F877 περιλαμβάνουν. Η λειτουργία της USART ελέγχεται από 2 καταχωρητές TXSTA, RCSTA bit 7 CSRC: Clock Source Select bit Ασύγχρονη επικοινωνία: Άνευ σημασίας Σύγχρονη Επικοινωνία: 1 = Master mode (το ρολόι παράγεται εσωτερικά από τον BRG) 0 = Slave mode (το ρολόι λαμβάνεται από εξωτερική πηγή) bit 6 TX9: 9-bit Transmit Enable bit 1 = Επιλέγει μετάδοση 9-bit 0 = Επιλέγει μετάδοση 8-bit 5
bit 5 TXEN: Transmit Enable bit 1 = Ενεργοποίηση μετάδοσης 0 = Απενεργοποίηση μετάδοσης bit 4 SYNC: USART Mode Select bit 1 = Σύγχρονη επικοινωνία 0 = Ασύγχρονη επικοινωνία bit 3 Δεν υλοποιείται: διαβάζεται ως '0' bit 2 BRGH: High Baud Rate Select bit (Asynchronous mode): 1 = Υψηλή ταχύτητα 0 = Χαμηλή ταχύτητα bit 1 TRMT: Transmit Shift Register Status bit 1 = Ο TSR είναι άδειος 0 = Ο TSR είναι γεμάτος bit 0 TX9D: Το 9ο bit των δεδομένων μπορεί να είναι bit ισοτιμίας bit 7 SPEN: Serial Port Enable bit 1 = Ενεργοποίηση σειριακής θύρας (ρυθμίζει τα pin RC7/RX/DT and RC6/TX/CK ως ποδαράκια της σειριακής θύρας) 0 = Απενεργοποίηση σειριακής θύρας bit 6 RX9: 9-bit Receive Enable bit 1 = Επιλέγει λήψη 9-bit 0 = Επιλέγει λήψη 8-bit bit 5 SREN: Single Receive Enable bit Ασύγχρονη επικοινωνία: Άνευ σημασίας Σύγχρονη επικοινωνία - master: 1 = Ενεργοποιεί λήψη μονής λέξης (single receive) 0 = Απενεργοποιεί λήψη μονής λέξης (single receive) Σύγχρονη επικοινωνία - slave: Άνευ σημασίας 6
bit 4 CREN: Continuous Receive Enable bit Ασύγχρονη επικοινωνία: 1 = Ενεργοποιεί την συνεχή λήψη 0 = Απενεργοποιεί την συνεχή λήψη Σύγχρονη επικοινωνία: 1 = Ενεργοποιεί συνεχή λήψη μέχρι το bit CREN να γίνει 0 (το CREN υπερτερεί του SREN) 0 = Απενεργοποιεί την συνεχή λήψη bit 3 ADDEN: Address Detect Enable bit Ασύγχρονη επικοινωνία 9-bit (RX9 = 1): 1 = Ενεργοποιεί την ανίχνευση διεύθυνσης, ενεργοποιεί τις διακοπές και φορτώνει το buffer λήψης όταν ο RSR<8> γίνει 1 0 = Απενεργοποιεί την ανίχνευση διεύθυνσης, όλα τα bytes λαμβάνονται και το 9 ο bit μπορεί να είναι bit ισοτιμίας. bit 2 FERR: Framing Error bit 1 = Σφάλμα πρωτοκόλλου (ενημερώνεται διαβάζοντας τον RCREG και διαβάζει το επόμενο αποδεκτό byte) 0 = Δεν υπάρχει σφάλμα πρωτοκόλλου bit 1 OERR: Overrun Error bit 1 = Σφάλμα υπερχείλισης, που σημαίνει ότι αφίχθηκε νέα λέξη πριν προλάβει να διαβαστεί η προηγούμενη (καθαρίζεται θέτοντας 0 στο bit CREN) 0 = Δεν υπάρχει σφάλμα υπερχείλισης bit 0 RX9D: Το 9 ο bit των δεδομένων λήψης (μπορεί να είναι bit ισοτιμίας, αλλά πρέπει να υπολογίζεται με λογισμικό του χρήστη) 7
Η USART περιλαμβάνει ένα εσωτερικό Baud Rate Generator (BRG) που είναι ένας χρονιστής των 8-bit που η περίοδός του καθορίζεται από έναν ειδικό καταχωρητή τον SPBRG: όπου X είναι η τιμή του καταχωρητή SPBRG (0-255) Αυτά είναι τα bits και οι καταχωρητές που σχετίζονται με τον BRG: Ρυθμοί BAUD για ασύγχρονη επικοινωνία (BRGH=0) 8
Η καρδιά του πομπού είναι ο καταχωρητής ολίσθησης TSR (Transmit Shift Register). O TSR λαμβάνει δεδομένα από τον read/write buffer εκπομπής TXREG. Ο καταχωρητής TXREG φορτώνεται με δεδομένα μέσω λογισμικού. Ο καταχωρητής TSR επανα-φορτώνεται μόνο όταν έχει εκπεμφθεί το STOP bit από την προηγούμενη μετάδοση. Μόλις εκπεμφθεί το STOP bit, ο TSR φορτώνεται με νέα δεδομένα από τον TXREG (αν υπάρχουν). 1. Αρχικοποίηση του καταχωρητή SPBRG για τον κατάλληλο ρυθμό μετάδοσης. Αν επιλεχθεί υψηλή ταχύτητα τίθεται το bit BRGH μονάδα. 2. Ενεργοποιείται η ασύγχρονη σειριακή θύρα μηδενίζοντας το bit SYNC και θέτοντας το bit SPEN μονάδα. 3. Αν χρειάζονται διακοπές, τίθεται μονάδα στο bit TXIE (καταχ.intcon). 4. Αν απαιτείται μετάδοση 9-bit, τίθεται μονάδα το bit TX9. 5. Ενεργοποίηση της μετάδοσης θέτοντας μονάδα στο bit TXEN, που επίσης θα θέσει μονάδα στο bit TXIF (Bit 4 του καταχωρητή PIR1: 0=TXREG πλήρης, 1=TXREG άδειος). 6. Αν επιλεχθεί μετάδοση 9-bit, το 9 ο bit φορτώνεται στον TX9D. 7. Φορτώνονται δεδομένα στον TXREG (αρχή μετάδοσης). TXIF=0 8. Η λέξη μεταφέρεται στον καταχωρητή TSR (TXIF=1) και το bit TRMT μηδενίζεται κατά την διάρκεια της μετάδοσης. 9. Όταν το bit TRMT γίνει μονάδα (άδειος TSR) επιστροφή στο βήμα 6. 10. Αν χρησιμοποιούνται διακοπές, θα πρέπει τα bits GIE και PEIE (bits 7 και 6) του καταχωρητή INTCON να είναι μονάδα. 11. Συνεχόμενη (back-to-back) μετάδοση είναι επίσης δυνατή. 9
Η καρδιά του δέκτη είναι ο καταχωρητής ολίσθησης RSR (Receive Shift Register). Αφού διαβαστεί το STOP bit, τα ληφθέντα δεδομένα στον RSR μεταφέρονται στον καταχωρητή RCREG (αν είναι άδειος). Όταν ολοκληρωθεί η μετάδοση, η σημαία RCIF (PIR1<5>) γίνεται 1. Όταν ο RCREG διαβαστεί και αδειάσει, ο RCIF μηδενίζεται. 10
1. Αρχικοποίηση του καταχωρητή SPBRG για τον κατάλληλο ρυθμό λήψης. Αν απαιτείται υψηλή ταχύτητα, τίθεται το bit BRGH μονάδα. 2. Ενεργοποίηση της ασύγχρονης σειριακής θύρας με μηδενισμό του bit SYNC και θέτοντας το bit SPEN μονάδα. 3. Αν χρειάζονται διακοπές, τίθεται μονάδα στο bit RCIE (καταχ.intcon) 4. Αν απαιτείται μετάδοση 9-bit, τίθεται μονάδα στο bit RX9. 5. Ενεργοποίηση της λήψης θέτοντας μονάδα στο bit CREN. 6. Η σημαία RCIF θα γίνει μονάδα όταν ολοκληρωθεί η λήψη και αν το bit RCIE είναι 1, θα παραχθεί διακοπή. 7. Ανάγνωση του καταχωρητή RCSTA για λήψη του 9 ου bit (αν είναι ενεργό) και ανίχνευση για το αν συνέβη κάποιο σφάλμα μετάδοσης. 8. Ανάγνωση της 8μπιτης λέξης με ανάγνωση του καταχωρητή RCREG. 9. Αν συνέβη κάποιο σφάλμα, γίνεται «clear» μηδενίζοντας το bit CREN. 10. Για τη επόμενη λέξη επιστροφή στο βήμα 6. 11. Αν χρησιμοποιούνται διακοπές, πρέπει τα bits GIE και PEIE (bits 7 and 6) του καταχωρητή INTCON να είναι μονάδες. Η USART μπορεί να επικοινωνεί με πολλαπλές συσκευές χρησιμοποιώντας ανίχνευση διεύθυνσης με βάση το 9ο bit. Τα μεταδιδόμενα bytes χωρίζονται σε δύο κατηγορίες: διευθύνσεις και δεδομένα, και ξεχωρίζουν από το 9 ο bit δεδομένων (1=διευθ., 0=data). Αρχικά η USART διαβάζει μόνο τα bytes των διευθύνσεων και αγνοεί τα υπόλοιπα. Το χαρακτηριστικό αυτό χρησιμοποιείται συνήθως όταν υπάρχουν πολλαπλές συσκευές σε ένα δίαυλο και η μετάδοση απευθύνεται σε συγκεκριμένη συσκευή. Οι συσκευές λήψης αγνοούν όλα τα data bytes που έχουν το 9 ο bit μηδέν, και διαβάζουν μόνο τα bytes διευθύνσεων που έχουν το 9 ο bit μονάδα. Όταν διαβαστεί το byte διεύθυνσης και ταιριάζει με την διεύθυνση της συσκευής, τότε διαβάζεται και το byte δεδομένων που ακολουθεί. TX 1 Address 1 0 Data 1 Address 2 0 Data Receiver 1 Address 1 Receiver 2 Address 2 11
Τυπικά υπάρχουν μία γείωση αναφοράς (GND) και δύο σήματα, μία έξοδος εκπομπής (TXD) και μία είσοδος λήψης (RXD). Υπάρχουν επίσης και άλλα σήματα (DTR/DSR, RTS/CTS) που μπορεί να χρησιμοποιηθούν, περιλαμβάνοντας σήματα χειραψίας (handshaking). Γενικά μία θετική τάση (μεγαλύτερη από +5 VDC) αναπαριστά ένα μηδέν και μία αρνητική τάση (μικρότερη από -5 VDC) μία μονάδα. DTR=Data Terminal Ready (ο πομπός είναι συνδεδεμένος και έτοιμος) DSR=Data Set Ready (ο δέκτης είναι συνδεδεμένος και έτοιμος) Έλεγχος μέσω Hardware: πριν την μετάδοση ο πομπός στέλνει σήμα RTS (ready to send) και ο δέκτης απαντά με σήμα CTS (clear to send). Έλεγχος μέσω λογισμικού: Ενεργ. λήψης=xon (0x11) απενεργ.=xoff (0x13) Σε αυτό τον τρόπο λειτουργίας (Synchronous Master mode) τα δεδομένα μεταφέρονται με τρόπο half-duplex. Όταν γίνεται εκπομπή η μετάδοση αναστέλλεται και αντίστροφα. Η σύγχρονη μετάδοση ενεργοποιείται θέτοντας μονάδα στο bit SYNC (TXSTA<4>). Επιπρόσθετα, τίθεται μονάδα στο bit SPEN (RCSTA<7>) για να ρυθμιστούν τα pins RC6/TX/CK και RC7/RX/DT I/O στις γραμμές CK (clock) και DT (data) αντίστοιχα. Ενεργοποιείται το «Master mode» θέτοντας μονάδα στο bit CSRC (TXSTA<7>), οπότε η CPU εκπέμπει το σήμα ρολογιού στη γραμμή CK Δεν υπάρχουν bits ελέγχου (Start, Stop, Parity). Η μετάδοση ξεκινά θέτοντας μονάδα στο bit TXEN (TXSTA<5>). Η λήψη ξεκινά θέτοντας μονάδα στο bit SREN (RCSTA<5>) ή CREN (RCSTA<4>) 12
Η μονάδα «Master Synchronous Serial Port» (MSSP) είναι ένα σειριακό interface, που χρησιμοποιείται για επικοινωνία με άλλα περιφερειακά ή άλλους μικροελεγκτές. Αυτές οι περιφερειακές συσκευές μπορεί να είναι σειριακές EEPROMs, καταχωρητές ολίσθησης, οθόνες LCD, μετατροπείς A/D, κλπ. Η μονάδα MSSP μπορεί να λειτουργεί με δύο τρόπους: 1. Serial Peripheral Interface (SPI) 2. Inter-Integrated Circuit (I2C) Η MSSP ελέγχεται μέσω τριών ειδικών καταχωρητών: SSPSTAT: Sync Serial Port Status Register SSPCON: Sync Serial Port Control Register SSPCON2: Sync Serial Port Control Register 2 Ο τρόπος λειτουργίας SPI επιτρέπει λέξεις των 8 bits να στέλνονται και να λαμβάνονται ταυτόχρονα. Υποστηρίζονται και οι τέσσερις τρόποι λειτουργίας του SPI (CKP,CKE: 0,0 0,1 1,0 1,1) Για επίτευξη επικοινωνίας χρησιμοποιούνται τρείς γραμμές: Serial Data Out (SDO) Serial Data In (SDI) Serial Clock (SCK) Επιπρόσθετα, μία τέταρτη γραμμή μπορεί να χρησιμοποιηθεί όταν βρίσκεται σε τρόπο λειτουργίας Slave: Slave Select (SS). Όταν είναι μηδέν, ένας SPI master απευθύνεται στην συγκεκριμένη συσκευή SPI slave. Στον τρόπο λειτουργίας «Master» ο κύριος του διαύλου μπορεί να ξεκινήσει μετάδοση δεδομένων οποιαδήποτε στιγμή, αφού ελέγχει το σήμα SCK (Clock signal). Το πιο σημαντικό ψηφίο (MSB) μεταδίδεται πρώτο. Ο ρυθμός του SPI ρολογιού είναι προγραμματιζόμενος και μπορεί να α- νέλθει σε συχνότητα έως και Fosc/4 (π.χ. 5 MHZ SPI για 20 MHz MCU) 13
To SPI δημιουργεί ένα βρόχο δεδομένων μεταξύ δύο συσκευών. Δεδομένα που στέλνει ο Master εξέρχονται από την γραμμή SDO (serial data output). Δεδομένα που λαμβάνει ο Master εισέρχονται από την γραμμή SDI (serial data input). Ο SSPSR είναι ένας καταχωρητής ολίσθησης που διαβάζεται και γράφεται από τον καταχωρητή SSPBUF. Ο χρονισμός του SPI (Master Mode) 14
Το I 2 C είναι ένα δημοφιλές πρωτόκολλο που υλοποιείται σε πολλές συσκευές Το I 2 C είναι ένα σύγχρονο δικατευθυντικό πρωτόκολλο που επιτρέπει σε μία συσκευή master να ξεκινήσει επικοινωνία με μία συσκευή slave. Ένα ρολόι μεταδίδεται μαζί με τα δεδομένα, ελεγχόμενο από την συσκευή master. Ο ρυθμός του ρολογιού μπορεί να αλλάζει δυναμικά, καθορίζοντας τον ρυθμό μετάδοσης. Οι συσκευές «Slave» μπορούν να θέσουν την γραμμή σε μηδέν, δείχνοντας ότι δεν μπορούν να δεχθούν άλλα δεδομένα. Χρησιμοποιεί δύο σήματα: SDA (Serial Data) και SCL (Serial Clock). Το πρωτόκολλο I 2 C αποτελείται από έναν αριθμό συνθηκών : Start Condition (S): Αρχικοποιεί τον δίαυλο I2C. Οι γραμμές SDA and SCL οδηγούνται στο μηδέν. Stop Condition (P): Απελευθερώνει τον δίαυλο I2C. Οι γραμμές SDA και SCL οδηγούνται στη μονάδα. Restart Condition (R): Επαναρχικοποιεί τον δίαυλο I2C. Χρησιμοποιείται όταν η συνθήκη P δεν ακολουθείται από συνθήκη S. Μεταφορά δεδομένων (Data): στέλνει 8 bits δεδομένων στον δίαυλο. Τα δεδομένα είναι έγκυρα όταν το ρολόι είναι «high». ACK Condition (A): Επιβεβαιώνει μία μεταφορά δεδομένων. NACK Condition (A): Negative acknowledge επιβεβαιώνει μια αντίστροφη μεταφορά από τον slave στον master (στέλνεται από τον Master προς τον Slave). 15
Συνδυάζοντας αυτές τις συνθήκες μαζί δημιουργούνται μεταδόσεις του πρωτοκόλλου I 2 C : Παράδειγμα 1: εγγραφή ενός byte σε μία EEPROM: Master: S Control (w) Address Data P Slave: A A A Παράδειγμα 2: ανάγνωση ενός byte από μία EEPROM: Master: S Control (w) Address R Control (r) Slave: A A A Data Στους PIC το πρωτόκολλο I2C ελέγχεται μέσω τεσσάρων καταχωρητών: 1. SSPSTAT: Sync Serial Port Status Register (καταχωρητής κατάστασης) 2. SSPCON: Sync Serial Port Control Register (καταχωρητής ελέγχου 1) 3. SSPCON2: Sync Serial Port Control Register 2 (καταχωρητής ελέγχου 2) 4. SSPADD: Ελέγχει την γεννήτρια του ρολογιού (baud rate generator). N P 16