UniROM Vic20 e C64
13 Luglio 2023IL SUPER NINTENDO / SUPER FAMICOM E LE SUE PROTEZIONI
7 Ottobre 2023Riparazione mouse per C64/128
Mi è stato dato questo mouse da riparare con uno strano difetto..
Vediamo cosa aveva, ma prima capiamo cos’è!
Questo mouse prodotto dalla Commodore nel 1986 è il successore del mouse 1350, che non è propri un mouse a tutti gli effetti, come mai? Il 1350 era un mouse con uscita digitale, questo si collegava alla porta del C64 o 128 ed era come se vi fosse collegato un joystick, quando si andava a destra il mouse chiudeva il contatto della porta joy a destra, e idem per le altre direzioni, il tasto sinistro era il fire ed il destro era un secondo pulsante (pin 9). Che differenza c’è tra questo mouse ed uno tradizionale? beh, questo emulando le direzioni del joystick si muove sempre alla stessa velocità!, provate con una cartuccia tipo “The Final Cartridge 3” ed il joystick o il mouse, vi accorgerete che per arrivare in fondo alla schermata ci vuole diverso tempo. Se si usa un mouse proporzionale questo problema non esiste, se muoviamo il mouse piano, il puntatore si muoverà piano, mentre se lo spostiamo velocemente arriveremo in un attimo a fine schermo.
Il mouse tradizionale non fa altro che tenere traccia di quanti passi (movimenti) si fanno e dire al computer quale è la posizione per l’asse X e Y.
Eccoci arrivati al mouse 1351, questo infatti di default è un mouse proporzionale con il tasto sinistro come il fire ed il destro come la direzione del joystick su. In poche parole funziona come i paddle, quelli hanno un potenziometro che regola la tensione sugli ingressi potX (pin 9) e potY (pin5). Ma questo mouse non ha una resistenza variabile e nemmeno un segnale pvm poi stabilizzato, come passa questa informazione al SID?
Già, il SID oltre che ad occuparsi dell’audio, gestisce i segnali analogici fornendo poi al computer un valore tra 0 e 255 sugli assi X e Y.
Come funziona la modalità proporzionale?
Come detto prima dobbiamo passare una tensione al pin X e Y che verrà letta dal SID e convertita in digitale, tipo un moderno ADC converter, questo funziona così:
Il SID utilizza il clock del processore per campionare l’ingresso analogico e in tutto impiega 512 cicli di clock,
per i primi 256 clock il SID applica una resistenza interna al pin che deve leggere, facendo così scaricare il suo condensatore interno al chip. Successivamente scollega la resistenza di pull-down e aspetta che il condensatore interno alla porta si carichi raggiungendo una tensione soglia, ma per caricarsi il condensatore impiega del tempo in base a quanta tensione è applicata all’ingresso della porta che sta leggendo. Per ogni clock passato il SID aumenta il suo registro della porta fino a che non rileva che il condensatore è carico, ma se questo non raggiunge la soglia entro i 256 clock rimasti, per il registro il suo valore è 255, nulla collegato. Se il condensatore si carica prima della fine del conteggio allora avrà un valore minore di 255, infatti se si carica all’istante (primo ciclo di clock) il suo valore sarà 0.
Bene, ora che sappiamo come ragiona il SID e come legge questo valore, possiamo far in modo di caricare il condensatore applicando una tensione sulla porta, in qualsiasi momento.. o quasi!
Il mouse ragiona così:
Il cuore di tutto è il MOS 5717 che controlla i movimenti del mouse tramite i soliti fotodiodi (come un encoder) e tiene il conto della posizione del puntatore, come un mouse moderno, però per passare queste informazioni al computer usa questo metodo.
Aspetta che il segnale sulla porta potY si abbassi, segno che il SID sta iniziando il suo ciclo di scarica e successiva carica.
Controlla i movimenti del mouse e conta 256 cicli di clock, ma come fa? beh anche lui ha un quarzo a 1Mhz come il C64/128
Quando sono passati questi cicli, non fa altro che dare un impulso positivo alla porta X e Y al momento opportuno, contando quanti cicli passano e caricando istantaneamente il condensatore quando è trascorso il numero di clock corrispondenti al valore da dare al registro. Furbo no?!
Altra cosa da dire è che il mouse non lavora solo in questa modalità, è stato progettato per essere compatibile anche con il suo predecessore.
Tenendo premuto il tasto destro del mouse mentre si accende il computer o lo si collega ad esso, il mouse va in modalità 1350 e ragiona come mouse digitale, chiudendo le direzioni joystick in base a come spostiamo il mouse.
Guasti più frequenti
Questo mouse è semplice ma al tempo stesso critico, basta poco per non farlo funzionare bene.
Questo è lo schema della revisione A, purtroppo io ho una revisione B e non ho trovato il suo schema che è leggermente diverso. La parte più critica sono proprio le rotelle encoder e fotodiodi che con lo sporco possono diminuire la loro efficienza e non far funzionare il mouse. Altri casi sono il disallineamento di questi fotodiodi che non puntano più correttamente o le rotelle che si sono deformate. Può succedere che anche dopo una pulizia e aver verificato che i diodi sono funzionati, il mouse non si muove i una o tutte le direzioni, questo è il caso dove conviene verificare le tensioni ai capi delle resistenze R6~R9 perché se queste sono sotto i 3,4V circa potrebbe non essere interpretato come un segnale alto. Occorrerà in questo caso trovare un valore più alto che riporti la tensione sopra i 4V.
Nel mio caso
Come detto sopra, la maggior parte delle volte il mouse non si muove in una o tutte le direzioni in nessuna modalità se il problema deriva dai fotodiodi, partitori ecc.
Questo mouse infatti non funzionava bene nella modalità proporzionale, non che non funzionava per niente, si muoveva su tutte le direzioni ma dopo circa un tragitto di 1-2 centimetri tornava alla posizione di partenza, e lo faceva con tutte le direzioni.
Non poteva essere un problema di riconoscimento segnali dell’encoder, altrimenti non si sarebbe mosso, in oltre nella modalità joystick funzionava benissimo.
Avevo scoperto poi che tenendolo collegato per almeno 30 secondi, si metteva a funzionare correttamente anche in modalità proporzionale. Sembrava un difetto di sincronismo, vedi descrizione del funzionamento.
Beh, alla fine ho cambiato anche dei condensatori che non erano più in buono stato (C3,C5), ma i restanti erano tutti funzionanti ed il problema rimaneva. Il clock era perfetto, non sembrava avere nulla che non andasse, anche il transistor che nello schema non c’è era buono. Alla fine ho scoperto che la resistenza che qui è indicata come R11 da 5,1K mentre nel mio mouse era da 1M, era quella che faceva riconoscere il segnale di sincronismo al micro. Ho provato ad abbassare il suo valore sostituendola con altre da 820k, 470k .. e notavo che il tempo di attesa per farlo funzionare bene era sempre minore. Alla fine sono arrivato a 100k ed il mouse funziona subito bene.
Guardate il video per vedere tutti i passaggi ed iscrivetevi al canale per aiutarci ad andare avanti con questi video e riparazioni!!