INTERFACCIAMENTO
PC CON LCD
• Progetto di Marco Romani.
• Interfacciamento attraverso porta seriale e
parallela.
LA PORTA SERIALE
Introduzione
• La porta seriale è un dispositivo di
collegamento del computer ad altri computer
o periferiche (come modem o macchine di
controllo numerico). La comunicazione di
questa porta è detta appunto SERIALE e
significa che ogni parola da trasmettere (o
ricevere) viene trasmessa (o ricevuta) un solo
bit
alla
volta.
La
porta
provvede
automaticamente a scomporre le parole in bit
e li trasmette (o riceve) uno alla volta. La
porta seriale è una porta di comunicazione
molto più lenta rispetto alla parallela, infatti
essa permette di trasferire circa 150kbit al
secondo.
• Questa porta viene utilizzata principalmente per
connettere modem, ma non è raro trovare alcuni
personal dotati di un mouse collegato ad una porta
seriale (mouse seriale). Le porte di comunicazione
vengono gestite all'interno del S.O. con il nome di
COM (COM1, COM2, ecc). La velocità di
trasmissione, la struttura dei pacchetti di bit inviati
ed il tipo di controllo effettuato, determinano il
protocollo usato nella trasmissione dei dati.
I diversi protocolli sono stabiliti internazionalmente.
• Porta seriale
• Recommended Standard 232 Revision C (RS-232C)
• Universal Asynchronous Receiver Transimitter (uart)
sono tutti sinonimi per indicare una interfaccia di tipo
seriale verso il mondo esterno.
• Il PC ragiona in termini di bit, è formato da
un microprocessore ed altri integrati; due
integrati fondamentali sono: l’8255 (porta
parallela) e l’8250 (porta seriale). Il PPI
8255 è integrato nel microprocessore e
quindi non è visibile esternamente, a questo
integrato viene collegato il collettore della
porta parallela a 25 pin. Le prime parallele
erano unidirezionali ora sono bidirezionali,
in uscita mandano otto bit ma ne riceve in
ingresso solo quattro.
• Quando due unità intelligenti si trovano a dover
comunicare tra loro da una distanza superiore ad un
paio di metri, l'uso dell'interfaccia parallela non è più
consigliabile in quanto molto sensibile ai disturbi. Si
ricorre quindi ad un altro tipo di comunicazione, quella
seriale, dove i bit vengono trasmessi in sequenza su
un'unica linea, ottenendo così una riduzione dei
disturbi indotti, anche se a scapito della velocità. La
trasmissione seriale é generalmente garantita da un
dispositivo, detto appunto interfaccia seriale, che ha il
compito di permettere il collegamento tra il canale
esterno, su cui i dati viaggiano uno di seguito all'altro,
e il bus dei dati del computer che invece trasferisce i
dati in modo parallelo.
• Questa interfaccia, oltre ad occuparsi della
conversione di una sequenza seriale di bit in un
insieme di bit trasferibile in modo parallelo,
deve anche generare dei bit di controllo,
rilevare eventuali errori di trasmissione,
nonché dirigere la corretta sincronizzazione
durante la trasmissione (protocollo di
comunicazione).
• In base al tipo di colloquio, le interfacce si
dividono in asincrone UART (Universal
Asyncronous Receiver Transmitter) e sincrone
USART (Universal Syncronous Asyncronous
Receiver Transmitter).
DIFFERENZE TRA PORTA SERIALE
E PORTA PARALLELA:
Ma allora quali sono i vantaggi della trasmissione
seriale rispetto a quella parallela?
• 1. I cavi utilizzati per la trasmissione seriale
possono essere molto più lunghi rispetto a quelli
che si possono usare nella trasmissione parallela.
La porta seriale trasmette un '1' come un segnale
da -3 a -25 volt e uno '0' come un segnale da +3 a
+25 volt mentre la porta parallela trasmette lo '0'
con un segnale da 0 volt e l' '1' con un segnale da 5
volt. Quindi la seriale ha un'ampiezza di voltaggio
(maximum swing) di 50v mentre la parallela di soli
5v. Di conseguenza i problemi di perdita di
tensione si fanno sentire molto di più nella
parallela che nella seriale.
• 2. Non servono tanti fili di connessione come
succede nella trasmissione parallela. Se si sta
collegando una periferica al computer e questa si
trova ad una certa distanza dal computer stesso
allora un collegamento con 3 cavetti (Null Modem)
è molto più economica di una con 19 o 25 cavetti
(SPP).
• 3. I dispositivi a raggi infrarossi di recente stanno
diventando molto popolari. E' facile capire come
nella trasmissione ad infrarossi sia praticamente
impossibile trasmettere in modo parallelo: vi
immaginate dover trasmettere 8 bit per volta
attraverso la stanza utilizzando 8 e più raggi
infrarossi? Per questo si utilizza la trasmissione
seriale e viene mandato un solo bit per volta
riducendo drasticamente i possibili errori e
problemi di trasmissione.
PROPRIETA’ HARDWARE:
• I dispositivi che usano i cavi seriali per la
comunicazione sono divisi in due categorie:
DCE e DTE. Le DCE (Data Communications
Equipment) sono le periferiche come il
modem, il plotter o altro, mentre le DTE
(Data Terminal Equipment) sono il computer
o il terminale. Le specifiche elettroniche
per la porta seriale sono contenute nelle
EIA (Electronics Industry Association)
RS232C standard. Qui vengono impostati e
definiti vari parametri:
• Standard elettrico:
1. Uno "Spazio" (0 logico) deve essere fra +3 e +25 Volt.
2. Un "Segno" (1 logico) deve essere fra -3 e -25 Volt.
3. La regione fra i +3 e i -3 Volt è indefinita.
4. Il voltaggio di un circuito aperto non supera mai i 25
Volt (riferiti a massa).
5. La corrente di un circuito non deve mai superare i
500mA
• Standard meccanico:
I connettori seriali possono essere montati in due diversi
formati. Questi si differenziano per il numero di pin
disponibili fisicamente sul connettore stesso (9 o 25 pin).
In ogni caso sul PC sono sempre presenti seriali a 9 o 25
pin maschi per cui è necessario disporre di cavi con
connessioni femmine per poter collegare il computer ad un
dispositivo esterno.
Pinout di connettori seriali D25 e D9:
D-Type-25
Pin
D-Type-9
Pin
Abbreviazio
ne
Nome Intero
Pin 2
Pin 3
TD
Transmit Data
Pin 3
Pin 2
RD
Receive Data
Pin 4
Pin 7
RTS
Request To Send
Pin 5
Pin 8
CTS
Clear To Send
Pin 6
Pin 6
DSR
Data Set Ready
Pin 7
Pin 5
SG
Signal Ground
Pin 8
Pin 1
CD
Carrier Detect
Pin 20
Pin 4
DTR
Data Terminal Ready
Pin 22
Pin 9
RI
Ring Indicator
• Nella figura qui sotto sono raffigurati i connettori
dei computer di vecchia generazione: quello in alto
è il connettore della porta parallela; quelli in basso
sono i connettori seriali a 25 pin e a 9 pin.
Funzioni dei Pin:
Abb.
Nome Intero
TD
Transmit Data
Serial Data Output (TXD)
RD
Receive Data
Serial Data Input (RXD)
CTS
Clear to Send
Questa linea indica che il modem è pronto a
ricevere e a trasmettere dati
DCD
Data Carrier Detect
DSR
Data Set Ready
Quando il modem rileva il segnale di linea
(carrier) sul modem dall'altra parte attiva questa
linea
Questa dice alla UART che il modem è
pronto a stabilire il collegamento..
DTR
Data Terminal Ready
RTS
Request To Send
RI
Ring Indicator
Funzione
Il contrario del precedente, dice al modem che la
UART è pronte per collegarsi
Questa linea informa il modem
UART è pronta per scambiare dati.
che
la
Diventa attiva quando il modem trova un
"ringing signal" (il drin) sulla linea
Null Modems
• Un Null Modem è usato per collegare due DTE
insieme. Di solito è usato per realizzare
connessioni economiche per il trasferimento
dati.
Figura 1 : Diagramma di un collegamento Null
Modem.
• In Fig. 1 è riportato il più semplice
collegamento Null Modem. Richiede solo 3
cavetti (TD, RD e SG) e naturalmente questo
influisce molto sulla spesa specialmente se si
devono
effettuare
lunghe
connessioni.
Essenzialmente questo metodo di connessione
si basa sul principio di far credere al
computer che sta comunicando con un modem
e non con un altro computer. Così si possono
collegare solo il TD all'RD remoto, l'RD al TD
remoto e i due segnali di massa (SG - Signal
Ground) insieme.
LoopBack Plug
Figure 2 : Diagramma di connessione del "Loopback
Plug“
Per "LoopBack Plug" s’intende un piccolo
connettore da attaccare esternamente alla
seriale, per fare dei test quando si scrive
ad esempio dei programmi di comunicazione.
• Al suo interno sono collegati insieme TD e
RD in modo che ogni qualvolta si trasmette
un dato questo viene subito ricevuto dalla
seriale stessa. In pratica si può così
testare il programma su cui si sta'
lavorando senza dover disporre di due
computer: se si trasmette un dato questo e
subito ricevuto dalla seriale identico.
Questo piccolo connettore può quindi
risultare molto utile.
La UART (8250 e compatibili):
• UART
è
l'acronimo
di
Universal
Asynchronous Receiver Transmitter.
La serie 8250 include i modelli 16450,
16550, 16650, & 16750 che sono le UART
che più frequentemente si ritrovano nei PC
attuali. È un ricevitore trasmettitore
universale asincrono (a differenza delle
USART che possono essere utilizzate
anche in maniera sincrona). E’ un registro a
scorrimento, cioè ho dei dati in parallelo in
ingresso, e in uscita sono in serie.
• I segnali d’ingresso andranno abilitati
con delle porte “TTL” AND, in modo
che se su un ingresso ho 1 sono
abilitate, se ho 0 sono tutte
disabilitate:
• Ho un’informazione in parallelo, la trasformo in
seriale attraverso un registro a scorrimento, poi la
trasformo in parallelo con un altro registro a
scorrimento.
L’UART del Pc funziona in maniera asincrona quindi
devo spedire degli altri segnali, oltre a quelli
d’informazione, che “dialogano” con l’UART esterna
per mettere in ordine le informazioni che
trasmetto;
nasce
così
il
“Protocollo
di
Comunicazione” chiamato RS232C, che è un
insieme di regole alle quali bisogna sottostare. I
valori di tensioni nel caso del TTL sono:
0 logico: da 0V a 0.8V
1 logico: da 2.4V a 5V
Nel caso del protocollo RS232C:
0 logico: da +3V a +12V
1 logico: da -3V a -12V
Lo standard RS-232 ha definito delle
convenzioni che uniformano la
comunicazione seriale:
•
* BAUD RATE: Velocità di trasmissione in
bit/s (50..115200 bit/s)
• *WORD LENGTH: Numero di bit che
compongono una parola (5,6,7,8 bit)
• *STOP BITS: Numero di bit usati per
separare due parole consecutive (1,2 bit)
• *PARITY: bit opzionale utilizzato per
fare una verifica sull'integrità della parola
trasmessa (pari, dispari, nessuna)
• L’insieme dei dati che trasmetto è a 8 bit; prima
degli 8 bit inserisco il bit di start “Start bit”, dopo
gli 8 bit inserisco il “Parity bit”, ed infine lo “Stop
bit”.
• I bit però possono essere 6, 7 o 8, il parità bit è
uno soltanto, lo Stop bit può essere costituito da 1
bit, 1,5 bit o 2 bit, questo perché guardo il periodo
di bit.
• Il Parity bit è un bit di controllo (bit di parità), può
essere attivato con parità pari o parità dispari: è
un codice a rilevazione d’errore. Il numero dei bit
ad 1 possono essere pari o dispari, se ho parità
pari, e ho una stringa di bit con 1 dispari il Parity
bit mi aggiunge un 1 per avere i bit 1 pari. In
questo modo il ricevitore guarda il bit di parità se
è a 0 o a 1, per riordinare il tutto e per vedere se il
segnale arrivato è giusto, altrimenti lo richiede o
dice che è sbagliato.
Comunicazione tra due UART:
• L’UART interna al PC la posso sistemare via
Software, l’UART esterna la sistemo via Hardware
cioè con degli interruttori “dip-switch”. L’8250 ha
bisogno di essere programmata quindi non posso
usarla come UART esterna; ci sono delle UART
fatte apposta da mettere nei dispositivi remoti
che non hanno il microprocessore per essere
programmate come il CDP6402.
• Il clock dei due registri, per quanto simile, non
sarà uguale per questo abbiamo bisogno del
protocollo di comunicazione. All’8250 bisogna
comunicargli la frequenza di trasmissione, i due
clock devono essere uguali; il clock lo posso
regolare via software ad esempio a 4800 baud.
• L’UART CDP6402 può trasmettere o ricevere, ma
non contemporaneamente; è molto utile per
elementi esterni perché posso regolargli tutto; il
suo massimo bit rate è 9600 bit/s.
I registri dell’UART:
• THR:Contiene il carattere da trasmettere. Prima
di scrivere un nuovo carattere testare il bit 5 di
LSR
• RDR: contiene il carattere ricevuto che viene
mantenuto fino a quando ne giunge uno nuovo. Il bit
0 di LSR indica se è giunto un nuovo carattere. Il
bit 1 di LSR indica che il carattere precedente non
è stato letto.
• BRD: la velocità di trasmissione è data da:
BaudRate
=
1,843,200/(divisore
x
16)
divisore = 1,843,200/(BaudRate x 16) i due registri
BRD contengono il divisore a 16 bit.
I valori validi perBaud Rate sono: 50, 110, 150,
300, 600, 1200, 1800, 2000, 2400, 3600, 4800,
7200, 9200, 9600, 38400, 115200.
• IER: E' possibile far generare dal PIC un interrupt
(IRQ*) quando si verificano le seguenti condizioni:
1. RDR pieno (è arrivato un carattere) (bit 0)
2.THR è vuoto (buffer trs vuoto) (bit 1)
3.errore sulla linea (bit 2)
4.è cambiato lo stato del modem (bit 3)
1 = interrupt abilitato
*IRQ4 (INT 0Ch) per COM1, IRQ3 (INT 0Bh) per
COM2.
• IIR:questo registro permette di identificare quale dei
quattro casi ha generato l'interrupt corrente (bit 1,2).
Inoltre indica anche se c'è un INT pendente (bit 0 = 0).
• BRD-LSB: condivide il registro xF8 con THR e RDR.
Prima di scrivere BRD-LSB è necessario impostare il bit
7 (DLAB) di LSR. DLAB viene azzerato scrivendo in BRDMSB.
• LCR: Permette di impostare i parametri del
protocollo
• MCR: Questo registro controlla i segnali Data
Terminal Ready (DTR bit 0), e Request To Send
(RTS bit 1). Inoltre il bit 3 se alto permette agli int
generati dal UART di essere ascoltati dal PIC. Per
una comunicazione Interrupt Driven MCR deve
essere impostato a: 0000 1011 (0Bh)
• LSR: Questo registro contiene informazioni relativi
ai dati in transito (in/out). Il bit 0 = 1 se è arrivato
un carattere. Viene azzerato leggendo in RDR i bit
1,2,3,4 indicano diverse condizione di errore Il bit 5
= 1 se THR è vuoto (THR-E). Viene azzerato
scrivendo in THR
• MSR: contiene lo stato dei segnali modem. I primi
quattro bit sono 1 se i segnali collegati hanno
cambiato il loro stato dall'ultima volta che sono stati
letti dalla cpu.
Configurazione dei Pin per la UART 8250:
• Tutti i piedini delle UART sono TTL compatibili.
Questo include il TD, RD, RI, DCD, DSR, CTS, DTR
e RTS che sono tutti interfacciati con la seriale,
tipicamente con un connettore a D. Per questa
ragione si devono utilizzare i convertitori di livello
della RS232 che convertono i segnali TTL in livelli
logici interpretabili dalla RS232.
• Per funzionare la UART necessita di un Clock. Si
può notare che viene utilizzato un cristallo da
1.8432 MHz o 18.432 MHz presente nella porta
seriale e collegato alla UART tramite i piedini XIN
- XOUT e con pochi altri componenti che aiutano il
cristallo ad iniziare l'oscillazione. Questo Clock è
utilizzato per il Programmable Baud Rate
Generator che è direttamente connesso con la
temporizzazione dei circuiti di trasmissione ma non
è direttamente connesso con la temporizzazione
dei circuiti di ricezione.
Forme d'onda della RS-232
• La comunicazione fra la RS-232 e il computer
avviene attraverso una comunicazione asincrona.
Questo significa che insieme al pacchetto dati non
viene mandato anche il sincronismo di un clock
comune, ma semplicemente si invia un bit di start
che fa' partire la ricezione sulla sponda opposta
del canale di trasmissione.
Il diagramma qui sopra riporta la forma d'onda in
uscita dalla seriale classico, chiamato "8N1". 8N1
sintetizza i parametri della comunicazione in
questione, cioè 8 bit per carattere, Nessuna parità
e 1 bit di stop.
• La trasmissione comincia quando la 232
ricevente riceve un bit di start ('0' logico).
A quel punto comincia a ricevere i bit di
dati uno alla volta, partendo dal meno
significativo (LSB - Less Significant Bit) e
poi si ferma quando trova un bit di stop ('1'
logico). Lo schema d'onda di qui sopra vale
comunque solo per l'onda in uscita dalla
UART. La RS-232 interpreta con differenti
voltaggi gli '1' e '0' logici:
Voltaggio
Interpretazione
fra -3 e -25 V
'0' logico (space)
fra +3 e +25 V
'1' logico (mark)
fra -3 e +3 V
Indefinito
• Il segnale quindi prima di arrivare alla
RS-232 deve essere condizionato in
modo da poter essere interpretato. A
questo condizionamento ci pensa lo
"RS-232 Level Converter" che da in
uscita un segnale simile a quello
riportato nel diagramma qui sotto:
Il convertitore di livello
(RS-232 Level Converter):
• Più o meno tutti i dispositivi digitali
lavorano con dei livelli TTL compatibili. Per
questo motivo ogni volta che interfacciamo
la nostra RS-232 con altri dispositivi è
indispensabile convertire il segnale in
uscita da questa in TTL compatibile (e
viceversa). Come già detto a questo ci
pensa il convertitore di livello.
• Uno dei convertitori più usati è il MAX-232
che riesce a convertire i livelli logici TTL
( 5V) in quelli compatibili con l'interfaccia
RS-232 (10V).
Pinout del MAX-232,
RS-232 Driver/Receiver.
Circuito del MAX-232.
I Registri della Porta Seriale
• In tabella sono riportati gli indirizzi standard per
la seriale. Questi dovrebbero funzionare per la
maggior parte dei P.C., con un PC IBM P/S2, che ha
un bus micro-channel, ci si deve aspettare un
insieme differente degli indirizzi e degli IRQ.
• Come per la Porta Parallela (LPT port), anche per la
Porta Seriale (COM port) gli indirizzi base possono
essere letti dall'area base del BIOS (accedendo al
BIOS all'avvio).
Name
Address
IRQ
COM 1
3F8
4
COM 2
2F8
3
COM 3
3E8
4
COM 4
2E8
3
Circuito elettrico interfacciamento LCD con porta
seriale::
Il circuito d’interfacciamento dell’LCD, con
la porta seriale, durante il collaudo:
LA PORTA PARALLELA
•
•
•
•
Introduzione:
La
porta
parallela
era
utilizzata
inizialmente per collegare al PC la
stampante.
La porta in questione è composta da 25 pin
suddivisi nel seguente modo:
12 sono usati per inviare dati in uscita
5 sono usati per accogliere dati in ingresso
8 sono usati come massa
Tipi di parallele:
• SSP (Standard Parallel Port), questo tipo di
parallele, il flusso dei dati è rigidamente
monodirezionale, dal PC alla periferica. La
velocità va da un minimo di 50Kbyte ad un
massimo di 150Kbyte al secondo.
• EEP (Enanched Parallel Port), sono
compatibili con lo standard SSP ma sono
bidirezionali, viaggiano ad una velocità dai
500Kbyte a 2Mbyte al secondo.
• ECP (Extended Capabilities Port), simile alla
EEP, ma è in grado di comprimere i dati
prima di trasferirli, ottenendo velocità di
trasmissione maggiori.
Circuito elettrico interfacciamento LCD con
la porta parallela:
Circuito interfacciamento LCD con porta parallela
durante il collaudo:
Display LCD a 16 caratteri, due righe, e
rispettivo pin out:
Scarica

interface lcd