Forum Replies Created
-
AuthorPosts
-
theremino
KeymasterCiao,
per ora l’unica cosa che ho notato e che potrebbe causare problemi è il tipo di modulo TTGO.
Noi abbiamo definito che i migliori erano i Pico KIT e consigliato di usare quelli
e quindi gli altri modelli li abbiamo provati poco e ci siamo fidati delle informazioni scritte da loro.Però in effetti da quello che dici sembra essere l’ADC24 a non andare.
Ne puoi provare un altro ?Sei in contatto con Lello? Solo Lello ha usato spesso i TTGO.
Magari fatti mandare subito un altro ADC24 per vedere se il tuo non funziona.
Oppure prova a controllare con una lente i resistori da 100 ohm dei due pin che non vanno, potrebbero essere saldati male (solo da un lato).Se non riesci scrivimi e cercheremo altro.
ciao
Liviotheremino
KeymasterFor earthquakes they would be fine too 10 ms or more.
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.
theremino
KeymasterSe li usi contemporaneamente ciascuno scambia come fosse da solo, non si rallentano a vicenda.
Però lo ESP32 su WiFi va anche meno del Master, gives 300 a 600 circa a seconda del segnale WiFi e della velocità del PCSe 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 , perhaps 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 valoreIl 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).theremino
KeymasterThe speed of “exchange” 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 exchanges per second.Per mandare più campioni li si dovrebbero mandare in “batch” cioè accumularli nel micro e poi mandarne decine o centinaia ad ogni scambio.
Ma, I'm sorry, 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)
theremino
KeymasterPuoi 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#developmentPerò 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#startertheremino
KeymasterAnnouncements?
You managed to read?Rispondo alle domande che avevo trascurato:
DOMANDE
———————————————————————————————-
I valori float come sono ordinati nel file? Sequenzialmente dallo slot 1 on?
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 (more 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 999La 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.theremino
KeymasterSul 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#easyslotE anche qui:
https://www.theremino.com/downloads/foundations#mmfMa 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.theremino
KeymasterTutte 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 è.
-
AuthorPosts