Entradas

Mostrando las entradas con la etiqueta PulseView

Sigrok - Custom Protocol Decoder

Imagen
En los próximos meses estaré usando unos IC de Texas Instruments que se configuran por SPI, y seguramente tendré que debuggear la comunicación SPI entre el PSoC y los IC con el analizador lógico (LA) y Sigrok-cli o Pulseview, pero me da pereza aprenderme los comandos y las direcciones de los registros para saber a que registro le estoy escribiendo/leyendo. Así que se me ocurrió hacer un PD (Protocol Decoder) para estos IC, asi puedo aprender a hacer los PDs y además aprender Python. Iré añadiendo al post las cosas que vaya haciendo y aprendiendo. Primero tenemos que leer la documentación que nos da Sigrok: Protocol decoder HOWTO Protocol decoder API  Además podemos checar el código de los PDs que trae sigrok-cli o Pulseview, el código fuente esta disponible aquí. Introducción Todos los PDs son escritos en Python (>= 3.0) Archivos Para empezar debemos de crear una carpeta nueva dentro del directorio decoders que esta dentro del directorio libsigrokdecode , esta c...

'Limpiar' registros de STATUS con DMA en PSoC 5LP

Imagen
En ocasiones cuando queremos usar las señales generadas por interrupciones de los bloques digitales de PSoC tenemos que leer los registros de STATUS de dicha interrupción para 'limpiar' ese flag. Esto lo podemos hacer usando interrupciones,  que dentro de su rutina no hagan nada mas que leer el registro STATUS de la interrupcion, sin embargo las interrupciones tienen latencia y usamos el CPU para atenderlas. En la imagen de abajo podemos ver como se implementaria la lectura del registro de STATUS de las interrupciones del Tx de un bloque SPI Master, la interrupción se genera al mandar un byte/word por el pin MOSI. Usamos el componente isr para activar la interrupcion con un flanco ascendente. y dentro de nuestro main: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <project.h> #include "cyapicallbacks.h" int main () { CyGlobalIntEnable; isr_Tx_Start(); SPI_Start(); CyDelay( 2500...

Actualización Pulseview y Sigrok-Cli

Imagen
Gran noticia, la versión 0.4.0 de Pulseview ya permite guardar las sesiones en el OS Windows para trabajar con ellas posteriormente, además que con el analizador lógico clon se puede ya samplear a 24MHz, lo unico que no pude guardar es el decoder y su configuración pero es lo de menos, además los canales tienen un color tenue que permite diferenciar entre ellos. No he checado lo nuevo en Sigrok-Cli pero pinta bien. Proximamente van a liberar la version 1.0 de ambas herramientas. Puedes descargar los instaladores (nightly builds) de Pulseview y Sigrok-Cli Dejo una captura de pantalla de unas pruebas del SPI de PSoC 5LP. Pruebas del SPI Master en PSoC 5LP

PSoC5LP Usando el SAR ADC y la señal EoS para manejar una LUT

Imagen
En esta ocación añadi el LUT ya que nunca habia trabajado con el, sin embargo es fácil de usar, no tiene configuración por software, la configuración por hardware quedo de la siguiente manera: La LUT tiene dos entradas y dos salidas, cuando en la entrada in0 e in1 hay dos ceros logicos obtenemos en la salida out0 un uno lógico y en out1 otro uno lógico, etc., es decir, cambie el orden de escaneo, comenzando por el canal 3 del AMuxHw y descendiendo hasta el canal 0, pero pudo haber sido cualquier otro orden. El esquematico final quedo de la siguiente manera: Y el main quedo igual que el post pasado, solo configuramos el ADC: /* ======================================== * * PoC: Driving Multiple ADC inputs with no * SW involved. * * ======================================== */ #include int main() { CyGlobalIntEnable; /* Enable global interrupts. */ ADC_Start(); for(;;) { /* Place your application code here. */ } } Las capturas del analizador ...

PoC - Controlar un AMux con la señal EoS del SAR ADC PSoC5LP

Imagen
El proposito de este proyecto es controlar las entradas del AMuxHw empleando solamente señales generadas por el hardware interno del PSoC5LP. En este caso lo hice usando una señal que veo poco en los foros de Cypress, es el EoS (End of Sample), cuando esta señal presenta un flanco de subida nos indica que el canal del ADC fue sampleado, pero ¿Por que no usar la señal EoC (End of Convertion)?, como su nombre lo indica, el EoC presenta un flanco de subida cuando la conversion fue terminada, es decir el valor analogo presente en el pin del ADC fue convertido a su valor binario equivalente. Entonces ¿Por que usar el EoS?, como ya vimos la señal EoS presenta un flanco de subida cuando termino el sampleo del canal del ADC, es decir, la diferencia entre la señal EoC y EoS es el tiempo que tarda el ADC en la conversión de analogo a binario, con esto en mente, podemos cambiar la entrada del AMuxHw tenemos la señal EoS, esta entra a trabajar funcionando como clock para un BasicCounter q...