Entradas

Mostrando las entradas de 2016

Instalar GNU ARM Embedded Toolchain y usarla en PSoC Creator

Imagen
PSoC Creator viene con una toolchain por defecto, en la versión 4.0 de PSoC Creator la version del GNU ARM Embedded Toolchain es 4.9. En caso de que necesitemos usar una versión más reciente debemos de instalarla y señalarle a PSoC Creator el path de instalación. Los siguientes pasos los realice en Windows 10 (recordar que Creator solo funciona en Windows 😐 ). 1. Bajamos la versión del GNU ARM Embedded Toolchain que necesitamos de la siguiente página: GNU ARM Embedded Toolchain . (es bueno leer los cambios que tiene esta versión con respecto a versiones anteriores). 2. Lo instalamos como cualquier programa en windows. En mi caso NO lo agregue a las variables de entorno. 3. Abrimos PSoC Creator, vamos al menú Tools , elegimos la opción Options . Abrirá la siguiente ventana: Expandimos la opción Project Management y damos clic en ARM Toolchains, podemos ver la opción por defecto y en la caja de ARM GCC Generic damos clic en los tres puntos, debemos elegir el path de insta

Proyectos con FreeRTOS y STM32F4Discovery

Snippets de proyectos con FreeRTOS y la STM32F4Discovery. Todos los proyectos se van a realizar utilizando OpenSTM32 como IDE y la versión de FreeRTOS que tiene integrada (8.2). ☺ En este proyecto se usa el parametro pvParameter para indicarle a la tarea que LED togglear. Solo se tiene una tarea, y dos instancias de ella, diferenciándose por el pvParameter a la hora de crear las dos instancias. Aquí el código fuente (después lo organizare y subiré a github): 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #include <stdint.h> #include <stddef.h> #include "stm32f4xx.h" #include "FreeRTOS.h" #include "task.h" static void GPIOinit ( void ); static void vTaskToggleLED ( void * pvParameters); static const uint8_t toogleGreenLED =

PSoC 4S - CapSense ADC

Imagen
Los PSoC 4S no cuentan con un ADC per se, pero los ingenieros encontrarón una forma de utilizar los componentes que forman el bloque de CapSense como ADC, aunque es un tanto limitado, resolución de 8 o 10 bits, y corre hasta los ~11.6 ksps (kilo samples per second / miles de muestras por segundo) maximo. El primer problema que encontré es que para que funcione el CapSense ADC se tiene que añadir por lo menos un widget de CapSense (boton, slider, etc., acá perdemos un pin). Al principio trataba de usar este periférico sin crear widgets pero el programa se detenía al llamar la función _Start(), y este error se soluciona creando el widget. Otro problema que encontré es que en la versión 3.3 de PSoC Creator no esta incluida la documentación de las funciones del bloque ADC en el Datasheet del CapSense_ADC, hay que bajarlas de este link. Si como yo estas trabajando en PSoC Creator 4 este error ya fue corregido. El proyecto ejemplo será sencillo, el CapSense_ADC y una UART para imp

Qt Creator como IDE para desarrollo de proyectos con libopencm3 y PlatformIO.

Imagen
17 de Octubre 2016 Tengo que aprender a usar microcontroladores que no sean PSoC xD, así que intentaré aprender a usar los micros de ST, tengo la clásica STM32F4Discovery que tiene un Cortex M4. Por fortuna(?) esta soportada por el proyecto libopencm3 , así que vamos a aprovechar eso (también tengo que aprender a usar las HAL que provee ST xD, pero eso ira en otro post). PlatformIO es una herramienta que nos ayuda al desarrollo de proyectos y nos da soporte para el framework libopencm3 y como voy empezando usaré PlatformIO para ayudarme a ir aprendiendo a usar libopencm3, ya después se vera si puedo hacer proyectos solamente con libopencm3 (se puede usar como submodulo de git en proyectos que desarrollemos). Los pasos para la instalación de PlatformIO estan aqui . En mi caso para instalar PlatformIO: $ sudo -H pip2 install -U platformio Esto instala PlatformIO de forma global y como esta escrito en python2.7 tenemos que usar pip2. Y para terminar instalé las reg

