Gestione di una UART SOFTWARE.

Transcript

Gestione di una UART SOFTWARE.
Corso di BASCOM AVR - ( 3 1 )
Corso Teorico/Pratico di programmazione in BASCOM AVR.
Autore: DAMINO Salvatore.
Gestione di una UART SOFTWARE.
Capita, a volte in alcune applicazioni, di avere bisogno di più linee seriali di quanto
il microcontrollore scelto non ne abbia a disponibili. Cosa fare per risolvere, in
modo semplice ed efficiente, il problema? I più esperti penseranno semplicemente
di scrivere una procedura, a basso livello, per implementare una opportuna linea di
comunicazione Software. La soluzione è perfetta ma, se non si ha la padronanza
dell'Assembler, è possibile utilizzare una interessante caratteristica del BASCOM
che consente di creare delle linee di comunicazioni seriali con delle apposite
Istruzioni di questo potente Compilatore.
Driver RS232 della Maxim tipo MAX202.
183
Le istruzioni che il BASCOM mette a disposizione, per gestire una comunicazione
seriale, sono del tipo Sospensivo. Questo significa che una volta lanciata
l'istruzione che esegue la ricezione dalla linea seriale questa rimane in attesa
finche non arriva un carattere.
Questo modo di operare, che viene proposto nell'Esempio.053, può andare bene
per realizzare un piccolo esempio esplicativo ma, di certo, non in un utilizzo reale.
Infatti se adoperassi questo sistema per realizzare un colloquo operatore l'utente,
durante l'uso, si troverebbe con il programma bloccato dall'attesa di ogni
carattere da ricevere.
Per superare agevolmente questa grave limitazione è necessario fare ricorso alle
possibilità offerte dall' INTERRUPT.
Interfaccia MSI 01 nella versione Multi Standard con driver RS 2 3 2 .
Usando come linea di ricezione un segnale in grado di generare Interrupt ed
apposite procedure di gestione è possibile ottenere un funzionamento
estremamente fluido della comunicazione seriale. L'unica reale limitazione, che
può essere imputata alla realizzazione di questa UART Software, è il massimo
Baud Rate utilizzabile che, comunque, risulta estremamente accettabile e
l'impossibilità di ricevere e trasmettere caratteri contemporaneamente.
184
Esempio.053. Generazione e Gestione, in BASCOM AVR, di una
UART Software con Driver Seriali in RS 232.
Gestione
Sospensiva della Comunicazione.
Definizioni aggiunte:
Nessuna
Dichiarazioni aggiunte:
Nessuna
Istruzioni aggiunte:
OPEN ; PUT ; GET ; CLOSE.
Operatori aggiunti:
Nessuno
Programma di Esempio.053 del corso BASCOM AVR.
Programma di gestione di una linea Seriale Asincrona aggiuntiva.
Il Mini Modulo GMM AM08 dispone di una sola linea seriale Hardware (hw),
collegata alla periferica UART, e questo programma ne aggiunge una seconda di
natura Software (sw), collegata a due linee di I/O. La gestione della seriale sw è
effettuata tramite le istruzioni ad alto livello del BASCOM che sono Sospensive,
ovvero interrompono l'esecuzione del programma durante la trasmissione e la
ricezione di caratteri.
Paragonando una seriale sw con una hw emergono numerose differenze.
La prima differenza che emerge è legata alla massima velocità di comunicazione
(Baud Rate) a cui si riesce ad operare. La seconda è il carico di lavoro del
Microcontrollore che per una seriale sw è notevolmente superiore.
Una terza differenza è l'impossibilità per il Microcontrollore di Ricevere e
Trasmettere contemporaneamente sulla linea seriale.
Il programma prevede le seguenti operazioni sulla seriale sw:
- Comunica con un protocollo fisico di 4.800 Baud, 8 Bit x chr, 1 Stop bit,
Nessuna Parità.
- Riceve caratteri in modo Sospensivo e li visualizza su console.
- Trasmette i caratteri premuti sulla console.
185
Dal punto di vista elettrico la seriale sw del Mini Modulo è a livello TTL e
normalmente deve essere Bufferata per comunicare, ad una certa distanza, con
altri dispositivi seriali esterni.
Interfaccia Seriale Software in RS 2 3 2 .
Lo schema rappresentato in figura illustra una tipica interfaccia in RS 2 3 2
realizzato con un classico MAX202.
Questo tipo di interfaccia consente di comunicare fino a 33 m (100 Feet o
Piedi).
E' possibile prototipare rapidamente questa interfaccia realizzandola
comodamente su una basetta Millefori.
Per chi non vuole impegnarsi nella realizzazione rendiamo noto che può adoperare
una comoda scheda di interfacciamenti già disponibile e chiamata MSI 0 1. Essa è
disponibile con vari tipi di interfacce e trasforma una linea seriale TTL in RS 2 3 2,
RS 4 2 2, RS 4 8 5 o Current Loop.
L'utente è in grado di comunicare con la seriale sw tramite la console dotata di
monitor e tastiera, collegata alla seriale hw, con un protocollo fisico costante a
19.200 Baud, 8 Bit x chr, 1 Stop bit, Nessuna Parità.
Questa console può coincidere con un sistema in grado di gestire una
comunicazione seriale in RS 2 3 2.
186
Al fine di semplificarne l'uso si può usare un PC dotato di una linea COMx, che
esegue un programma di emulazione terminale come HYPERTERMINAL o
l'omonima modalità offerta dal BASCOM AVR (vedere Configurazioni IDE) .
Il programma funziona solo se la GMM AM08 è montata sullo zoccolo Z2 della
GMM TST3!!
Schedina di Interfaccia MSI 01 nella versione RS 2 3 2 .
187
Esempio.054. Generazione e Gestione, in BASCOM AVR, di una
UART Software con Driver Seriali in RS 232.
Gestione Non
Sospensiva della Comunicazione.
Definizioni aggiunte:
Nessuna
Dichiarazioni aggiunte:
Nessuna
Istruzioni aggiunte:
ON INT1 ; CONFIG INT1 ; ENABLE INT1.
Operatori aggiunti:
Nessuno
Programma di Esempio.054 del corso BASCOM AVR.
Programma di gestione di una linea Seriale Asincrona aggiuntiva, in Interrupt.
Il Mini Modulo GMM AM08 dispone di una sola linea seriale hw, collegata alla
periferica UART, e questo programma ne aggiunge una seconda sw, collegata a
due linee di I/O. La gestione della seriale sw è effettuata tramite le istruzioni ad
alto livello del BASCOM, associate ad un Interrupt, in modo da non risultare
Sospensive, ovvero non interrompono l'esecuzione del programma durante la
Trasmissione e la Ricezione di caratteri.
Paragonando una seriale sw con una hw emergono numerose differenze.
La prima differenza che emerge è legata alla massima velocità di comunicazione
(Baud Rate) a cui si riesce ad operare. La seconda è il carico di lavoro del
Microcontrollore che per una seriale sw è notevolmente superiore.
Una terza differenza è l'impossibilità per il Microcontrollore di Ricevere e
Trasmettere contemporaneamente sulla linea seriale.
Il programma prevede le seguenti operazioni sulla seriale sw:
- Comunica con un protocollo fisico di 4.800 Baud, 8 Bit x chr, 1 Stop bit,
Nessuna Parità.
- Ogni carattere ricevuto viene riconosciuto da un Interrupt, ricevuto e salvato in
un Buffer di ricezione Circolare.
- I caratteri ricevuti in modo Non Sospensivo vengono visualizzati su console.
- Trasmette i caratteri premuti sulla console.
188
Dal punto di vista elettrico la seriale sw del Mini Modulo è a livello TTL e
normalmente deve essere Bufferata per comunicare, ad una certa distanza, con
altri dispositivi seriali esterni.
Interfaccia Seriale Software in RS 2 3 2 .
Lo schema rappresentato in figura illustra una tipica interfaccia in RS 2 3 2
realizzato con un classico MAX202.
Questo tipo di interfaccia consente di comunicare fino a 33 m (100 Feet o
Piedi).
E' possibile prototipare rapidamente questa interfaccia realizzandola
comodamente su una basetta Millefori.
L'utente è in grado di comunicare con la seriale sw tramite la console dotata di
monitor e tastiera, collegata alla seriale hw, con un protocollo fisico costante a
19.200 Baud, 8 Bit x chr, 1 Stop bit, Nessuna Parità.
Questa console può coincidere con un sistema in grado di gestire una
comunicazione seriale in RS 2 3 2. Al fine di semplificarne l'uso si può usare un PC
dotato di una linea COMx, che esegue un programma di emulazione terminale
come HYPERTERMINAL o l'omonima modalità offerta dal BASCOM AVR (vedere
Configurazioni IDE) .
Il programma funziona solo se la GMM AM08 è montata sullo zoccolo Z2 della
GMM TST3!!
189
Esempio.055. Gestione, in BASCOM AVR, di una UART
Software con Driver Seriali in RS 232. Collegamento Completo
di un Display QTP 0 3.
Definizioni aggiunte:
$SERIALINPUT ; $SERIALOUTPUT.
Dichiarazioni aggiunte:
Nessuna
Istruzioni aggiunte:
PUSHALL ; POPALL.
Operatori aggiunti:
Nessuno
Programma di Esempio.055 del corso BASCOM AVR.
Programma di gestione di un Pannello Operatore QTP 0 3 tramite Linea
Seriale Asincrona aggiuntiva, in Interrupt.
Quick Terminal Panel tipo QTP 03 in RS 2 3 2 .
190
Il programma comunica con la QTP 0 3 con un protocollo fisico di 4.800 Baud, 8
Bit x chr, 1 Stop bit, Nessuna Parità impostato sulla Linea Seriale sw.
Al fine di semplificare il programma, la seriale sw è gestita tramite le Istruzioni ad
Alto Livello del BASCOM dedicate alla Console; quest'ultime vengono
Ridirezionate sulla seriale sw al posto della seriale hw, tramite un apposito
selettore definito nel Sorgente.
Dal punto di vista elettrico la linea seriale della QTP 0 3 può essere utilizzata sia in
RS 2 3 2 che a livello TTL e può quindi essere collegata al Mini Modulo sia con un
driver, come ad esempio l'interfaccia MSI 0 1, che direttamente.
Le funzionalità del programma riguardano solo un piccolo sottoinsieme di quelle
offerte dalla QTP 0 3. Esse sono selezionabili, da operatore tramite un apposito
menù, direttamente sulla console dotata di monitor e tastiera collegata alla seriale
hw.
Il protocollo fisico di comunicazione da adoperare è fissato stabilmente a 19.200
Baud, 8 Bit x chr, 1 Stop bit, Nessuna Parità.
Questa Console può coincidere con un sistema in grado di gestire una
comunicazione seriale in RS 2 3 2.
Al fine di semplificarne l'uso si può usare un PC dotato di una linea COMx, che
esegue un programma di Emulazione Terminale come HYPERTERMINAL o
l'omonima modalità offerta dal BASCOM AVR (vedere Configurazioni IDE) .
Il programma funziona solo se la GMM AM08 è montata sullo zoccolo Z2 della
GMM TST3!!
191