Entradas

Git

(Aca pondré comandos que me han servido y para que me sirvieron xD) Actualizar repositorio remoto a partir de cambios en el .gitignore Habia incluido archivos temporales en un repositorio en el commit inicial, me di cuenta despues de pushearlo al remoto, intenté arreglar el .gitignore sin darme cuenta que no era posible de esa forma, asi que encontré esta pregunta en StackOverflow, el comando que use para remover los archivos temporales a partir del .gitignore es: git rm --cached `git ls-files -i -X .gitignore` Clic en intro y me notifico que se borraran del repositorio los archivos con la extencion que le indique en el gitignore, despues hice un commit y al final push :D. Clonar un PR   Quería comprobar el funcionamiento de un PR en este repositorio:  arachnidlabs/cyflash Tenemos que identificar el número del PR, en mi caso quería checar el #6 Despues nos vamos a donde queremos clonar el repositorio y hacemos >  git clone https://github....

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...

PSoC y DMA

DMA en PSoC Este es el indice de una serie de posts donde voy a utilizar el DMA en PSoC. Conceptos básicos TODO DMA en PSoC 5 LP TODO DMA en PSoC 4 M/L TODO Transferencia memoria - memoria TODO Transferencia memoria - periferico TODO Transferencia periferico - memoria TODO Transferencia periferico - periferico TODO Métodos de transferencia de datos. TODO Single TD (Un solo TD) Chained TD (TDs en cadena) Indexed TD (TDs indexados) Ping pong DMA  Scatter Gather Nested DMA Ejemplos: PSoC 5LP Periferico a Periferico: ADC - PWM   Limpiar STATUS registers con DMA PSoC 4M   Periferico a Periferico: ADC -> PWM   PSoC 4L  TODO

PSoC 5LP DMA Periferico a Periferico Ej. 1

Imagen
Que tal, en este post vamos a utilizar el DMA que tiene el PSoC 5LP para enviar datos del resultado de la conversión del ADC al PWM, en especifico al valor cmp. Podemos ver el resultado del proyecto en el siguiente video: Podemos ver que sirve perfectamente, excepto cuando llegamos a ambos extremos del potenciometro, la razón la veremos al final del post. Primero creamos un nuevo proyecto en PSoC Creator y le damos el nombre que queramos. Colocamos uno a uno los componentes, los componentes que utilizamos es: ADC Delta - Sigma Clock Pin analogico Pin Digital de salida PWM DMA Los conectamos de la siguiente forma: Esquematico La configuración de cada componente la vemos a continuación: El ADC esta configurado con una resolución de 8bits, de forma continua, con el sample rate mas bajo, aqui no nos interesa la velocidad, el rango de entrada esta entre Vssa y Vdda, en el caso de la tarjeta 059 Vdda esta conectado a 5V. Configuración ADC El PWM esta con...

'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

PSoC Creator Custom Component - Localización en el Catálogo de Componentes

Imagen
Cuando tenemos listo el simbolo de nuestro componente custom podemos definir su locación en el catálogo de componentes de PSoC Creator de manera fácil. Lo primero es tener listo nuestro simbolo, teniendolo listo damos clic derecho sobre cualquier espacio en blanco del simbolo y elegimos la opción Properties . Simbolo del componente custom Clic derecho -> Properties  Nos aparecerá una ventana, en ella podemos ver varias opciones que nos serán útiles en el futuro, por ahora solo no interesa Catalog Placement (Localización en el catalogo) damos clic en los tres puntos para abrir otra ventana. Catalog Placement (Localización en el catalogo) En la ventana que nos aparece definiremos el lugar en el catalogo donde se va a colocar nuestro componente custom. Primero definimos el nombre del tab donde se va a colocar el componente, en este caso le nombre Community, despues colocamos una diagonal / y la palabra que sigue es el nombre de la carpeta donde se va a colocar...