PROGRAMMAZIONE DELL ACE

Documenti analoghi
COMUNICAZIONE SERIALE a cura dell' Ing. Buttolo Marco

Il sottosistema di I/O (Richiamo)

Bus RS-232. Ing. Gianfranco Miele April 28, 2011

Il protocollo RS Introduzione. 1.2 Lo Standard RS-232

Comunicazione. Prof. Antonino Mazzeo. Corso di Laurea Specialistica in Ingegneria Informatica

per(il(corso(di(architetture(dei(sistemi(di(elaborazione(

Lab. Sistemi - Classe 5Bn A. S. 2000/2001 ITIS Primo Levi - Torino AA.AA. STANDARD SERIALE DI COMUNICAZIONE: RS232 Lo standard seriale di

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino. Gruppo H: Sistemi Elettronici Lezione n H - 5: Collegamenti seriali Conclusione

Interfacciamento di periferiche I/O al μp 8088

L interfaccia più comune fra il computer (DTE) ed il modem (DCE) è la RS232,

Manuale d uso e manutenzione

Esercizi svolti e da svolgere sugli argomenti trattati nella lezione 25

I BUS DI COMUNICAZIONE SERIALI

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

I BUS DI COMUNICAZIONE SERIALI

Componenti principali

Componenti e connessioni. Capitolo 3

EEPROM SERIALI IN I2C BUS.

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

ISOLATORE FOTOELETTRICO DI INTERFACCIA SERIALE RS-232

Manuale di installazione del software di Controllo DTMRX-Controller Ver.1.0.0

USART PIC 16F876. R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0 CSRC TX9 TXEN SYNC _ BRGH TRMT TX9D Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

OPEN DRIVE OPEN DRIVE

Interfaccia seriale per LM709SW

ISA Input / Output (I/O) Data register Controller

Sch ed e Ser ie RD7 7

Progetto e realizzazione di un sistema che rileva la temperatura a distanza

UNITA PERIFERICA DI TIPO PARALLELO - PIA MC 6821

Istruzioni per il trasferimento di dati dal fotometro Lovibond PoolDirect / MultiDirect SpectroDirect / PCSPECTRO II

Per sistema di acquisizione dati, si deve intendere qualsiasi sistema in grado di rilevare e memorizzare grandezze analogiche e/o digitali.

Interfaccia RS 232 Tipo: x-101

Gateway KNX/DALI 64/16 - da guida DIN GW Manuale Tecnico

La gestione delle porte seriali. OMRON Electronics SpA

Input/Output (Cap. 7, Stallings)

Istruzioni per l uso DPS16 Ver.1.0.0

Architettura hardware

GUIDA ALLE CONNESSIONI SERIALI PER IBM PC & COMPUTERS MACINTOSH

Fondamenti sugli standard di interfaccia RS-232 e IEEE-488

Gestione della memoria

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Schede di comunicazione per il controllore di processo PRV2...

Mod Sch. 1362/624 FOGLIO AGGIUNTIVO MANUALE D INSTALLAZIONE E D USO DEL CENTRALINO TELEFONICO PABX AGORA 6 DS LBT 8579

EFA Automazione S.r.l. Serial Bridge 3 - Modbus RTU slave to PICnet (01 ITA).doc pag. 1 / 8

Controllo dell irrigazione senza fili

PLC Sistemi a Logica Programmabile Il linguaggio AWL istruzioni di base

Progetto 3: Termometro con convertitore A/D

Controllo MSComm (comunicazioni)

Registri. Registri semplici

Real Time Clock, in I2C BUS, Provvisto di RAM.

Caratteristiche di un PC

PXG80-W. Siemens Building Technologies Building Automation. DESIGO PX Controllore Web. con porta modem

Manuale tecnico. Attuatore comando motore 1 canale 8A Easy GW GW GW 14767

INTERFACCIA SERIALE RS232PC

Rev 3.0. S I N A P S I S. r. l. V i a d e l l e q u e r c e 1 1 / 1 3

La macchina di Von Neumann

Guida alla gestione delle domande per l A.S di Dote Scuola componente Merito

Topward electronics TPS ALTERA Max EPM7128SLC84-15

OPEN DRIVE OPEN DRIVE

Gateway MODBUS per pannelli ITALSOUND

HyperTerminal e Serie IDP TR

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

Le sintonie elettroniche per l ATV

senza stato una ed una sola

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

-EPS-PROG/X- Z B ON SW

Capitolo. Interfacciamento di periferiche I/O con il PC. 1.1 Il BUS di espansione del PC

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S Il Bus I 2 C.

Interfaccia Seriale RS232-C. prof. Cleto Azzani IPSIA Moretto Brescia

22/09/2010. Rossato Alessio

Page 1. ElapC8 04/11/ DDC 1 ELETTRONICA APPLICATA E MISURE. C8: Esempi di collegamenti seriali. Ingegneria dell Informazione

Ricevitore Supervisionato RX-24

Tecniche di Comunicazione Digitale

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Di seguito è riportata una breve descrizione del funzionamento della bollatrice Meridiana, basata sulla scheda MDA_WS_V4..

Transcript:

PROGRAMMAZIONE DELL ACE L esposizione degli argomenti seguenti è finalizzata alla programmazione dell ACE per realizzare programmi di trasmissione seriale tra due PC, (o tra microcontrollore e PC) operando con programmi in ambiente DOS, scritti con linguaggi ad alto livello (C, Pascal, Basic) o direttamente in linguaggio assembly. La programmazione dell ACE permette di controllare direttamente i segnali presenti sulle porte seriali, dando la possibilità di implementare protocolli di trasmissione di vario tipo. 1.1 L ACE Nei PC sono sempre presenti una o più porte seriali RS-232/C. L implementazione di ognuna di queste interfacce seriali è normalmente ottenuta con un ACE e con degli integrati traslatori di livello che trasformano i segnali da TTL a RS-232/C e viceversa. Nei nuovi PC le funzioni seriali sono integrate nel chipset e svolgono le stesse attività dell ACE 16550. Ogni ACE è interfacciata direttamente con il BUS del PC ed è vista dal sistema come una periferica con indirizzi predefiniti. Quando l ACE ha funzioni di trasmettitore, svolge il compito di ricevere un carattere proveniente dalla CPU, in formato parallelo, memorizzarlo, trasformarlo in formato seriale, inviando poi un bit alla volta sulla linea TxD (dopo opportuna traslazione di livello TTL RS-232/C). Invece, se svolge funzioni di ricevitore, deve memorizzare il dato seriale posto sulla linea RxD (dopo opportuna traslazione di livello RS-232/C TTL), trasformarlo in carattere parallelo ed inviarlo poi alla CPU. Per effettuare la trasformazione dei dati da parallelo a seriale e viceversa e per poter trasmettere o ricevere correttamente un dato, all ACE debbono essere fornite preventivamente le informazioni relative al formato dei caratteri, alla velocità di trasmissione ed all eventuale controllo di, ovvero: velocità di trasmissione dei dati; numero dei bit di cui è composto il carattere; numero dei bit di stop da aggiungere; abilitazione o meno del controllo di ; pari o dispari nel caso che il controllo di risulti abilitato. Altro compito dell ACE è quello di verificare lo stato delle linee di ingresso provenienti dal modem (o da un altra porta COMn) o di porre ad un determinato livello le linee di uscita che vanno al modem (o ad un altra porta COMn). Per compiere tutte queste operazioni l ACE riceve dalla CPU, che naturalmente opera sotto il controllo di opportuno software, appropriati codici di controllo. 1.2 I registri dell ACE All interno dell ACE sono presenti una serie di registri, preposti a diverse funzioni, il cui uso è brevemente descritto nella tabella 4.4 (sono omessi alcuni registri non utilizzati nelle applicazioni). Tab. 1.1 Registro Nome Funzione Svolta Receiver Shift Register RSR Registro a scorrimento che riceve un carattere seriale dalla linea RxD e provvede a trasformarlo in dato parallelo. Receiver Buffer Register RBR Nel registro viene memorizzato il carattere parallelo, dopo la trasformazione da seriale, in attesa che la CPU lo legga. Trasmitter Holding Register THR Nel registro viene memorizzato il dato parallelo che proviene dalla CPU in attesa di essere trasformato in carattere seriale da trasmettere. Trasmitter Shift Register TSR È il registro che trasforma il dato parallelo presente nel THR in carattere seriale e lo invia poi, un bit alla volta, sulla linea TxD. Line Control Register LCR Nel registro viene memorizzato il formato dei caratteri seriali (lunghezza del carattere, numero dei bit di stop, abilitazione

della, pari o dispari, accesso al DLAB) Line Status Register LSR I singoli bit del registro forniscono informazioni relative allo stato di altri registri (RBR, THR, TSR) o condizioni di errore. Modem Control Register MCR È il registro che predispone a livello alto o basso le linee di controllo che escono dall ACE ( RTS, DTR ) dirette al modem. Modem Status Register MSR Il registro controlla lo stato delle linee che provengono dal Divisor Latch (MS) Divisor Latch (LS) modem ed entrano nell ACE ( CTS, DSR, DCD, RI ). DLM Registro che contiene la parte alta del divisore che stabilisce la velocità di trasmissione dei dati. DLL Registro che contiene la parte bassa del divisore che stabilisce la velocità di trasmissione dei dati. In relazione al modo di operare dell ACE si può dire che: In trasmissione: un dato parallelo proveniente dal bus dati del PC, viene posto nel registro THR (Trasmitter Holding Register) e poi trasferito nel TSR (Trasmitter Shift Register) ove, trasformato in carattere seriale, viene inviato sulla linea TxD. In ricezione: un dato seriale, che arriva sulla linea RxD, viene posto nel registro RSR (Receiver Shift Register) che provvede a trasformarlo in dato parallelo memorizzandolo poi nel RBR (Receiver Buffer Register). Da qui è inviato al PC attraverso le linee del bus dati. Nel PC è sempre presente almeno una porta di comunicazione seriale denominata COM1. Altre porte eventualmente aggiunte prendono il nome di COM2, COM3 e COM4. Ogni porta seriale nello spazio indirizzabile di I/O occupa una serie di 8 indirizzi contigui e predeterminati. Questi otto indirizzi sono poi diversi per ognuna delle COMn installate. Con ognuno degli otto indirizzi è possibile accedere ad uno o più dei vari registri interni del dispositivo. Nella tabella 4.5 è riportato il campo d indirizzamento relativo alla COM1 e alla COM2, evidenziando anche il registro a cui si può accedere con un determinato indirizzo. Il DLAB che compare nella tabella è il bit più significativo del Line Control Register. Osservando la tabella 4.5 si vede che lo stato del bit DLAB determina l accesso, con lo stesso indirizzo, a registri diversi. Tab. 1.2 Registro I/O DLAB COM1 COM2 Receiver Buffer Register RBR lettura 0 3F8h 2F8h Trasmitter Holding Register THR scrittura 0 3F8h 2F8h Divisor Latch (LS) DLL scrittura 1 3F8h 2F8h Divisor Latch (MS) DLM scrittura 1 3F9h 2F9h Line Control Register LCR scrittura X 3FBh 2FBh Modem Control Register MCR scrittura X 3FCh 2FCh Line Status Register LSR lettura X 3FDh 2FDh Modem Status Register MSR lettura X 3FEh 2FEh 1.3 Programmazione dell ACE. Perché l ACE possa svolgere coerentemente il compito di trasferimento dati seriali tra DTE e DCE o direttamente tra due terminali (null-modem), deve essere opportunamente controllata per mezzo di un programma. Per programmare l ACE si debbono effettuare delle operazioni di lettura o scrittura sui registri interni dell unità, portando a livello basso o alto determinati bit di alcuni dei registri con operazioni di scrittura su periferica, o rilevando lo stato di particolari bit su altri registri, con operazioni di lettura. È necessario pertanto per procedere alla programmazione del dispositivo conoscere il significato che hanno i singoli bit dei registri interessati alle operazioni di lettura o scrittura. Questa corrispondenza è riportata, in modo sintetico, nella tabella 4.6 (tenere presente la tabella 4.4 per ricordare le funzioni svolte dai singoli registri).

Tab. 1.3 Funzioni dei singoli bit dei registri Registri Bit del registro D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 LCR DLAB Set Break Test. Tipo abilit. n bit di stop lung. carat. lung. carat. LSR - trasm. vuoto THR vuoto Break inter. Errore strut. Errore Errore sovras. dato pronto MCR 0 0 0 0 - - RTS DTR MSR DCD RI DSR CTS - - - - RBR dato ricevuto THR dato da trasmettere DLM parte alta del divisore DLL parte bassa del divisore nota: se nel Modem Control Register il bit D 4 = 1, l ACE è in loop, ovvero sono disattivate le funzione delle linee di uscita e d ingresso e, internamente al dispositivo, l uscita del Trasmitter Shift Register è connessa con l ingresso del Receiver Buffer Register; Poiché il numero d indirizzi riservato ad una COMn sono solamente otto ed i registri da indirizzare più di otto (nella tabella 4.5 sono descritti solamente otto registri) l accesso ai singoli registri, effettuato attraverso operazione di lettura o scrittura su periferica, è reso possibile con la tecnica del DLAB (Divisor Latch Access Bit). Il DLAB è il bit più significativo (D 7 ) del Line Control Register. Predisponendo preventivamente a livello basso o alto il bit D 7 a seconda dello stato che esso ha, si può accedere a gruppi di registri differenti con le stesso indirizzo (vedere tabella 4.5). Per indirizzare i registri in cui si ha DLAB = X, non ha alcun rilievo lo stato in cui tale bit si trova. Per avere accesso invece a registri con prefissato DLAB (0 o 1), come prima cosa si deve indirizzare il Line Control Register e porre al richiesto livello il bit D 7. Nelle tabelle seguenti sono elencati i registri che saranno utilizzati nelle applicazioni successive. Line Control Register (LCR) È il registro che programma l ACE. Tab. 1.4 LCR Line Control Register 1 DLAB Si accede al Divisor Latch DLM e DLL D 7 0 DLAB Si accede al RBR (IN) o al THR (OUT) 1 Parità pari D 4 0 Parità dispari 1 Parità abilitata D 3 0 Parità disabilitata 0 1 bit di stop D 2 1 2 bit di stop (1 ½ con caratteri di 5 bit) D 1 1 1 0 0 D 0 1 0 1 0 carattere di 5 bit carattere di 6 bit carattere di 7 bit carattere di 8 bit Note: - D 6 e D 5 vanno posti a 0. - Il bit D 3 di LCR permette di inserire il controllo di e solo se questo controllo è attivato con il bit D 4 si sceglie il tipo di desiderata, altrimenti il livello del bit D 4 è indifferente. - Con D 1 e D 0 si sceglie il numero di bit che deve avere il carattere.

Nella programmazione dell ACE il primo registro indirizzato è proprio il Line Control Register (LCR) che permette di programmare le modalità base della trasmissione e di scegliere l opportuno DLAB per accedere poi agli altri registri. È necessario con un primo indirizzamento del Line Control Register programmare tutte le modalità di trasmissione (lunghezza carattere,, numero bit di stop) e porre DLAB = 1, in modo da poter poi accedere ai registri Divisor Latch e fissare anche la velocità di trasmissione. Si effettua poi, dopo aver impostata la velocità di trasmissione con il Divisor Latch, un secondo accesso al registro mantenendo inalterati tutti i bit con i livelli precedentemente impostati, variando solo D 7 (DLAB), ponendolo a 0, in modo da poter accedere agli altri registri. I registri Divisor Latch, parte più significativa (MS) e parte meno significativa (LS), sono due registri nei quali il programmatore deve memorizzare due byte che rappresentano i divisori del clock per ottenere la desiderata velocità di trasmissione. I valori dei divisori vanno calcolati con le relazioni [1.1] con la frequenza del clock usato nel PC uguale a 1,8432 MHz e con la [1.2] per la frequenza 3,072 Mhz. Le più comuni velocità di trasmissione (baud rate) sono 300. 600, 1200, 1800, 2400, 3600, 4800, 9600, 19200 bit/s. nella tabella 4.8 sono elencati i baude rate per la frequenza di 1,8432 MHz e i valori da porre nei registri del Divisor Latch (MS e LS). N = 115200 / baud rate [1.1] N = 192000 / baud rate [1.2] Tab 1.5 Baud Rate Divisore N [bit/sec] Decim. Esadec. MS LS 300 384 180h 01h 80h 600 192 C0h 00h C0h 1200 96 60h 00h 60h 1800 64 40h 00h 40h 2400 48 30h 00h 30h 3600 32 20h 00h 20h 4800 24 18h 00h 18h 9600 12 0Ch 00h 0Ch 19200 6 06h 00h 06h ESEMPIO 2 Si trovino i coefficienti e gli indirizzi per programmare l ACE in modo da effettuare una trasmissione e ricezione seriale sulla COM1, secondo i seguenti parametri: lunghezza del carattere di 8 bit controllo di incluso controllo di dispari 2 bit di stop baud rate 1200 Come prima cosa si deve indirizzare il Line Control Register (LCR) effettuando su di esso un operazione di OUT inviando al registro un opportuno byte i cui bit sono posti ad un prestabilito livello rispettando le indicazioni della tabella 4.7. Si avrà pertanto: D 7 = 1 DLAB = 1 per accedere successivamente al Divisor Latch D 6 = 0 D 5 = 0 D 4 = 0 dispari D 3 = 1 controllo di incluso D 2 = 1 2 bit di stop D 1 = 1 carattere con 8 bit D 0 = 1

Pertanto il byte di controllo sarà in binario 1 0 0 0 1 1 1 1 e in esadecimale 8Fh. Per inviare il byte al Line Control Register si dovrà effettuare (usando un appropriato linguaggio di programmazione) una operazione di uscita su periferica con l indirizzo del LCR ricavato dalla tabella 4.5 (3FBh). Per programmare poi la velocità di trasmissione debbono essere indirizzati i registri del Divisor Latch inviando ad essi con due operazioni di uscita su periferica i byte dei divisori da prelevare dalla tabella 4.8 in corrispondenza al baud rate 1200, ovvero 00h per la parte più significativa (indirizzo 3F9h) e 60h per quella meno significativa (indirizzo 3F8h). Si ricordi che il DLAB è stato posto precedentemente a livello alto con il precedente accesso al Line Control Register (LCR). Effettuata la programmazione completa dell ACE con tutti i parametri del carattere necessari sia per la trasmissione che per la ricezione, il Line Control Register e i registri del Divisor Latch debbono rimanere inalterati e pertanto non debbono essere più indirizzati per tutta la durata del trasferimento dei dati. Si deve predisporre quindi il DLAB = 0 per poter accedere successivamente ai registri THR e RBR. Questa operazione deve essere compiuta indirizzando di nuovo il Line Control Register, fornendo ad esso un byte di controllo con tutti i bit posti allo stesso stato della precedente programmazione, tranne il DLAB. Il nuovo byte di controllo sarà in binario 0 0 0 0 1 1 1 1 e in esadecimale 0Fh che verrà inviato all indirizzo del LCR (3FBh). Line Status Register (LSR) È il registro che permette di conoscere se è disponibile un carattere ricevuto o se è possibile scrivere un carattere sul Trasmitter Holding Register perché sia trasmesso. Per leggere il Line Status Register non è rilevante lo stato di DLAB. Particolare importanza assume in trasmissione la conoscenza del livello del bit D 5 di questo registro. Questo livello indica se nel registro THR è presente o meno un carattere da trasmettere; in ricezione invece è rilevante il bit D 0 che indica se nel registro RBR è memorizzato un carattere ricevuto. Tab. 1.6 Line Status Register D 5 1 0 D 0 1 0 THR è vuoto THR contiene un carattere un carattere è presente nel RBR (dato ricevuto pronto) il RBR è vuoto (non è disponibile un dato in ricezione) Modem Status Register (MSR) Per mezzo della lettura del Modem Status Register (DLAB = X) è possibile conoscere lo stato delle linee in ingresso all ACE: DCD (D 7 ), RI (D 6 ), DSR (D 5 ), CTS (D 4 ). Si tenga presente che lo stato dei bit D 7, D 6, D 5, D 4 è il negato del livello in cui si trova la linea corrispondente. Tab. 1.7 Modem Status Register 1 linea in ingresso DSR a livello basso DSR D 5 0 linea in ingresso DSR a livello alto 1 linea in ingresso CTS a livello basso CTS D 4 0 linea in ingresso CTS a livello alto Modem Control Register (MCR) Con un operazione di scrittura sul Modem Control Register (DLAB = X), possono essere poste a livello predeterminato, per mezzo dei bit D 1 e D 0 le linee di controllo in uscita dall ACE. Tab. 1.8 Modem Control Register 1 linea in uscita RTS a livello basso RTS D 1 0 linea in uscita RTS a livello alto 1 linea in uscita DTR a livello basso DTR D 0 0 linea in uscita DTR a livello alto

ESEMPIO 3 Si tracci il diagramma di flusso relativo al protocollo di trasmissione dell esempio 1 per il ricevitore. Il protocollo è riportato di seguito. RX 1. Quando RX è pronto a ricevere dati attiva il segnale RTS (richiesta a trasmettere); RX out su MCR con D1 = 1 lettura di LSR ABBASSA RTS 2. RX rimane in attesa che il TX trasmetta un carattere; 3. appena RX riceve il carattere disattiva la linea RTS ; 4. il carattere ricevuto viene salvato in memoria; 5. RX attiva nuovamente il segnale. D0 = 0 F out su MCR con D1 = 0 lettura di RBR V ALZA RTS LEGGE CARATTERE RICEVUTO Si debbono svolgere le seguenti operazioni: 1. Attivare RTS portando alto il bit D 1 del registro MCR (indirizzo 3FCh). 2. Attendere che il bit D 0 del registro LSR (indirizzo 3FDh) diventi alto (carattere presente nel registro RBR). 3. Disattivare RTS portando basso il bit D 1 del registro MCR (indirizzo 3FCh). 4. Leggere il registro RBR (indirizzo 3F8h) con un operazione di input. 5. Attivare RTS portando alto il bit D 1 del registro MCR (indirizzo 3FCh).