Entradas

Hardware FSM PSoC 4

Imagen
Este es un proyecto basado en una FSM que vi hace unos años, esta implementada con solo HW (hardware) usando unos Community Components que encontré en el foro de Cypress, en concreto los FlipFlops,  aquí los puedes obtener. Esta es la (famosa jaja) FSM que implemente, es una maquina dispensadora de refrescos: En el estado 000 se ilumina el led conectado a la salida de Sol.Mon. (Solicita moneda), cuando la entrada M este en '1' pasa al estado 001 si esta en '0' se quedara haciendo un loop en el estado 000, estando ya en el estado 001 dependemos de la entrada MP, si esta en '1' regresa al estado 000, si esta en '0' pasa al estado 010, estando en el estado 010 checamos la entrada EP (equal price = las monedas suman el precio del refresco), si EP esta en '1' pasa al estado 011 (Se ilumina el led conectado a al pin SIRVE), esperamos a que la entrada MS este en '1' para limpiar la maquina (Se ilumina el led conectado a la salida CLR)...

The first ARM processor in the world with Sophie Wilson

Imagen

sprintf en PSoC Creator 3.0 y 3.1

Imagen
Esta función nos ayuda a convertir un dato entero en un string, para después poder imprimirlo con la funcion UART_UartPutString. Para poder usar sprintf  tenemos que añadir primero el header de stdio: #include <stdio.h> Luego si estas en Creator 3.0 Das click derecho en el proyecto. Build Settings ARM GCC Linker Command Line y añades -u_printf_float aplicas y esta listo -u_printf_float en el Command Line Si estas en Creator 3.1 hay un paso adicional descrito en este post en los foros de Cypress. (Por defecto  -u_printf_float ya esta incluido en la newlib-nano Float Formatting del Linker)  Tenemos que incrementar el heap size del proyecto: .cydwr System Heap Size(byte). Por defecto esta en 0x80, lo cambiamos a 0x200 y ya podremos usar el sprintf !! Heap Size por defecto Nuevo Heap Size Informacion sacada de Digitalprojectsudistrital y el foro de Cypress Un video de su aplicacion: ...

Clock on PSoC 4 digital output pin

Imagen
Tratando de hacer una FSM me di cuenta que no podia poner una señal de Clock directamente en un pin digital de salida en un PSoC 4 (al menos no como pense que podia hacerse). La solución la encontre en este post de hace dos años :| . Y el resultado final queda asi:

PSoC Maker Google Hangout

Imagen

Lab 8, Shape the World "SwitchLEDInterface"

En este Lab se hizo un ejemplo de una alarma, en mi caso recicle codigo que habia usado en los labs anteriores. El jueves pasado (Febrero 19) subieron una noticia, diciendo que este Lab8 y el Lab10 no activarian el scope y daban algunos pasos para poder agregarlo en dichos Labs, esto me dio problemas ya que las funciones del Timer4 no estaban implementadas dentro de una funcion que debiamos de invocar (TExaS_Scope();), asi que no la agregue, al final no influyo en el grader. Los pasos que tenia que seguir el sistema son: • Hacer PE1 salida y PE0 entrada. • Iniciar con el LED encendido (PE1 = 1). • Esperar 100 ms • Al presionar un switch (en mi caso lo llame boton, ubicado en PE0) toggleara el LED ubicado en PE1 cada 100ms. • Repetir los pasos 3 y 4 una y otra vez. Este es parte del codigo (las declaraciones de las funciones estan afuera del main), no era muy dificil, pero por no poder estudiar entre semana se me olvidaron algunas cosas XD. int main(void){ //********...

Lab 7, Shape the World

En el laboratorio numero 7 del curso en linea de TI "Shape the World" seguimos haciendo uso de delays, leds y el switch con los que cuenta la placa. La función para generar el delay me causo problemas, aun ignoro el porque, para hacerla funcionar la borre y escribi exactamente lo mismo -.-. Con este codigo obtuve los 45/45 puntos en la simulacion del laboratorio, no lo pude checar en el hardware real ya que no tengo la placa. // 0.Documentation Section // Lab7_HeartBlock, main.c // Runs on LM4F120 or TM4C123 LaunchPad // Input from PF4(SW1) is AS (atrial sensor), // Output to PF3, Green LED, is Ready, // Output to PF1, Red LED, is VT (ventricular trigger) // Make PF4 input, PF3,PF1 output // Initialize Ready to high and VT to low // Repeat this sequence of operation over and over // 1) Wait for AS to fall (touch SW1 switch) // 2) Clear Ready low // 3) Wait 10ms (debounces the switch) // 4) Wait for AS to rise (release SW1) // 5) Wait 250ms (simulates the time b...