Menù principale
 Notizie
 Grafica
 Forum
 Links
 Retro Trailer
 Recensioni
 Modelli Amiga
 Storia Amiga
 Retro-Gamers
 Lista Utenti
 Contatti
 Policy sito
Ricerca Google

Login

Nick


Password


10 Novembre 2018 Postato da: sampedenawa
HID2AMI - ADATTATORE UNIVERSALE PER MOUSE/JOYSTICK/JOYPAD
Immagine

(logo by Oge)



Per vedere la compatibility list, le istruzioni sull'utilizzo, e molto altro:

https://github.com/EmberHeavyIndustries/HID2AMI



In fondo al post le immagini della scheda completa e qualche filmatino (di pessima qualità) che mostra il funzionamento.

------------------------------


-- Cosa è:

HID2AMI è un adattatore che permette di utilizzare qualsiasi mouse usb sui nostri Amiga (supporta sia i mouse PS2 che i mouse HID).

A partire dal firmware 1.2.0 HID2AMI permette di collegare ed utilizzare con Amiga (quasi) qualsiasi joypad/gamepad HID .

Il convertitore nasce dal concetto base dello "Smallymouse", reingegnerizzando il progetto per utilizzare componenti del costo di quasi dieci volte inferiore ed aggiornati alle tecnologie più recenti.


-- Come funziona (in breve):

HID2AMI riconosce, inizializza e gestisce qualsiasi dispositio HID collegato alla sua porta USB; nel caso del mouse inizia poi ad acquisire le informazioni di movimento e pressione dei pulsanti, convertendole nelle 4 forme d'onda in quadratura che simulano le uscite digitali degli originali mouse Amiga.
Nel caso dei gamepad, HID2AMI interroga il dispositivo scoprendone mappatura e caratteristiche; assegna poi i tasti del gamepad ai due tasti joy Amiga e converte gli input direzionali nei corrispondenti input del joy Amiga.

-- A che punto è lo sviluppo dell'adattatore ?

La versione 1.1.0 del pcb, sia in versione DeLuxe è "in produzione".


-- Chi ha sviluppato HID2AMI ?

HID2AMI è un progetto di Sampedenawa, nato da una serie di discussioni, preziosi suggerimenti ed incoraggiamenti degli utenti di questo forum, in particolare Sukkopera e Majinga

->Continua<-

Commenti: 285  Aggiungi - Pagine: 1...-11-12-13-14-15

Indice: forum / Hardware Amiga in generale

Pagine: -1-2-3- [4] -5-6-7-8-9-10-11-12-13-14-15-

Post inviati: 771

Visulizza profilo Messaggio Personale
151.16.13.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 61
sampedenawa 5 Dicembre 2018    17:52:00
.

Commento modificato il 05/12/2018 alle ore 17:55:35

Post inviati: 771

Visulizza profilo Messaggio Personale
151.16.13.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 62
sampedenawa 5 Dicembre 2018    17:54:46
Citazione

Citazione

il cocolino ha un driver per lo scroll della pagina



