Εμφάνιση αποτελεσμάτων : 1 έως 5 από 5

Θέμα: Ι/Ο Ports registers

  1. #1
    Μέλος Το avatar του χρήστη CITRO
    Όνομα
    Ν/Α
    Εγγραφή
    Nov 2008
    Περιοχή
    Γαλλια
    Μηνύματα
    108

    Προεπιλογή Ι/Ο Ports registers

    Είναι 3 registers.Tris,port και lat..Bασικά δεν καταλαβαίνω την διαφορά του port και του lat.Αν θέλω να δώσω τιμή και να διαβάσω σε ποιούς απευθύνομαι και γιατί?

    0 Not allowed! Not allowed!
    Keep the noise down - POWERED BY RENAULT

  2. #2
    Μέλος Το avatar του χρήστη Hary Dee
    Όνομα
    Χαράλαμπος
    Εγγραφή
    Jul 2009
    Περιοχή
    Κερατσίνι
    Μηνύματα
    973

    Προεπιλογή

    Φιλαράκι μιλάς για κάποιο συγκεκριμένο chipάκι; Γιατί από τον τίτλο (μπηχτή!) και την περιγραφή δεν καταλαβαίνω...

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη Hary Dee
    Όνομα
    Χαράλαμπος
    Εγγραφή
    Jul 2009
    Περιοχή
    Κερατσίνι
    Μηνύματα
    973

    Προεπιλογή

    Ναι, οκ... με ένα googling κατάλαβα ότι μιλάς για PIC. Μάλλον θα ήτανε καλό να το αναφέρεις κάπου, ειδικά στον τίτλο (για να ψήσεις κανένα fun των PIC)

    0 Not allowed! Not allowed!

  4. #4
    Μέλος
    Όνομα
    Γιώργος
    Εγγραφή
    Feb 2010
    Περιοχή
    Αθήνα
    Μηνύματα
    4.618

    Προεπιλογή

    Γειά σου CITRO, υποθέτω πως η ερώτησή σου είναι:
    Στο datasheet του PICxyz αναφέρει τα registers TRIS PORT και LAT που αφορούν τα I/O ports. Δεν καταλαβαίνω την διαφορά τους. Αν θέλω να δώσω τιμή και να διαβάσω σε ποιούς απευθύνομαι και γιατί; <
    Σε datasheet της σειράς PIC18xyz γράφει:
    I/O PORTS
    There are up to three ports available. Some pins of the I/O ports are multiplexed with an alternate function from the peripheral features on the device. In general, when
    a peripheral is enabled, that pin may not be used as a general purpose I/O pin.

    Each port has three registers for its operation. These registers are:

    • TRIS register (data direction register)
    • PORT register (reads the levels on the pins of the device)
    • LAT register (output latch)

    The PORTA Data Latch (LATA register) is useful for read-modify-write operations on the value that the I/O pins are driving.
    Που σημαίνει ότι τα 3 ports (PORTA, PORTB, PORTC) έχουν δυνατότητες εισόδου και εξόδου οι οποίες δηλώνονται στα TRISA, TRISB και TRISC αντίστοιχα. To bit=1 σημαίνει είσοδος και το bit=0 έξοδος. Το παρακάτω παράδειγμα δηλώνει τα pins Α7, Α6, Α5, Α4 ως εισόδους και τα A3, A2, A1, A0 ως εξόδους.
    Κώδικας:
            movlw     b'11110000'
            movwf     TRISA
    Η κατάσταση των I/O καταχωρείται στα PORTx και στους νεώτερους PIC και στα LATx. Οι registers LATx δημιουργήθηκαν για να διορθώσουν μία 'ασάφεια' όταν διάβαζες το PORTx για να δεις (θυμηθείς) τι είχες γράψει στο pin εξόδου ή τα λάθη που συνέβαιναν αν έκανες διάβασμα-αλλαγή-γράψιμο στην ίδια πόρτα.

    Λ.χ. στο παράδειγμα μας δίνεις έξοδο LOW και στα 4 pins εξόδου (Α0,1,2,3) και σε άλλο σημείο του προγράμματος θέλεις να 'θυμηθείς' αν είχες δώσει HIGH ή LOW στην έξοδo A2:

    Κώδικας:
            clrf      PORTA
    ; -------------------------------------- ή εναλλακτικά
            movlw     b'00000000'
            movwf     PORTA
    ;
    ; -------------------------------------- σε άλλο σημείο ελέγχουμε την
    ; -------------------------------------- κατάσταση της εξόδου A2      
    ;
            movfw     PORTA      ; <<< 'κακή' μέθοδος με πιθανότητα ασάφειας
            andlw     b'00000100'
            skpnz
            goto      A2wasHIGH
            goto      A2wasLOW
    ; -------------------------------------- ή
            btfsc     PORTA,2    ; <<< 'κακή' μέθοδος με πιθανότητα ασάφειας
            goto      A2wasHIGH
            goto      A2wasLOW
    ; -------------------------------------- ή
            movfw     LATA       ; <<< 'ασφαλής' μέθοδος
            andlw     b'00000100'
            skpnz
            goto      A2wasHIGH
            goto      A2wasLOW
     ; -------------------------------------- ή
            btfsc     LATA,2     ; <<< 'ασφαλής' μέθοδος
            goto      A2wasHIGH
            goto      A2wasLOW
    Οταν καθορίζεις την κατάσταση των εξόδων είναι 'ασφαλές' το να γράψεις σε όλη την πόρτα (movwf PORTA) παρά να κάνεις bit set/reset (bsf PORTA,2). Στην περίπτωση του LATA είναι εντάξει και οι δύο μέθοδοι (movwf LATA ή bsf LATA,2).

    Φιλικά,
    Γιώργος

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη GeorgeVita : 26-03-10 στις 13:10

  5. #5
    Μέλος Το avatar του χρήστη CITRO
    Όνομα
    Ν/Α
    Εγγραφή
    Nov 2008
    Περιοχή
    Γαλλια
    Μηνύματα
    108

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από GeorgeVita Εμφάνιση μηνυμάτων
    [/code] Η κατάσταση των I/O καταχωρείται στα PORTx και στους νεώτερους PIC και στα LATx. Οι registers LATx δημιουργήθηκαν για να διορθώσουν μία 'ασάφεια' όταν διάβαζες το PORTx για να δεις (θυμηθείς) τι είχες γράψει στο pin εξόδου ή τα λάθη που συνέβαιναν αν έκανες διάβασμα-αλλαγή-γράψιμο στην ίδια πόρτα.

    Λ.χ. στο παράδειγμα μας δίνεις έξοδο LOW και στα 4 pins εξόδου (Α0,1,2,3) και σε άλλο σημείο του προγράμματος θέλεις να 'θυμηθείς' αν είχες δώσει HIGH ή LOW στην έξοδo A2:
    Αυτό ήθελα.Είχα διαβάσει το data sheet αλλά μόλις μου ξεκαθάρησες τη διαφορά στον πορτ και λατ.Τώρα κατάλαβα.

    Ευχαριστώ που ασχολήθικες πάντως...
    και ευχαριστώ για την ύπαρξη του σιτε!

    Αν και θα δημιουργήσω άλλο θέμα θα ήθελα να βρώ έναν κώδικο σε C εναν pid controller.Κάτι έχω βρεί ιντερνετ αλλα όχι κάτι αναλυτικό

    Αν έχεις τίποτα κάνε ένα ποστ..Thanx

    0 Not allowed! Not allowed!
    Keep the noise down - POWERED BY RENAULT

Παρόμοια Θέματα

  1. AVR & I/O registers
    By netpumber in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 11
    Τελευταίο Μήνυμα: 16-11-13, 22:40
  2. Τι πυκνωτές να βάλω σε shift registers;
    By acmilangr in forum Ηλεκτρονικά
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 25-07-10, 23:37
  3. Switches 48 ports managed
    By manos_3 in forum Ερωτήσεις Θεωρίας
    Απαντήσεις: 8
    Τελευταίο Μήνυμα: 13-06-10, 22:39
  4. Πρόβλημα 16f877a ports low high state
    By Infrared in forum Μικροελεγκτές
    Απαντήσεις: 13
    Τελευταίο Μήνυμα: 16-12-09, 15:04
  5. Control USB Ports With VB.NET 2005
    By 30fyllos in forum Software Η/Υ
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 26-02-07, 16:38

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας