PDA

Επιστροφή στο Forum : Ι/Ο Ports registers



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

Hary Dee
26-03-10, 03:25
Φιλαράκι μιλάς για κάποιο συγκεκριμένο chipάκι; Γιατί από τον τίτλο (μπηχτή!) και την περιγραφή δεν καταλαβαίνω...:confused1:

Hary Dee
26-03-10, 03:27
Ναι, οκ... με ένα googling κατάλαβα ότι μιλάς για PIC. Μάλλον θα ήτανε καλό να το αναφέρεις κάπου, ειδικά στον τίτλο (για να ψήσεις κανένα fun των PIC) :laugh:

GeorgeVita
26-03-10, 13:01
Γειά σου 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).

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

CITRO
26-03-10, 23:13
[/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