Buenas a todos! ya tengo el primer boceto del juguete.
Me ha dado más problemas de los que pensaba el tema de la GPU, de momento sólo proceso la FFT por la GPU para que no sobrecargue mucho pero las ventanas las calculo algorítmicamente. Cuando juguemos un poco con ello y definamos bien por donde tirar si vemos que puede ser interesante la herramienta ya iré optimizando esas cosas, de momento va bastante bien.
Como es un primer prototipo puede haber errores de situaciones no controladas (por ejemplo me acabo de dar cuenta que no he controlado si desconectas mal la placa, si se queda tonto como es web con refrescar la página suficiente.
Tenéis que probarlo en chrome o chromium (u otro navegador basado en chrome) en firefox se puede pero activando funciones experimentales y es más rollo ( Chromium ya ha hecho estable el api del estandar de webserial así que es fantástico porque no hay que hacer nada especial.
El funcionamiento es muy sencillo, conectamos la placa por usb y damos al botón Load serial ports, saldrá un mensaje del navegador que nos permitirá seleccionar el puerto usb en cuestión. Con la alhambra es un poco jaleo porque a mi al menos el puerto serie el ftdi me lo va bailando cuando enchufo y desenchufo, y luego cuidado porque un puerto usb de la alhambra tiene dos uarts y opr ende teneis que seleccionar cual es.
Esto si avanzamos con el analizador lógico y con esta herramienta ya estableceremos un protocolo que permita autodetectar el puerto correcto, de momento en el peor de los casos tenéis que probar un par de veces.
No hace falta decir que al herramienta vale para cualquier placa, pronto probaremos la icecream ;)
Por si queréis implementar vuestro conector, ahora mismo la aplicaicón trbaaja con 16 bits de datos, pero la transmisión es a 1.5Mbps a 8 bits (he reutilizao bloques por hacer pruebas rápido y lo tenía así montado de otra cosa pero mejoraremos esto). Lo que hay que hacer es mandar primero el byte más significativo y luego el menos significativo.
Os adjunto un .ice que he usado para probar con el bloque de Obijuan y una uart serie que ando trabajando para el analizador lógico pero está verde aún aunque para esto me ha permitido probarlo rápido.
Demócrito si te animas mete el bloque que has hecho de Jesús y probamos.
Mañana prepararé un ejemplo instanciando diréctamente el código de Jesús, y os documentaré el proceso y así Demócrito si te animas montas tu el segundo ADC.
En este ejemplo símplemente se muestre a 400Hzpor el canal 0. Lo que sí he puesto un reset en el botón SW2, es decir si lo probáis hay que pulsar el botón 2 para que empiece a enviar datos. yo he hecho pruebas con un generador de señal a pocos herzios (1,2, ....20..) para poder ver bien la señal y demás.
- Sobre la interfaz quiero mejorar unas cosillas y os preparé un pequeño tutorial aunque si jugais un poco es ultra sencilla, lo que he preparado par aeste primer prototipo:
- 1) Freeze, como es tiempo real, esto permite congelar la visualización para hacer zooms, pan, etc, veréis que podeis volver a darle a continuar y retoma donde vaya en ese momento en tiempo real.
- 2) Meausure, en estado Freeze podeis pinchar en la gráfica y medir, es muy tosco pero funcional, un click fijais el inicio de la medida, siguientes clicks redimensionan la ventana, luego le dais a stop measure y la medida queda fijada, el valor aparece debajo de la gráfica con un check por si queréis borrarla. podeis crear todas la medidas que querais.
- 3)zoom, pan.... hay que mejorar sobre todo el zoom pero es bastante funcional.
- 4) FFT entiempo real
- 5) Escala logarítmica o lineal de la fft
- 6) Ventanas de Hann, Hamming, Flat-top, exponencial y Kaiser-Bessel, Jesús si hay alguna otra que pueda merecer la pena la implemento en un momento.
- 7) si haceis freeze la fft se calcula sobre lo que se vea, es decir si hacéis zoom se recalcula con lo que estais viendo. Ahora mismo se está implementando una FFT de 4096 muestras (en tiempo real se calculas las últimas 4096).
Más o menos es todo, aquí os dejo un vídeo que he colgado en funcionamiento:
Y lo más importante, el enlace! (por cierto hay que buscarle un nombre a esto):
Espero que os guste!! y abrimos debate de si es interesante , funcionalidades etc (si os interesa claro).
Un fuerte abrazo!
PD: Os adjunto el .bin por si alguien quiere tostarlo en la Alhambra sin icestudio.