Problema con Teensy come periferica MIDI

Salve a tutti!

Non so se è questo è il posto più adatto per chiedere aiuto sull'argomento, ma non so più dove sbattere la testa, e a quanto pare su internet non si trova traccia del problema.

Venendo al dunque, ho un problema con la Teensy. Quando usata come periferica midi usb, viene vista correttamente da windows, con due porte, una midi in e una midi out.
La prima funziona a meraviglia, riesco a ricevere tutti i messaggi che mando dalla scheda. La seconda, invece, crea problemi, poiché riesco ad aprirla (con qualsiasi programma, midi-ox come le lib java)
ma al momento di chiuderla, questa blocca inevitabilmente il programma, finché non rimuovo il cavo usb fisicamente.

Il problema non dipende dallo sketch caricato perchè anche con una cosa semplicissima, il problema persiste.

C'è qualcuno che possiede la suddetta scheda che abbia voglia di verificare se è una cosa comune o è la mia Teensy che è difettosa?

Basterebbe caricare uno sketch vuoto (con le funzioni di setup e loop dichiarate ma vuote), impostare il tipo di periferica su MIDI, e provare ad aprire su midi-ox la periferica in entrambe le direzioni (Options->Midi devices->Selezionare Teensy Midi sia in input che in output).
Alla chiusura del programma, quando va a chiudere le periferiche aperte, dovrebbe bloccarsi.

Grazie in anticipo! :slight_smile:

PS: Ho già scritto a Paul, colui che progetta e vende le Teensy, ma non ha ancora risposto...

Forse dovresti far capire al Forum cos'è una teensy, al momento lo sappiamo solo io, tu e Paul :wink:
Intanto dicendo che è un progetto che si basa sull'idea Asrduino ma non sui suoi microcontrollori visto che usa un modello con l'usb integrata, poi magari mettendo il link, così chi ha tempo di darti una mano prima si può documentare. :slight_smile:

Si scusa davo per scontato che fosse abbastanza conosciuta :blush:

Comunque diciamo che come idea la teensy è simile all'arduino leonardo (mi pare che sia stata una specie di ispiratrice), tant'è che usano lo stesso mega32u4 :slight_smile:

Il sito è questo Teensy USB Development Board, magari a qualcuno può interessare. Per funzionare con l'IDE bisogna installare un add-on, chiamato Teensyduino,
che aggiunge anche la possibilità di scegliere come fare riconoscere al pc la scheda una volta programmata (ad es, un mouse+tastiera, joypad, solo seriale, midi, in generale tutto ciò che HID)

dancol90:
finché non rimuovo il cavo usb fisicamente.
Il problema non dipende dallo sketch caricato perchè anche con una cosa semplicissima, il problema persiste.

Quasi sicuramente il problema dipende dal device HID, nel tuo caso midi, che ha qualche problema ed è un problema sicuramente software e non certo hardware.

astrobeed:
Quasi sicuramente il problema dipende dal device HID, nel tuo caso midi, che ha qualche problema ed è un problema sicuramente software e non certo hardware.

Beh lo spero :stuck_out_tongue:
Ho verificato su diversi pc, con diverse versioni di windows e il problema rimane.
Ho anche dato un'occhiata al codice che viene compilato dall'IDE per le funzionalità usb ma non c'ho capito molto...non avendo trovato però nessuna notizia a riguardo per la rete, pur essendo moltissimi i progetti che usano la teensy come periferica midi, mi pare un po' strano...

dancol90:

astrobeed:
Quasi sicuramente il problema dipende dal device HID, nel tuo caso midi, che ha qualche problema ed è un problema sicuramente software e non certo hardware.

Beh lo spero :stuck_out_tongue:
Ho verificato su diversi pc, con diverse versioni di windows e il problema rimane.
Ho anche dato un'occhiata al codice che viene compilato dall'IDE per le funzionalità usb ma non c'ho capito molto...non avendo trovato però nessuna notizia a riguardo per la rete, pur essendo moltissimi i progetti che usano la teensy come periferica midi, mi pare un po' strano...

Ma non puoi provare qualche altro progetto open e vedere se ti danno problemi? così capisci se è il teensy o un tuo errore..

lollotek:
Ma non puoi provare qualche altro progetto open e vedere se ti danno problemi? così capisci se è il teensy o un tuo errore..

Ho già provato a caricare sketch diversi (anche vuoti, come scrivevo sopra) staccando la scheda dalla breadboard, quindi senza nulla attaccato, e comunque non cambia nulla...quindi non credo sia un mio errore :frowning:
Comunque qualcuno di voi ce l'ha? Non è che riuscirebbe a vedere se è una cosa comune questo problema? :open_mouth:

Scusate il doppio post, ma ho trovato come risolvere.

In parole povere, se non viene richiamata la funzione usbMIDI.read() almeno una volta ogni tanto nello sketch, la scheda non elabora i comandi in ingresso e quindi blocca l'host (il pc).

Immaginavo che fosse una cavolata del genere :stuck_out_tongue:

Grazie a tutti per l'aiuto comunque :smiley:

dancol90:
In parole povere, se non viene richiamata la funzione usbMIDI.read() almeno una volta ogni tanto nello sketch, la scheda non elabora i comandi in ingresso e quindi blocca l'host (il pc).

Questo vuol dire che il device HID è stato scritto male, se le cose sono fatte come si deve la ricezione dei dati dalla USB è tramite interrupt e la scansione regolare della stessa, nel caso della MIDI almeno una volta ogni 10 ms, viene fatta in automatico dal device e non deve essere a carico dello sketch.

astrobeed:
Questo vuol dire che il device HID è stato scritto male, se le cose sono fatte come si deve la ricezione dei dati dalla USB è tramite interrupt e la scansione regolare della stessa, nel caso della MIDI almeno una volta ogni 10 ms, viene fatta in automatico dal device e non deve essere a carico dello sketch.

In effetti il funzionamento è un po' strano: bisogna richiamare ad ogni ciclo usbMIDI.read(), che a sua volta richiama le callback, se sono state impostate nel setup, o accedere direttamente ai dati ricevuti.
Qui è spiegato tutto: Teensyduino: Using USB MIDI with Teensy on the Arduino IDE, compreso come risolvere il mio problema :blush: