PORTC
PORTC
è un registro a 8 bit per uso generico (GPIO - General Purpose IO) a cui
sono solitamente associate le funzioni delle comunicazioni seriali (EUSART,
MSSP) e dei moduli compare/capture.
In particolare PORTC supporta:
-
GPIO
-
EUSART
-
MSSP
-
CCP
-
TIMER1 input
-
TIMER1 oscillatore
-
TIMER3
Nello schema di principio del controller, mettiamo in
evidenza il PORTC e i circuiti associati:
Fisicamente i pin si trovano qui:
|
Microchip mantiene un ragionevole senso nella disposizione delle
funzioni cercando di porle in modo successivo in corrispondenza dei
pin.
Per questo chip, i pin hanno da due a tre funzioni programmabili
ciascuno.
|
Nei chip a 28 e 40 pin PORT
C
è presente al completo con tutti gli 8 bit, da RC0 a RC7.Dal punto di vista elettrico, la struttura dei
PORTC è analoga a quella
vista per i PORTA.
Sono diverse le funzioni accessorie
programmabili oltre il GPIO. Tutti i pin hanno in uscita una coppia MOSFET
P/N e quindi sono in grado di azionare carichi sia alla Vdd che alla Vss (sink
e source).
La tabella seguente riporta il quadro completo di queste
possibilità. Da notare che, a seconda della funzione programmata, possono
esserci disponibili diversi tipi di buffer collegato al pin: ad esempio, il
pin relativo al TIMER1 è uno Schmitt Trigger (allo scopo di squadrare
al meglio il segnale) quando opera in questa funzione è un gate a livello
logico TTL quando agisce come pin di ingresso GPIO.
Pin
|
Funzione
|
TRIS
|
I/O
|
Tipo
|
Descrizione
|
RC0
T1OSO
T13CKI
|
RC0
|
0
|
O
|
DIG
|
LATC<0> uscita digitale
|
1
|
I
|
TTL
|
PORTC<0> ingresso digitale
|
T1OSO
|
-
|
I
|
ANA
|
uscita dell' oscillatore del Timer 1
|
T13CKI
|
1
|
I
|
ST
|
ingresso del Timer 1 o 3
|
RC1
T1OSI
CCP2
|
RC1
|
0
|
O
|
DIG
|
LATC<1>
uscita digitale
|
1
|
I
|
TTL
|
PORTC<1>
ingresso digitale
|
T1OSI
|
x
|
I
|
ANA
|
ingresso dell'
oscillatore del Timer 1
|
CCP2
|
0
|
O
|
DIG
|
uscita CCP2
compare ve PWM
|
1
|
I
|
ST
|
ingresso
capture CCP2
|
RC2
CCP1
P1A
|
RC2
|
0
|
O
|
DIG
|
LATC<2>
uscita digitale
|
1
|
I
|
TTL
|
PORTC<2>
ingresso digitale
|
CCP1
|
0
|
O
|
DIG
|
uscita CCP!
compare e PWM
|
1
|
I
|
ST
|
ingresso CCP1
capture
|
P1A
|
1
|
I
|
ANA
|
uscita ECCP1
enhanced PWM canale A
|
RC3
SCK
SCL
|
RC3
|
0
|
O
|
DIG
|
LATC<3>
uscita digitale
|
1
|
I
|
TTL
|
PORTC<3>
ingresso digitale
|
SCK
|
0
|
O
|
DIG
|
uscita clock del modulo MSSP in SPI
|
1
|
I
|
ST
|
ingresso
clock del modulo MSSP in SPI
|
SCL
|
0
|
O
|
DIG
|
uscita clock
del modulo MSSP in I2C
|
1
|
I
|
I2C
|
ingresso clock
del modulo MSSP in I2C
|
RC4
SDI
SDA
|
RC4
|
0
|
O
|
DIG
|
LATC<4>
uscita digitale
|
1
|
i
|
TTL
|
PORTC<4>
ingresso digitale
|
SDI
|
1
|
I
|
ST
|
ingresso dati SPI
|
SDA
|
0
|
O
|
DIG
|
uscita dati
I2C
|
1
|
I
|
I2C
|
ingresso dati
I2C
|
RC5
SDO
|
RC5
|
0
|
O
|
DIG
|
LATC<5>
uscita digitale
|
1
|
I
|
TTL
|
PORTC<5>
ingresso
digitale
|
SDO
|
0
|
O
|
DIG
|
uscita dati SPI
|
RC6
TX
CK
|
RC6
|
0
|
O
|
DIG
|
LATC<6>
uscita digitale
|
1
|
I
|
TTL
|
PORTC<6>
uscita digitale
|
TX
|
1
|
I
|
DIG
|
uscita dati seriali EUSRAT in modo asincrono
|
CK
|
1
|
O
|
DIG
|
uscita dati seriali EUSART in modo sincrono
|
1
|
I
|
ST
|
ingresso clock EUSART in modo sincrono
|
RC7
RX
DT
|
RC7
|
0
|
O
|
DIG
|
LATC<7>
uscita digitale
|
1
|
I
|
TTL
|
PORTC<7>
uscita digitale
|
RX
|
1
|
I
|
ST
|
ingresso dati seriali EUSART in modo asincrono
|
DT
|
1
|
O
|
DIG
|
uscita dati seriali EUSART in modo sincrono
|
1
|
I
|
ST
|
ingresso dati seriali EUSART in modo sincrono
|
- = non dipende dal registro TRIS
DIG = uscita digitale
TTL = buffer di ingresso livello logico
ST = ingresso con trigger di schmitt
ANA = ingresso o uscita analogico
I2C = buffer I2C/SMB
I pin di PORTC
posso assumere le seguenti funzioni :
RISC.
PORTC è il
registro dello stato della porta (in lettura e scrittura), mentre
LATC
è il registro del latch della porta in uscita.
oscillatore del Timer1 (T1OSO, T1OSI)
I pin RC1 e RC0 possono essere dedicati (contemporaneamente) come
ingressi per un oscillatore collegato a Timer1. E' previsto il
collegamento con un quarzo ed i relativi condensatori/resistenze per
operare come generatore di clock.
external input per Timer 1 o Timer3 (T13CKI)
RC0 può asumere la funzione di ingresso di conteggio per Timer1 o
per Timer3.
ingressi e uscite del modulo CCP
alcuni pin possono essere
dedicati come ingressi e/o uscite del modulo ECCP/CCP 1 e 2.
porta di
comunicazione MSSP (I2C e SPI)
porta di
comunicazione seriale EUSART
Come solito, i pin dedicati ad una funzione non possono
essere impiegati per altre.
Nella tabella sono indicati lo
stato del bit di TRISC
necessario alla funzione e
il genere di ingresso/uscita.
I
registri associati a PORTC
I registri associati all' uso di PORT
A
sono i seguenti :
Nome
|
bit 7
|
bit 6
|
bit 5
|
bit 4
|
bit 3
|
bit 2
|
bit 1
|
bit 0
|
PORTC
|
RC7
|
RC6
|
RC5
|
RC4
|
RC3
|
RC2
|
RC1
|
RC0
|
LATC
|
Data latch
|
TRISC
|
Data direction - 1
= input / 0 = output
|
PORTC
non ha funzioni analogiche collegate.
Per le funzioni speciali (MSSP, EUSART, CCP, T1OSC) consultare
i capitoli relativi.
Situazione al POR
Anche per PORTC
il default del POR fa assumere ai registri particolari valori pre definiti e
questo rende indispensabile, nelle prime fasi di inizializzazione dell'
hardware, dedicare una parte alla corretta definizione delle funzioni di
questi pin.
Il default per PORTC
è con tutti i bit configurati come ingressi digitali.
In dettaglio:
C
= 11111111, ovvero
la direzione generale dei pin è come ingresso.
PORT
C
e LATC
hanno contenuto indeterminato.
Per quanto riguarda i registri di controllo dell' interrupt,
al POR tutti gli Interrupt sono disabilitati
Nei registri di configurazione, per default l' oscillatore
di TIMER1 è disabilitato.
Si
può riassumere la situazione del POR in questo modo :
nte da PORTC
è attivato
Nessuna funzione speciale è abilitata per default sul
PORT
C
Inizializzazione di PORT
C
Una
sequenza di inizializzazione come GPIO digitale è semplice, dato che
il port non coinvolge ne ingressi analogici, nè comparatori e al default i
pin sono intesi come input digitali:
; Inizializza PORTC
clrf PORTC
; clear PORTC latch
movlw b'11001111'
; set RC7:6 e RC3:0 come input
movwf TRISC
; e RC5:4 come out
|
NOTE:
Anche per PORTC
l' errata inizializzazione sia del TRIS che
dei registri di configurazione iniziale e dei registri relativi alle
varie funzioni addizionali (CCP, PWM, EUSART, MSSP) impedisce l' uso
dei pin nel modo voluto.
-
La funzione di RC1
come uscita /ingresso per il modulo CCP2 è il default. In
alternativa è programmabile su RB3
in fase di configurazione dal bit CCP2MX
del registro CONFIG3H
-
La funzione di RC0
come ingresso del clock dei Timer viene selezionata con i
registri T1CON/T3CON
-
L' oscillatore di Timer1 dipende dalla
configurazione del bit OSCS
del registro CONFIG1H ed
è abilitato con il registro T1CON
. Con il registro OSCCON
è poi possibile utilizzarlo anche come clock di
sistema (ved. capitoli relativi a Oscillatori e Timer1)
-
Su TRISC,
per i pin dedicati alla comunicazione seriale EUSART, sincrona o
asincrona, si devono impostare come ingressi anche per i pin che
funzionano in uscita.
Per il modulo MSSP le funzioni di uscita e ingresso devono avere
i pin configurati di conseguenza.
-
Per quanto riguarda CCP, PWM, EUSART e MSSP
consultare i capitoli relativi, considerando anche che possono
non essere disponibili in modo uguale su tutti i PIC18F
|