La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Interfacciamento con mouse seriali. 2 Mouse per P.C. Si sono affermati diversi standard per mouse collegabili a Personal Computer, tra di loro incompatibili.

Presentazioni simili


Presentazione sul tema: "1 Interfacciamento con mouse seriali. 2 Mouse per P.C. Si sono affermati diversi standard per mouse collegabili a Personal Computer, tra di loro incompatibili."— Transcript della presentazione:

1 1 Interfacciamento con mouse seriali

2 2 Mouse per P.C. Si sono affermati diversi standard per mouse collegabili a Personal Computer, tra di loro incompatibili dal punto di vista HW: mouse seriale standard Microsoft a 2 tasti, collegato allinterfaccia seriale mouse seriale standard Genius (o Logitech, o PC-mouse) a 3 tasti, collegato allinterfaccia seriale mouse standard PS/2 a 2 tasti, con apposito connettore veicolato verso linterfaccia della tastiera mouse Microsoft a 3 tasti, estensione dello standard Microsoft a 2 tasti.

3 3 Lo standard mouse Microsoft Mouse UART 8250 o driver del mouse sistema operativo programmi applicativi interrupt linea seriale API

4 4 Protocollo seriale dello standard MS Il mouse contiene un trasmettitore seriale non programmabile. Esso trasmette informazioni ogniqualvolta: viene premuto o rilasciato un tasto viene spostato il mouse. Ogni volta che il mouse deve trasmettere informazioni, spedisce un pacchetto di dati contenente: lo stato attuale dei pulsanti lo spostamento relativo rispetto allultimo pacchetto di dati inviato.

5 5 Trasmissione seriale Il mouse trasmette secondo i seguenti parametri: 1200 baud 8 bit per carattere 1 bit di stop nessuna parità Il mouse può essere collegato ad una delle 4 interfacce seriali del P.C., da COM1 a COM4. Ciascuna interfaccia corrisponde ad un componente NS16550 (estensione del NS8250) che risponde a specifici indirizzi di I/O.

6 6 Formato del pacchetto dati Il pacchetto dati trasmesso dal mouse è costituito da 3 caratteri di 8 bit ciascuno. Essi vengono trasmessi in sequenza, e devono essere letti singolarmente dallinterfaccia seriale. 11LRY7Y6X7X6 10X5X4X3X2X1X0 10Y5Y4Y3Y2Y1Y0 primo byte secondo byte terzo byte

7 7 Pacchetto dati: la trama i bit 7 e 6 indicano la trama del pacchetto: –nel primo byte valgono 11 –nel secondo e terzo byte valgono 10 per leggere dati significativi, occorre: –sincronizzarsi con il trasmettitore, aspettando il primo byte con indicatore di trama 11 –attendere i successivi due caratteri, verificando che abbiano indicatore pari a 10 in caso di errore occorre scartare quanto ricevuto e aspettare il prossimo pacchetto. 11 LRY7Y6X7X6 10 X5X4X3X2X1X0 10 Y5Y4Y3Y2Y1Y0

8 8 Pacchetto dati: i tasti i bit 5 e 4 del primo byte contengono lo stato dei due tasti del mouse: –il bit 5 L è relativo al tasto sinistro –il bit 4 R è relativo al tasto destro –ciascun bit vale 1 se il tasto è premuto, 0 se non è premuto il valore del bit indica lo stato attuale del tasto: per rilevare una variazione (pressione o rilascio), il software dovrà fare dei confronti con lo stato precedente. 11 LR Y7Y6X7X6 10X5X4X3X2X1X0 10Y5Y4Y3Y2Y1Y0

9 9 Pacchetto dati: lo spostamento i bit da 3 a 0 del primo byte, insieme ai bit da 5 a 0 del secondo e del terzo byte, contengono lo spostamento del mouse rispetto allultimo pacchetto trasmesso gli spostamenti sono espressi in complemento a 2 su 8 bit spostamento orizzontale (positivo verso destra): bit 3 e 2 del primo byte e bit da 5 a 0 del secondo byte spostamento verticale (positivo verso il basso): bit 1 e 0 del primo byte e bit da 5 a 0 del terzo byte 11LR Y7Y6X7X6 10 X5X4X3X2X1X0 10 Y5Y4Y3Y2Y1Y0

10 10 Estensione: mouse a 3 tasti Esistono in commercio dei mouse a 3 tasti che seguono il protocollo Microsoft. Il tal caso il tasto centrale viene trasmesso come L=R=1, ossia come se fossero premuti contemporaneamente i due tasti sinistro e destro. Molti di questi mouse sono dotati di un interruttore per selezionare il protocollo di funzionamento (MS=Microsoft / PC=Genius).

11 11 Coordinate relative ed assolute Il mouse trasmette esclusivamente coordinate relative. La traduzione in coordinate assolute (posizione sullo schermo) è totalmente a carico del software. Conviene disporre di due variabili globali, MouseX e MouseY, che indicano la posizione attuale del mouse. Nellaggiornamento di tali variabili occorre limitarne i valori allarea rappresentabile sullo schermo. La posizione del cursore sullo schermo si otterrà moltiplicando MouseX e MouseY per opportune costanti.

12 12 Gestione dei tasti Al fine di rilevare la pressione ed il rilascio dei tasti, è necessario disporre di due variabili globali nelle quali memorizzare lo stato dei tasti. Esempio: ButtonL, ButtonR. Dal confronto dei dati ricevuti dal mouse con i valori contenuti nelle variabili ButtonL e ButtonR, è possibile determinare se è appena stato premuto o rilasciato un tasto, ed agire di conseguenza.

13 13 Ricezione dei dati dal mouse Inizializzazione interfaccia seriale Ricezione di un pacchetto dati Aggiornamento variabili Disegno del cursore su video

14 14 Inizializzazione È necessario inizializzare linterfaccia seriale con i parametri opportuni, programmando i registri: Divisor Latch Low e High (Baud Rate) LCR (data format) FIFO C.R. (per disattivare la FIFO), solo IER (per disabilitare linterrupt) MCR (per disabilitare OUT2 e abilitare RTS, DTR).

15 15 Ricezione di un pacchetto dati Leggi un byte bit 7-6 = 11 Leggi un byte bit 7-6 = 10 Leggi un byte bit 7-6 = 10 OK else 11 else

16 16 Lettura di un byte Leggi LSR FI=1 OE=PE=FE=0 Leggi RBR

17 17 Indirizzi delle interfacce seriali Indirizzi di I/O di base per le porte seriali: COM1: 3F8h COM2: 2F8h COM3: 3E8h COM4: 2E8h N.B. gli indirizzi effettivi si possono talvolta modificare agendo sui ponticelli della scheda seriale oppure mediante lauto-configurazione Plug- and-Play.

18 18 Esercizio Si scriva un programma che legga il flusso di dati proveniente dal mouse e sposti di conseguenza un carattere * sul video. Il tasto sinistro lascia dietro di sé una traccia di., il tasto destro deve cancellare. Si consiglia di scrivere le procedure assembler: void init_mouse(void) : inizializza linterfaccia int poll_mouse(void) : legge un carattere in polling, gestendo eventuali errori PE, FE, OE. Le procedure saranno poi richiamate da un programma C che penserà a interpretare i dati.


Scaricare ppt "1 Interfacciamento con mouse seriali. 2 Mouse per P.C. Si sono affermati diversi standard per mouse collegabili a Personal Computer, tra di loro incompatibili."

Presentazioni simili


Annunci Google