JOYSTICK AD EMULAZIONE TASTIERA

Marco Lizza e Marco Steccanella rispondono ad un lettore

Ferra76 domanda:

> >Sto costruendo un joystick ad emulazione tastiera, cioe' tale che i
> >contatti del microswitch siano collegati al chip presente in una
> >tastiera; cioe' il movimento del joystick corrisponde alla normale
> >pressione dei tasti.
> >Il joystick l'ho costruito con ricambi di vecchi
> >coin-op e l'ho collegato alla tastiera, cosi muovendolo in
> >pratica genero una sequenza di tasti, (in particolare non e' detto che
> >gli assi del joy siano collegati con i tasti "freccia". Li ho collegati
> >diversamente in modo da evitare il piu' possibile conflitti).

> >Il mio problema e' proprio il conflitto tra i tasti, infatti spingendo i tasti a
> >gruppi di 4,5,6,7,8 a volte l'input viene recepito, altre volte no.
> >Volevo sapere, quand'e' che si verifica questo problema per evitarlo e
> >quindi assegnare al joystick dei tasti che anche spinti assieme non
> >fossero in conflitto; e poi cosa si puo' migliorare a livello di bios
> >per la ricezione da tastiera.    
> > ...
> >Quando premi molti tasti contemporaneamente sulla tastiera il
> >sistema si impalla e lo speaker comincia ad imprecare; non e' che
> >smanettando con due joystick ad emulazione tastiera, succede la stessa cosa?
Marco Lizza risponde:
Se il joystick e' connesso ad una porta seriale e/o la velocita' di elaborazione dei dati in ingresso da parte della CPU non e' sufficentemente "veloce", e' molto probabile che si verifichi lo stesso inconveniente.
> > Secondo te per evitare il piu' possibile questo problema in fase di
> > assegnazione dei tasti dopo aver studiato tutti i collegamenti e i
> > piedini del chip all'interno della tastiera, e' meglio:
> >    A - utilizzare meno piedini possibili del chip (piu' tasti fanno capo
> >        allo stesso piedino)
> >    B - utilizzarli il piu' separatamente possibile (ogni piedino
> >        viene sovraccaricato il meno possibile)
Buona la prima, ma anche la seconda non e' male. Il fatto e' che non sono, a mio avviso, due strategie "opposte". Sarebbe meglio operare, per quanto possibile, un compromesso fra le due.
> >  Cioe' il mio dubbio e': il sistema si impalla quando si premono piu
> > tasti che fanno riferimento agli stessi piedini dell'integrato
> > all'interno della tastiera o quando si premono piu' tasti che fanno
> > riferimento a tanti piedini diversi appartenenti all'integrato stesso.
Il secondo caso, visto che in tal modo si sovraccarica il buffer piu' in fretta.

Marco Steccanella risponde:
Una buona spiegazione e abbastanza completa mi sembra che te l'abbia data Marco Lizza; comunque provero' a descrivere quello che io so. Il problema, non riguarda "certi" tasti che premuti in contemporanea crano piu' problemi di altri, sempre premuti in contemporanea; si tratta piuttosto della capacita' del sistema di ricevere i caratteri generati dalla tastiera, inserirli nel buffer di tastiera (che, a dispetto del nome, si trova sulla macchina) e da questo scaricarli nei programmi che ricevono l'input dalla tastiera. Il clock interno DOVREBBE essere di 55 millisecondi: significa che ogni 55 millisecondi avviene un controllo relativo all'interrupt (mi sembra l'interrupt 01) della tastiera per vedere se essa ha generato un carattere. Ovviamente se la tastiera genera piu' di un carattere entro 55 millisecondi, questa situazione e' una sicura fonte di possibili problemi. Altri problemi si generano dallo scaricamento del buffer di tastiera: se questo si riempie e non esiste nessun programma in quel momento che prevede l'input da tastiera, la tastiera si trova in condizione di non potere piu' inviare caratteri, e se essa ne genera in sovrappiu' si crea un conflitto che viene gestito dal BIOS facendo suonare il classico BEEP (vedi BIOS tastiera nell'immagine della scheda madre). La seconda domanda sul come gestire il BIOS per migliorare questa situazione e' molto complessa: di sicuro non vi e' nessun settaggio disponibile all'utente comune, che permette di migliorare questo tipo di funzionamento. Sarebbe necessario aumentare il clock interno, ma questo genera due problemi, uno di ordine hardware e uno di ordine software.

Primo problema: il clock e' generato da un circuito integrato detto PIT (Programmable Interval Timer) del tipo 8253; una volta (ai tempi dell'80286) questo era un integrato fisicamente presente sulla scheda madre; attualmente e' sicuramente compreso in uno dei mega chip che fanno parte del chipset della scheda; inoltre e' necessario conoscere con precisione l'indirizzo tramite il quale accedere alle funzioni di questo integrato; ancora, i moderni sistemi funzionano in modo protetto e non permettono accessi diretti all'hardware... (bastano come problemi?).

Secondo problema: anche ammesso di riuscire ad accedere alle funzioni del generatore di clock e di avere la possibilita' fisica di modificare la frequenza di questo, si otterrebbe una modifica del clock di sistema (non l'orologio), che non e' solamente dedicato alla scansione del buffer di tastiera, ma e' dedicato alla sincronizzazione di molti processi di interfacciamento software/hardware a livello BIOS e di sistema operativo interno, e quindi si modificherebbe il funzionamento di tutto il sistema senza conoscerne le conseguenze: solo avendo una approfondita conoscenza del BIOS e del sistema operativo al livello piu' basso sarebbe teoricamente possibile avere un'idea delle conseguenze... ma non sarebbe ancora un'idea certa, perche', per esperienza, proprio questo clock lo ho trovato dedicato a cose non specificate da nessuna parte (modificandolo, aumentando la frequenza, diminuiva in modo molto significativo la velocita' di accesso al floppy disk...); questo intende essere solo un esempio, perche' la mia esperienza si basa su macchine attualmente obsolete come gli 80286, ma la cui struttura e' sicuramente alla base delle moderne macchine.


Homepage TASTIERA
Il motore di ricerca del Dizionario Informaticov1.03

Solo connessi ad Internet potete utilizzare DizSearch

Termini mancanti/suggerimenti ?
© Copyright 1997-2001 by Francesco Longo, flongo@dsi.unive.it

Homepage Dizionario Informatico