Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
STATUS
I registri RSHIFT e TSHIFT sono degli shift register non accessibili, ma vengono utilizzati dall'interfaccia per effettuare rispettivamente la trasformazione del formato serie/parallelo in ricezione e parallelo/serie in trasmissione.
Nel registro STATUS sono contenute informazioni sull'interfaccia che possono essere utilizzate dal programma che è in esecuzione; esso è accessibile in lettura all'indirizzo pari. Il significato dei bit nel registro STATUS sono illustrati nella Tabella 24.
Si riscontra un errore di parità, quando il numero di '1' nei bit d'informazione più il bit di parità non corrisponde al tipo di parità prevista.
Il bit informazione indicato quando assume il valore 1,0 è stato copiato il carattere da DATOUT in TSHIFT ed inizia la trasmissione, questo bit si azzera quando il processore scrive un nuovo carattere in DATOUT.
1 è stato ricevuto un carattere in RSHIFT ed è stato copiato in DATIN.
questo bit si azzera quando il processore legge il dato da DATIN2 in una trasmissione sincrona il trasmettitore non ha nessun carattere da trasmettere
è stato rilevato un errore di parità
è stato rilevato un errore di overrun
è stato rilevato un errore di framing
è stato rilevato il o i caratteri di sincronismo previsti
è stato attivato il segnale di handshaking DSR
Tabella 24-Significato dei bit nel registro STATUS
Un errore di overrun si verifica quando viene ricevuto un nuovo dato in DATIN, prima che il precedente sia stato letto dal processore, oppure quando il processore inserisce il prossimo carattere in DATOUT, prima che venga completamente trasmesso il dato precedente.
Un errore di framing si riscontra quando in una trasmissione asincrona il ricevitore si aspetta di rilevare un bit di stop e, invece, rileva uno zero.
Un quadro riassuntivo sugli indirizzamenti dei vari registri è mostrato in Tabella 25.
• il registro che viene
selezionato dipende dallo stato del sistema.
Indirizzo Tipo di accesso Registro
Pari R DATIN
Pari W DATOUT
Dispari R STATUS
Dispari W * MODE, CNTRL, SYNC1 e SYNC2
Tabella 25-Indirizzamento dei registri dell'interfaccia seriale 59
Parte I - descrizione funzionale e modalità d'uso di ASIM4.9.7 Programmazione
Prima di iniziare una comunicazione, appena dopo aver resettato l'interfaccia, dobbiamo scrivere un byte all'indirizzo dispari, che ci permette di accedere al registro MODE, per determinare il tipo di comunicazione che vogliamo effettuare (sincrona o asincrona) e il formato del carattere (numero di bit d'informazione, bit di parità, tipo di parità, numero di bit di stop per comunicazione asincrona e numero di caratteri di sincronismo per comunicazione sincrona).
Se la comunicazione è sincrona, dobbiamo scrivere, sempre all'indirizzo dispari, i caratteri di sincronismo previsti in SYNC1 ed eventualmente in SYNC2.
I prossimi accessi in
scrittura all'indirizzo dispari ci permettono di accedere in CNTRL e, quindi, di abilitare il trasmettitore e/o il ricevitore, di attivare le linee di handshaking RTS e DTR, di cancellare i bit d'errore nel registro STATUS. Inoltre se l'interfaccia, in una comunicazione sincrona, è stata abilitata a ricevere, deve essere fissato a 1 il bit 7 di CNTRL per iniziare la ricerca dei caratteri di sincronismo. Se la comunicazione, invece, è asincrona, dopo aver caricato MODE, eseguendo una scrittura all'indirizzo dispari si accede direttamente a CNTRL. Essa ci permette di effettuare le stesse azioni descritte per la comunicazione sincrona tranne l'inserimento nel modo "hunt". In entrambi i casi da questo momento in poi, tutti gli accessi in scrittura all'indirizzo dispari selezionano il registro CNTRL. In ogni istante è, comunque, possibile resettare il componente ponendo a 1 il bit 6 di questo registro.
Esempi di sequenze di
tipo sincrono,• fissa il numero di bit d'informazione a 7,• disabilita la presenza del bit di parità,• fissa ad 1 il numero di bit di stop.• La seconda istruzione scrive nel registro CNTRL, essa• cancella i bit d'errore nel registro STATUS,• abilita il trasmettitore ed il ricevitore,• disattiva i segnali di handshaking DTR ed RTS.tipo sincrona,
- fissa il numero di bit d'informazione a 6,
- disabilita la presenza del bit di parità,
- fissa ad 1 il numero dei caratteri di sincronismo.
La seconda istruzione memorizza il carattere di sincronismo nel registro SYNC1, il carattere scelto è pari a 16esadecimale.
L'ultima scrittura avviene nel registro CNTRL, essa
- cancella i bit d'errore nel registro STATUS,
- abilita il trasmettitore ed il ricevitore,
- abilita la ricerca dei caratteri di sincronismo,
- attiva i segnali di handshaking DTR ed RTS.
Questo componente permette di realizzare operazioni di I/O sia in modo programmato che attraverso interruzioni.
In entrambi i casi, se desideriamo leggere i caratteri ricevuti, dobbiamo ogni volta controllare che i bit 3, 4 e 5 (questo solo per comunicazione asincrona) del registro STATUS siano pari a zero, cioè che non vi sia stato nessun errore nella trasmissione del carattere.
Nell'eseguire operazioni di I/O
in modo programmato deve essere continuamente esaminato il valore di uno dei due bit meno significativi di STATUS. In particolare, se vogliamo trasmettere un carattere, prima di inserirlo nel registro buffer DATOUT, dobbiamo verificare che il bit 0 sia pari ad 1, assicurandoci, in questo modo, che il carattere precedentemente inserito in DATOUT sia stato già trasferito in TSHIFT, evitando così un errore di overrun. Invece, quando intendiamo leggere un carattere dal registro buffer DATIN, dobbiamo verificare che il bit 1 sia pari ad 1, questo significa che il carattere ricevuto in RSHIFT è stato trasferito in DATIN. Qualora il carattere non venga letto ed un nuovo carattere viene ricevuto, esso viene trasferito in DATAIN cancellando il carattere precedente e, quindi, causando un errore di overrun. In alternativa le operazioni di I/O possono essere realizzate con l'ausilio delle interruzioni specificate nei parametri COM2 e COM3. La routine associata alla prima
interruzione deve assicurarsi di eventuali errori nella61Parte I - descrizione funzionale e modalità d'uso di ASIMricezione e quindi leggere il carattere da DATIN, mentre, quella associata all'interruzione specificata in COM3deve provvedere a scrivere in DATOUT il prossimo carattere da trasmettere.
4.9.8 Il comportamento.
In questo paragrafo verrà descritto il comportamento del dispositivo nei vari modi di funzionamento facendo implicito riferimento che le interruzioni vengono inviate al gestore delle interruzioni specificato in COM1 e che le linee di handshaking e le linee di ricezione e trasmissione dati sono collegate al device specificato in COM4.
Dato che la frequenza del segnale di clock applicato all'interfaccia seriale è almeno 30 volte inferiore a quella applicata al processore, bisogna ridurre la frequenza di clock, simulata, applicata al modulo che simula l'interfaccia seriale.
Questo può essere realizzato con le seguenti
operazioni:
- attivare il menù Device dalla finestra principale;
- scegliere il comando Speed;
- inserire un valore maggiore di uno nella finestra che appare.
Maggiore sarà il valore inserito più bassa sarà la frequenza del segnale di clock applicata all'interfaccia. Il valore inserito indica dopo quanti colpi di clock, applicati al processore, viene mandato uno all'interfaccia. Ovviamente, i colpi di clock cui faremo riferimento successivamente saranno quelli applicati all'interfaccia seriale e non al processore.
4.9.9 Trasmissione asincrona
Il trasmettitore è pronto a trasmettere solo dopo la sua abilitazione e dopo aver ricevuto i segnali DSR e CTS; tuttavia, fino a quando non viene inserito un carattere in DATOUT, sarà trasmesso il valore '1' per ogni colpo di clock.
Quando scriviamo un carattere in DATOUT, viene azzerato il bit 0 di STATUS, poi al prossimo impulso di clock:
- il valore in DATOUT viene copiato in
TSHIFT,• viene fissato ad 1 il bit 0 di STATUS,• viene inviata un'interruzione sulla linea specificata in COM3 ,• infine viene trasmesso un bit '0', detto bit di start.
Successivamente per ogni impulso di clock viene trasmesso il bit 0 di TSHIFT e contemporaneamente il contenuto di questo registro viene shiftato di una posizione verso destra. Questo comportamento continua finquando non vengono trasmessi tutti i bit d'informazione previsti in MODE. Se il carattere contiene più bit di quelli da noi previsti, allora i bit in eccesso non saranno presi in considerazione.
Il prossimo bit ad essere trasmesso, se esso è stato richiesto in MODE, è il bit di parità, con il giusto tipo di parità, altrimenti viene trasmesso un bit "1" citato come bit di stop. Se in MODE sono stati fissati due bit di stop, al prossimo colpo di clock verrà trasmesso un'altro "1" riportandoci allo stato iniziale.
Se nel
frattempo non è stato inserito un nuovo carattere in DATOUT, sarà trasmesso un "1" per ogni successivo colpo di clock. Parte I - descrizione funzionale e modalità d'uso di ASIM4.9.10 Trasmissione sincrona Dopo aver impostato la trasmissione come di tipo sincrona, dopo aver abilitato il trasmettitore e ricevuto i segnali DSR e CTS, il trasmettitore è pronto a trasmettere, ma fin quando non viene inserito un carattere in DATOUT, verrà posto ad 1 il bit 3 di STATUS e saranno trasmessi in continuazione i caratteri di sincronismo. Precisamente il prossimo impulso di clock produce le seguenti azioni: - copia del valore di SYNC1 in TSHIFT, - trasmissione del bit 0 di TSHIFT, - shift verso destra di una posizione del valore in TSHIFT. Successivamente, per ogni impulso di clock, vengono ripetute le ultime due operazioni fino alla completa trasmissione degli otto bit del primo carattere di sincronismo. Se deve essere trasmesso anche ilIl secondo carattere del testo fornito è "e".