Risposte nei forum create

Stai visualizzando 8 post - dal 1 a 8 (di 160 totali)
  • Autore
    Post
  • in risposta a: Richiesta aiuto interfacciamento theremino Matlab #24674
    theremino
    Amministratore del forum

    Per i terremoti andrebbero bene anche 10 ms o più.
    Noi usiamo sempre la versione VB, quella in CSharp è più macchinosa e la abbiamo fatta solo per fare contenti gli amanti dei punti e virgola.

    Riguardo al sismografo USB non ho capito di cosa si tratta.

    in risposta a: Richiesta aiuto interfacciamento theremino Matlab #24666
    theremino
    Amministratore del forum

    Se li usi contemporaneamente ciascuno scambia come fosse da solo, non si rallentano a vicenda.
    Però lo ESP32 su WiFi va anche meno del Master, da 300 a 600 circa a seconda del segnale WiFi e della velocità del PC

    Se vuoi arrivare a 10 mila campioni al secondo l’unico metodo sarebbe scrivere firmware sullo ESP32 e fare dei blocchi di dati in memoria dello ESP32
    Poi dovresti trasferirli in parallelo con i pin “generic” (impostandoli al loro massimo numero che non ricordo , forse 16)
    Poi dovresti leggerli con il tuo software e rimetterli in fila uno dopo l’altro.

    E’ una cosa lunga e difficile ma altre strade (leggere lo ESP32 con la tua applicazione) sarebbe ancora più difficile.
    Ci hanno provato anche altri e non sono riusciti.

    E conta anche che stai passando per slot in memoria che sono asincroni per cui una applicazione scrive (non si sa bene quando)
    e se l’altra legge troppo velocemente finisce per leggere due volte lo stesso valore

    Il nostro sistema è fatto per lavorare fino a ripetizioni di circa 100 per secondo, che per quasi tutte le applicazioni vanno benissimo.
    Per andare oltre non si dovrebbero più usare gli Slot e nemmeno la USB come la usiamo noi (senza driver).

    in risposta a: Richiesta aiuto interfacciamento theremino Matlab #24660
    theremino
    Amministratore del forum

    La velocità di “scambio” dati della USB è limitata dal kernel del sistema operativo che ha un tick di 1 mS
    Questo è un limite dei kernel di tutti i sistemi operativi, Linux e Mac compresi.

    Per cui nelle condizioni migliori si potrebbe arrivare a 1000 scambi al secondo ma normalmente oltre a 800 non si arriva
    E questi scambi sono anche un po’ sovrastimati dal contatore dell’HAL,
    se vai a vedere con l’oscilloscopio i tempi saranno di 1 o 2 mS per cui puoi avere una certa sicurezza solo fino a 500
    e una buona stabilità dei tempi solo fino a 100 scambi al secondo.

    Per mandare più campioni li si dovrebbero mandare in “batch” cioè accumularli nel micro e poi mandarne decine o centinaia ad ogni scambio.
    Ma, mi dispiace, il nostro sistema non è fatto così.

    Questo limite era chiaramente specificato sia nella documentazione dei Master, che in quella dell’HAL e anche in quella dell’ADC24.

    Per superare questo limite dovresti scrivere molto codice, non so se nel PIC del Master o nello ESP32, quale stai usando ?
    Se è lo ESP32 potresti usare una decina di generic-pins per mandare dieci dati all’HAL in ogni scambio.
    Ma se è il Master il suo HAL non prevede i pin “generic” e quindi dovresti modificare il programma HAL e dovresti anche modificare il firmware che è nel PIC del Master
    (è tutto open source ma il lavoro da fare sarebbe davvero molto)

    Inoltre l’ADC24 può arrivare a velocità alte solo se lavora a singolo canale ma ha un tempo di cambio canale molto lungo e quindi credo che con tre canali non arriverai a più di 100 200 campioni al secondo (potrei sbagliarmi e in tal caso dovresti fare i conti precisi consultando il datasheet dell’ADC24)

    in risposta a: Richiesta aiuto interfacciamento theremino Matlab #24589
    theremino
    Amministratore del forum

    Puoi sicuramente prendere i nostri sorgenti dell’HAL e ricompilarli a 64 bit
    (utilizzando Visual Studio 2008 come spiegato nel nostro sito)
    https://www.theremino.com/downloads/notes-on-software#development

    Però poi ti perdi tutte le altre comodità del nostro sistema, oscilloscopi, analizzatori di spettro, e tante altre applicazioni molto utili.
    Dovresti ricompilarle tutte e sono quasi 200.

    Potresti invece fare una app a 32bit in CPP che legge dai nostri slot e scrive in un file normale, e quello MathLab può sicuramente leggerlo.
    Al file devi dare le proprietà di condivisione lettura e scrittura.
    Se non riesci ti aiuterò dato che ho già fatto dei file condivisibili in quel modo.
    E dato che si tratta di pochi byte tutto avviene velocemente in memoria cache, anche se il file è un normale file da HardDisk.

    Poi metti tutto in una cartella e sottocartelle, HAL, Applicazione in C e link a MathLab
    E infine avvii e chiudi tutti quanti con un solo click come fossero una unica applicazione con Theremino_StartAll
    https://www.theremino.com/downloads/foundations#starter

    in risposta a: Richiesta aiuto interfacciamento theremino Matlab #24448
    theremino
    Amministratore del forum

    Novità?
    Sei riuscito a leggere?

    Rispondo alle domande che avevo trascurato:

    DOMANDE
    ———————————————————————————————-
    I valori float come sono ordinati nel file? Sequenzialmente dallo slot 1 in poi?
    Quindi se ho capito bene.
    Leggo i primi 4byte del mapped file ed ho il segnale sullo slot1.
    Leggo i secondi 4 byte del mapped file ed ho il segnale sullo slot 2.
    Leggo i terzi 4 byte del mapped file ed ho il segnale sullo slot 3,
    Potrei scrivere una serie di funzioni (da condividere) per rendere più pulito e ordinato il lavoro…

    RISPOSTE
    ———————————————————————————————–
    I valori float sono ordinati nel file sequenzialmente dallo Slot ZERO in poi.
    Il file contiene 4096 byte che contengono i valori degli Slot dallo 0 al 999 (più 96 byte per ora non usati)
    Lo Slot ZERO è un Float scritto nei Byte da 0 a 3
    Lo Slot UNO è un Float scritto nei Byte da 4 a 7
    Lo Slot DUE è un Float scritto nei Byte da 8 a 11
    e così via fino allo Slot 999

    La serie di funzioni per rendere più pulito e ordinato il lavoro si trova già negli esempi
    che abbiamo pubblicato in VbNet, CSharp, C++, Python, Pascal e VB6
    e i link per arrivarci sono nel messaggio precedente.

    32 e 64 bit
    ———————————————————————————————–
    Ti ricordo di fare attenzione alla nota sui 32 e 64 bit del messaggio precedente
    nel caso ti fosse sfuggita.

    in risposta a: Richiesta aiuto interfacciamento theremino Matlab #24439
    theremino
    Amministratore del forum

    Sul nostro sito abbiamo pubblicato molti esempi di lettura e scrittura dei MemoryMappedFile in vari linguaggi tra cui anche il C++

    Li trovi qui:
    https://www.theremino.com/downloads/foundations#easyslot

    E anche qui:
    https://www.theremino.com/downloads/foundations#mmf

    Ma c’è anche un’altra cosa che devi considerare:
    1) I MemoryMappedFile cui accedono le app a 32 bit non sono gli stessi a cui accedono la app s 64 bit (casini di Windows e di SysWow64 ecc…)
    2) Noi dobbiamo fare tutte le nostre applicazioni a 32 bit altrimenti dovremmo darle in due versioni, ma peggio ancora nessuno con i tablet e i mini pc potrebbe usarle.
    3) Di conseguenza la tua app devi compilarla a 32 bit altrimenti non vede i MMF giusti, se li crea lei al volo e legge solo zeri.

    in risposta a: Richiesta aiuto interfacciamento theremino Matlab #24426
    theremino
    Amministratore del forum

    Tutte le applicazioni thereminiche scrivono i valori negli Slot, quindi anche il sismografo lo fa.
    Gli Slot sono valori Float (4 byte) nel file mappato in memoria che si chiama “Theremino1”
    I “Memory mapped file” sono file del sistema Windows e tutte le loro particolarità sono ben spiegate da Microsoft.

    Per cui a questo punto il problema non è tanto nostro (del sistema theremino) ma di Mathlab.
    Se MathLab può leggere i MemoryMappedFile di Windows allora sei a posto.
    Se non li può leggere allora noi non possiamo fare nulla per aiutarlo.

    Mi spiace ma non so dirti altro su MathLab, noi utilizziamo solo applicazioni OpenSource e MathLab non lo è.

    in risposta a: Richiesta di aiuto #24115
    theremino
    Amministratore del forum

    Se hai un’oretta di tempo chiamami su Skype (dalle 09 alle 19 anche festivi) e ti faccio vedere come fare.
    Da li in poi potrai fare tutto da solo, ad esempio cambiare soni e video ma anche farlo parlare o emettere delle note musicali ecc….

Stai visualizzando 8 post - dal 1 a 8 (di 160 totali)
VOTO