Interessante questa cosa.. il coccolino si connette alla porta mouse, quindi il suo driver interpreterà (immagino) una qualche forma codificata del messaggio di wheel (che è tra l'altro diverso a seconda della direzione della rotazione della rotellina).

Basterebbe a questo punto sniffare cosa succede e potrei replicare la codifica sul mio, rendendolo compatibile col driver coccolino ....

Hmmmmmm .. nessuno ha un coccolino ed è disponibile a fare la prova ?



Citazione

Ciao, domanda da profano.
Con un mouse wireless funziona lo stesso? Utile saperlo in quanto girano adattatori che non supportano wireless ma solo filo.

Thanks a lot (chiaramente uno mi piacerebbe)



Non vedo motivi per cui non dovrebbe !
L'importante è che il "coso" si dichiari come mouse HID.. se poi usa il filo, il WiFi, il Bluetooth o qualsiasi altra cosa non è rilevante.
(e comunque, oramai che ci ho preso la mano, se si dichiarasse con una classe device diversa, sarei in grado di aggiungere la decodifica al firmware, quindi ....)


Temibile Pirata

Post inviati: 2144

Visulizza profilo Messaggio Personale
151.91.34.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 63
SukkoPera 5 Dicembre 2018    18:01:02
Sì, giusto qualche giorno fa ho letto anch'io qualcosa del genere, ovvero che la rotazione della rotellina genera un qualche segnale particolare sulle uscite normalmente dedicate al movimento X/Y. Purtroppo non riesco a ritrovare dove l'ho letto e non ricordo nulla di più.

I miei progetti Retrogaming

Post inviati: 771

Visulizza profilo Messaggio Personale
151.16.13.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 64
sampedenawa 5 Dicembre 2018    18:14:50
Citazione

Sì, giusto qualche giorno fa ho letto anch'io qualcosa del genere, ovvero che la rotazione della rotellina genera un qualche segnale particolare sulle uscite normalmente dedicate al movimento X/Y. Purtroppo non riesco a ritrovare dove l'ho letto e non ricordo nulla di più.



Domattina mi metto in caccia anche io delle info.
Forse, visti che il coccolino si dichiara compatibile con i driver NewMouse, basta andare a vedere fra i sorgenti di quello lì su aminet....

Accidenti a voi, mi avete impegnato la mattinata di domani ......

Post inviati: 771

Visulizza profilo Messaggio Personale
151.16.13.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 65
sampedenawa 6 Dicembre 2018    11:08:06
Ok, trovato le info.. come ricordava correttamente SukkoPera, si può fare con un hack; ho trovato un thread su eab:

I think the Cocolino is an evolution of Eyetech's EZMouse, which was originally my design. What I did was have the microcontroller use PotX as a select signal, similar to how a Megadrive joypad works. a VBlank interrupt runs on the Amiga which briefly pulls PotX low. This signals the adapter to put alternative data on the mouse button lines and two of the direction lines (whichever two are mapped to the least significant bits of the mouse counters - I forget now), then an input handler generates NewMouse-style mousewheel events from these signals.

ma, come immaginavo:

Unfortunately the mouse pointer movement isn't as nice as a normal Amiga mouse. It's less accurate. Just leave the scroll wheel out. It's impossible to implement properly without hacks using only one port.
And yes, it's a thing. I have a Cocolino, and I think it sucks because of this hack.



per cui a questo punto eviterei di perderci tempo dietro e mi concentrerei sul supporto joypad. Che ne dite ?



Commento modificato il 06/12/2018 alle ore 11:10:06

cpiace64

Post inviati: 4685

Visulizza profilo Messaggio Personale
93.36.221.*** Mozilla/5.0 (Windows NT 6.1; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 66
cpiace64 6 Dicembre 2018    11:10:38
bravi, continuate così

Post inviati: 771

Visulizza profilo Messaggio Personale
151.16.13.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 67
sampedenawa 6 Dicembre 2018    11:37:31
Citazione

bravi, continuate così



in che senso ?

Post inviati: 1588

Visulizza profilo Messaggio Personale
79.44.13.*** Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 68
majinga 6 Dicembre 2018    11:39:13
Citazione

per cui a questo punto eviterei di perderci tempo dietro e mi concentrerei sul supporto joypad. Che ne dite ?


Si, lascia stare la rotella.

La cosa interessante è che questa soluzione prevede di modificare il valore di potx lato amiga.
Dalle prove che avevo fatto io per via del problema del riconoscimento del tasto destro, mi ero accorto che paula si comportava come un generatore di corrente costante. La cosa mi aveva anche spiazzato, perché io mi aspettavo un ADC semplicemente leggesse i volt in ingresso.

Poi mi era passata in mente la cosa delle paddle, e del fatto che gli ingressi sono chiamati "pot" (potenziometri probabilmente).
Se uno mette una tensione ai capi di un potenziometro e poi lo varia, la tensione ai suoi capi non varia, varia la corrente.
Tenendo costante la corrente invece, al variare della resistenza varia la caduta di tensione ai sui capi. E un ADC questo lo può leggere.

Però non ero andato a fondo su questa cosa, anche perché non ho trovato il datasheet di paula. Avevo pensato che qualcosa doveva essere scritto in qualche manuale di programmazione, altrimenti come fa la gente a scrivere programmi che usano questi ingressi.
Però non avevo cercato niente a riguardo.

Trovo interessante che si possano sia leggere che scrivere valori su potx poty. In effetti su qualche schema online sono segnati come bidirezionali.
Mi manca ancora qualche tassello per capire bene la logica di questi due ingressi, ma tolti i grattacapi col tasto destro sembrano molto versatili.

Sapete, credo che la soluzione che avevo proposto io si possa fare, solo che lato adattatore le cose diventano più complicate, perché i soli valori alto e basso non bastano più, occorre almeno un terzo valore.
Inoltre anche lato amiga va riscritta molta più roba, non so attualmente come funziona, ma se esistono delle librerie già pronte per leggere il movimento del mouse usare gli stessi ingressi per gestire la rotella è in effetti molto più comodo.

Vabbè, va bene anche chiacchierarne

Temibile Pirata

Post inviati: 2144

Visulizza profilo Messaggio Personale
151.91.34.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 69
SukkoPera 6 Dicembre 2018    12:18:13
Nemmeno io sapevo che POTX/Y potessero diventare degli output! Questo potrebbe finalmente spiegare il senso di quel filtro resistivo aggiunto su A1200, per evitare cortocircuiti se ci colleghi un mouse mentre è un output, ad esempio. Però se è davvero così avrebbero dovuto pensarci prima... Mah!

Comunque, senza ricorrere a questo, non riusciamo a trovare qualche schema di encoding per mandare il movimento della rotellina su POTX? Non è banale perché la rotellina non ha dei limiti, mentre un segnale analogico sì, e nemmeno sappiamo quando avviene la lettura, ma a questo punto ci possiamo pensare un po'.

Certo, poi bisognerebbe anche scrivere un driver lato Amiga...

Commento modificato il 06/12/2018 alle ore 12:18:38


I miei progetti Retrogaming

Post inviati: 1588

Visulizza profilo Messaggio Personale
79.44.13.*** Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 70
majinga 6 Dicembre 2018    12:35:14
A limitare la corrente ci pensa probabilmente paula, per questo nelle A500 non c'è.

La rotella per me va gestita come una direzione, usando sia potx che poty, quindi due onde quadre con lo sfasamento ad indicare la direzione e ogni impulso che corrisponde ad uno step della rotella.

Il problema in questo caso è che non sono sicuro dei tempi di risposta dei due input, l'onda quadra potrebbe avere uno slew rate piuttosto alto. Usare due valori non troppo distanti, in parte aiuterà la cosa, ma la rotella potrebbe essere poco precisa.

Temibile Pirata

Post inviati: 2144

Visulizza profilo Messaggio Personale
151.91.34.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 71
SukkoPera 6 Dicembre 2018    12:40:17
Ci ho pensato, ma:

1. Come gestisci il pulsante dx del mouse?
2. Non credo ci siano interrupt su POTX/Y, quindi dovresti gestirli in polling e, per essere sicuro di non perderti spostamenti, dovresti farlo talmente spesso da caricare la CPU in maniera non indifferente.
3. La lettura di un ADC non è rapida come quella di un segnale digitale (bisogna misurare il tempo di scarica di un condensatore), il che fa un po' a botte col punto precedente.

Commento modificato il 06/12/2018 alle ore 12:40:51


I miei progetti Retrogaming

Post inviati: 771

Visulizza profilo Messaggio Personale
151.16.13.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 72
sampedenawa 6 Dicembre 2018    12:50:57
Attenzione a non fare ragionamenti errati però: la rotella manda semplicemente un messaggio di "ho fatto un tick in avanti" oppure "ho fatto un tick indietro" .. non è un pot analogico !

Temibile Pirata

Post inviati: 2144

Visulizza profilo Messaggio Personale
151.91.34.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 73
SukkoPera 6 Dicembre 2018    13:05:45
Certo, per questo suggerivo di trovare un qualche possibile encoding per trasformare quel tipo di messaggio in un segnale 0-5V.

... Tra l'altro questo richiederebbe un DAC sull'STM32, è presente?

... Oppure possiamo fare un PWM?

Commento modificato il 06/12/2018 alle ore 13:06:33


I miei progetti Retrogaming

Post inviati: 771

Visulizza profilo Messaggio Personale
151.16.13.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 74
sampedenawa 6 Dicembre 2018    13:14:53
Sì, ha un DAC interno con due uscite indipendenti, se è per quello ....

Post inviati: 1588

Visulizza profilo Messaggio Personale
79.44.13.*** Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 75
majinga 6 Dicembre 2018    13:26:52
Immagine
Ecco quello che intendo io.

Ovviamente la cosa è complicata.
Ci sono vari problemi, il fatto di avere valori diversi sul pin non è banale, visto il modo strano in cui si comportano potx e poty.
Lo slew rate è un altro problema.
Il fatto che il livello del tasto premuto passa per i livelli del segnale della rotella. Vista la lentezza degli ingressi se uno giocherella con i tasti potrebbe simulare la rotella. Per questo si potrebbe compensare usando uni dei due ingressi a valore fisso, per indicare se lo spostamento è verso destra, verso sinistra o niente. Si potrebbe attendere un po per verificare che il valore sia stabile prima di prenderlo per buono. La rotella sarebbe lenta a rispondere ma funzionerebbe.

Temibile Pirata

Post inviati: 2144

Visulizza profilo Messaggio Personale
151.91.34.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 76
SukkoPera 6 Dicembre 2018    14:55:15
IMHO puoi sperimentare con un Arduino e vedere facilmente se la cosa sta in piedi in maniera affidabile, poi eventualmente si vede se si può implementare in maniera efficiente su Amiga.

I miei progetti Retrogaming

Post inviati: 771

Visulizza profilo Messaggio Personale
151.16.13.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 77
sampedenawa 6 Dicembre 2018    16:42:47
Signori vi dò un piccolo indizio.....

- modificata libreria basso livello USBHOST di ST per aggiungere supporto ai gamepad ....
- aggiunti gli USB descriptor per questi ultimi ....
- impostati gli handler di gestione et .....


voilàaaaaaaaaa --> Immagine


Per ora in digitale, ma ho già decodifcato anche l'analogico (prossimamente) ......
Il problema adesso è come mappare gli 8 pulsanti del trusthmaster

Peraltro rispondiamo indirettamente anche all'utente di ieri: funziona con il wireless (bluetooth nel mio caso)


Commento modificato il 06/12/2018 alle ore 16:48:40

Temibile Pirata

Post inviati: 2144

Visulizza profilo Messaggio Personale
151.91.34.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 78
SukkoPera 6 Dicembre 2018    17:06:05
Non ti faccio i complimenti solo perché non avevo dubbi che ci saresti riuscito!

E come vuoi mapparli i tasti? Tutti e 8 sul Button 1!

No dai, anche qualcuno sul B2 . Giochi che fossero in grado di sfruttare un eventuale B3 (su POTX) non mi pare ne esistano.

I miei progetti Retrogaming

cpiace64

Post inviati: 4685

Visulizza profilo Messaggio Personale
93.36.221.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 79
cpiace64 6 Dicembre 2018    17:09:21
guardate gli schemi del pad del cd32 come gestisce i vari tasti

Post inviati: 1588

Visulizza profilo Messaggio Personale
79.44.13.*** Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0
Commento 80
majinga 6 Dicembre 2018    17:25:53
La gestione degli analogici mi intriga. Per cosa li vuoi usare?

Pagine: -1-2-3- [4] -5-6-7-8-9-10-11-12-13-14-15-

Utenti Online
Utenti registrati: 1206 dal 1 Gennaio 2006
di cui online: 2 registrati - LucioM - MassimoC -
80 non registrati

Benvenuto all'ultimo utente registrato: zulu

Buon Compleanno a Adry82 - 

© Amigapage 1998 - 2007 - Sito italiano dedicato alla piattaforma Amiga ed evoluzioni varie.
Struttura del sito interamente ideata e realizzata da Marco Lovera e Alessandra Lovera - Tutto il materiale inserito all'interno del sito è dei rispettivi autori/creatori.
E' assolutamente vietata la riproduzione o la manipolazione di tutti i contenuti o parte di essi senza l'esplicito consenso degli amministratori e degli autori/creatori.

Eseguito in 0.11020493507385 secondi