Mený principale
 Notizie
 Grafica
 Forum
 Links
 Retro Trailer
 Recensioni
 Modelli Amiga
 Storia Amiga
 Lista Utenti
 Policy sito
Ricerca Google

Login

Nick


Password


10 Novembre 2018 Postato da: sampedenawa
HID2AMI - Adattatore USB->Amiga per mouse, gamepad (e altro...)
Con il test positivo del prototipo funzionante, apro qui un nuovo topic per il convertitore che ho sviluppato.

-- Cosa è:

HID2AMI è un adattatore che permette di utilizzare [u] qualsiasi [/u] mouse usb sui nostri Amiga (supporta sia i mouse PS2 che i mouse 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.

Un piacevole effetto collaterale nell'utilizzare la piattaforma hardware selezionata è che le funzionalità del firmware consentono la gestione di tutti i dispositivi HID standard, per cui l'adattatore è già oggi in grado di rilevare e gestire non solo mouse, ma anche tastiere, joypad, ecc.

-- 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.

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

Il primo prototipo, basato su di una minimale scheda di sviluppo STM32F105 è completo e perfettamente funzionante, tanto che può essere utilizzato tranquillamente con qualsiasi Amiga.
Parte a questo punto il disegno del progetto definitivo e del corrispondente PCB, così da avere un prodotto il più compatto ed ergonomico possibile

-- 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: 97  Aggiungi - Pagine: 1-2-3-4-5


Pagine: -1-2-3- [4] -5-

Post inviati: 163

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 in risposta al 59 di galvanica
sampedenawa 5 Dicembre 2018    17:52:00
.

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

Post inviati: 163

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 in risposta al 61 di sampedenawa
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: 800

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ù.

A500 Rev.3 1 MB, A500 1 MB, A500 Rev.6 1 MB Chip + 1.5 MB Slow, A500+ 2 MB Chip (riparato!), A600 2 MB Chip + A6095 + SD 4 GB, A600, A1200 + ACA1221EC... VIC20 e svariati C16 e C64

Post inviati: 163

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 in risposta al 63 di SukkoPera
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: 163

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: 3464

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ì

Voglio la pace nel mondo, un'unica nazione, nessun confine, un'unica lingua e nessuna religione.

Post inviati: 163

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 in risposta al 66 di cpiace64
sampedenawa 6 Dicembre 2018    11:37:31
Citazione

bravi, continuate così



in che senso ?

Post inviati: 489

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 in risposta al 65 di sampedenawa
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: 800

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


A500 Rev.3 1 MB, A500 1 MB, A500 Rev.6 1 MB Chip + 1.5 MB Slow, A500+ 2 MB Chip (riparato!), A600 2 MB Chip + A6095 + SD 4 GB, A600, A1200 + ACA1221EC... VIC20 e svariati C16 e C64

Post inviati: 489

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: 800

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


A500 Rev.3 1 MB, A500 1 MB, A500 Rev.6 1 MB Chip + 1.5 MB Slow, A500+ 2 MB Chip (riparato!), A600 2 MB Chip + A6095 + SD 4 GB, A600, A1200 + ACA1221EC... VIC20 e svariati C16 e C64

Post inviati: 163

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: 800

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


A500 Rev.3 1 MB, A500 1 MB, A500 Rev.6 1 MB Chip + 1.5 MB Slow, A500+ 2 MB Chip (riparato!), A600 2 MB Chip + A6095 + SD 4 GB, A600, A1200 + ACA1221EC... VIC20 e svariati C16 e C64

Post inviati: 163

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: 489

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: 800

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.

A500 Rev.3 1 MB, A500 1 MB, A500 Rev.6 1 MB Chip + 1.5 MB Slow, A500+ 2 MB Chip (riparato!), A600 2 MB Chip + A6095 + SD 4 GB, A600, A1200 + ACA1221EC... VIC20 e svariati C16 e C64

Post inviati: 163

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: 800

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.

A500 Rev.3 1 MB, A500 1 MB, A500 Rev.6 1 MB Chip + 1.5 MB Slow, A500+ 2 MB Chip (riparato!), A600 2 MB Chip + A6095 + SD 4 GB, A600, A1200 + ACA1221EC... VIC20 e svariati C16 e C64

cpiace64

Post inviati: 3464

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

Voglio la pace nel mondo, un'unica nazione, nessun confine, un'unica lingua e nessuna religione.

Post inviati: 489

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-

Utenti Online
Utenti registrati: 902 dal 1 Gennaio 2006
di cui online: 1 registrati - Oge -
8 non registrati

Benvenuto all'ultimo utente registrato: Zilog

Buon Compleanno a Megabit - Metalciaf - ilbiboit - 

© 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.059324979782104 secondi