Tutorials - PIC18 by Data Sheet

 

PORTC


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 PORTC è 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 :

  • General Purpose IO (RC7:0)
    Si tratta della funzione generica di ingresso/uscita (GPIO General Purpose IO), dove la direzione è stabilita dal registro TRISC
    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 PORTA 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:

  • TRISC = 11111111, ovvero la direzione generale dei pin è come ingresso.

  • PORTC 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 :

  • Tutti i pin sono configuratoi come ingressi digitali 
      

  • Nessun interrupt dipendente da PORTC è attivato
      

  • Nessuna funzione speciale è abilitata per default sul PORTC



Inizializzazione di PORTC

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.

  1. 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
     

  2. La funzione di RC0 come ingresso del clock dei Timer viene selezionata con i registri T1CON/T3CON
     

  3. 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)
     

  4. 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.
     

  5. 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

 

 


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 09/12/10.