Kit CY8CKIT-041-40XX

TODO Proyectos: Proyectos con PSoC 4s y SmartIO  

PSoC 4S - SmartIO

Este es el periferico que distingue a la familia 4S de las demás, además del nuevo CapSense. Proyectos ejemplo: Compuertas lógicas con SmartIO   Contador de 3bits Otras fuentes de información: (Excelente) Blog de Alan Hawse, ingeniero en Cypress Semiconductor: IoT Expert. Todos los proyectos estan en este repositorio de GitHub Saludos

Compuertas Lógicas con SmartIO

Imagen
 Compuertas Lógicas con SmartIO  Acá ire poniendo ejemplos sencillos de como implementar diferentes compuertas lógicas basicas con SmartIO. AND La placa que use para este ejemplo es la CY8CKIT-041-40XX que trae un CY8C4045AZI-S413, este PSoC pertenece a la nueva familia PSoC 4S, en especifico a la familia 4000S. En esta familia el periferico SmartIO solo esta presente en los puertos GPIO 2 y GPIO 3, para este ejemplo usaré el puerto GPIO 3 por que tengo disponible el LED rojo del kit en el pin 3[4]. LED RGB de Usuario en la 041 Hay que tener en cuenta que el LED rojo prende cuando "escribimos" un 0 logico en el pin que lo maneja. ¿Que hara el SmartIO? El LED rojo va a prender solo cuando dos pulsadores externos sean presionados al mismo tiempo, equivalente a una compuerta AND, y estara apagado cuando no este presionado ningun pulsador o solo uno este presionado. Comenzamos con un proyecto nuevo y arrastramos el SmartIO al esquematico. Vamos a utilizar el pin 4

Instalar IPython en Windows

Para instalar IPython (para usarlo en python 3) en Windows, estando en la linea de comandos ejecutar: > py -3 -m pip install ipython

Actualizar PPA de arm-none-eabi-* en Ubuntu

Me di cuenta que el PPA de arm-none-eabi mantenido por Terry Guo no se actualizaba, siempre se quedó en la versión 4.9, en el AUR de Arch ya andaban por el 6, y en Ubuntu algunas personas tenían del 5.4. Investigando solo un poco encontré esta página: GNU ARM Embedded Toolchain , que es donde ahora se mantiene el PPA. Ahora el PPA que hay que instalar (si quieres dejar el 4.9 y pasar a > 5) es: team- gcc-arm- embedded/ ppa. Los pasos para actualizar están descritos en el siguiente post:  New PPA repository . Los dejo aqui debajo por si no quieren abrir otra pestaña para verlos: Paso 1: En la terminal de Ubuntu:               "sudo add-apt-repository ppa:team- gcc-arm- embedded/ ppa"               para agregar el nuevo PPA Paso 2: Después ejecutamos el siguiente comando "sudo add-apt-repository -r ppa:terry. guo/gcc- arm-embedded"               para remover el antiguo PPA (el de Terry) Paso 3: Luego el siguiente comando "sudo apt-get update&q

PSoC 4M DMA Periferico a Periferico Ej. 1

Imagen
Recien me llego una tarjeta de desarrollo de Cypress, la  CY8CKIT-043 que trae un PSoC 4200M. Lo primero que hice fue actualizar la versión de KitProg que trae de fabrica, esto se hace con el PSoC Programmer. Despues cree un proyecto nuevo, elegi el dispositivo que trae la placa, que es el CY8C4247ZI-M485. Este proyecto lee una entrada analogica con el ADC , y manda el resultado al compare value de un bloque PWM , ya lo habia  hecho con un PSoC 5LP, pero el componente DMA es muy diferente entre estas dos familias. Primero implemento el esquematico: Esquematico El ADC esta configurado con resolución de 8bits, sampleo continuo, rango Vss - Vdda (0 - 5V), el sample rate lo deje en 1000 que es lo más bajo que acepta el componente, terminal single y no differential, la configuración completa se puede ver en la siguiente imagen. Configuración 1 del ADC El ADC es de 12bits de resolución, pero se puede cambiar a 8bits o 10bits (indicado en la opción Alternate resolution

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.com/arachnidla

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 carpe

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