PSoC® 1. Cursos de los módulos

Pues no he trabajo con el, pero consulté con un profesor la forma de configurar los operacionales para que fuera un PID análogo y no emulando uno digital....

En Cypress hay una nota de aplicación caopacitancias conmutadas,,,
http://www.psocdeveloper.com/uploads/tx_piapappnote/an2041.pdf

alllí se explica como generar un integrador con capacitancias conmutadas...
El profer me dice que la clave es saber rotuear los bloques y que hay sale...

sería que miraramos cómo lo sacamos con eso, peroesa sería la base...
 
Bueno aqui tenemos dos entregas reunidas, una recomendación: es indispensable que que habran el proyecto y vean el codigo escrito allí ya que estos ejemplos los he probado todos y funcionan pero mas que todo lo digo porque en el pdf yo no escribo todo el codigo de ejemplo para no gastar espacio por eso les recomiendo que vean el codigo completo en el proyecto.

Ojala no me demore con la siguiente entrega, pero les digo la verdad, esta no va a ser cercana tengo cosas pendientes pero hay poco a poco lograremos sacar el minitutorial; es que escribir no es tan facil como algunos creen ;).
 

Adjuntos

  • Cap2 Completo.rar
    879.3 KB · Visitas: 404
  • Cap3 Completo.rar
    607.4 KB · Visitas: 329
ola a todos soy nuevo por aca quisiera trabajar con los psoc para mi trabajo de grado el cual consiste en implementar un amplificador tobera obturador, y para ello necesito un sensor de presion mpx2200ap o mpx5700ap, y en la adquisicion utilizare el CY8C29466-24PXI, espero tener bueno resultados para subirlos.
 
Alguien me puede explicar el porque necesito una PGA para hacer funcionar los ADC?

Y gracias rednaxela muy bueno tu primer capitulo, leeré los otros dos.
 
@rednaxela, tu nos podrías informar algunas cosas más de la configuración del micro, como los diferentes modos o estados que pueden tener los pines del micro, su función

Que pena no me fije y hasta ahora me di cuenta de este comentario:eek:, luego especificamente que quieres preguntar ya que las opciones son diversas es muy versatil los pines de in/out

Alguien me puede explicar el porque necesito una PGA para hacer funcionar los ADC?
Bueno no es obligatorio utilizar la PGA solo es acople, no me acuerdo pero hay una nota de aplicacion en cypress donde se dice como utilizar el ADC sin la PGA, pero lo clave es colocar el módulo ADC en los blques SC (switch capacitor) y dan las opciones de una "entrada directa". prueba porque no mas lo hice una vez hace mucho y no tengo suficiente pruebas para decirte esto.
 
Última edición:
hola a todos... alguno de ustedes ha utilizado el conversor sigma delta para que me ayuden con una dudita que tengo....

no se como hago para que el dato retornado de este sea unsigned y no signed como el normalemente lo retorna, en el datasheet dice que hay que utilizar una funcion llamada DataFormatDelSig_fIsDataAvailable() , la cual no explican muy bien y no se como utilizar, cualquier informacion que tengan sobre este conversor si me la puden pasar se los agradezco...
 
Hola
primero debes considerar que el conversor delsigma entrega un dato correcto de conversion cada 3 ciclos, por lo cual lo primero que debes hacer es capturar el tercer dato y no los 2 primeros.

saludos

jedota

Alguien me puede explicar el porque necesito una PGA para hacer funcionar los ADC?

Y gracias rednaxela muy bueno tu primer capitulo, leeré los otros dos.
Hola
el Pga es un amplificador de ganacia variable, el cual actua como comparador o amplificador de acuerdo a la seleccion de AGND o VSS, en el caso de un adc se utiliza como buffer (factor de amplificacion de 1) con la finalidad de adaptar la impedenacia de la señal de entrada y eliminar un poco de ruido el cual efecta tu resultado final de conversion.
el utilizarlo o no depende de la magnitud de la señal a utilizar me refiero si trabajas en magnitudes de milivolt la señal se mezcla con el ruido.

saludos

jedota
 
Última edición:
Rednaxela.....

Quisiera saber que diferencia hay al modificar la opción Drive de los pines entre las opciones que hay:

High Z Analog
High Z
Open Drain high
Open Drain Low
Pull down
Pull up
Strong
Strong slow

Las únicas que conozco son High Z y Strong...

Agradezco tu tiempo y colaboración.
 
Estas opciones como mencionas son los driver que dispone el PSoC ya sea para "sacar" al mundo exterior la señal o para las entrada de señales, entre ellas como dices estan:

-High Z Analog(alta impedancia análoga): Se utiliza cuando se trabaja con señales que varían en el tiempo(señales análogas). Driver de entrada.
-High Z(alta impedancia):Se utiliza cuando se trabaja con señales DC. Driver de entrada.
-Open Drain high(colecto abierto alto,sin lo comparamos con bjt): Se utiliza cuando se desea suministrar una gran cantidad de corriente, la carga se coloca entre el pin de salida y VCC. Driver de salida.
-Open Drain low(colecto abierto bajo) :Lo mismo que el anterior pero la carga va desde el pin de salida y GND. Driver de salida.
-Pull down _ Pull up: No se como explicarlo pero la mejor comparación es como cuando conectamos un Dip-switch como Pull down o Pull up. Driver de entrada.
-Strong: Se utiliza como salida digital y la carga se conecta directamente al pin de salida. Driver de salida.
-Strong slow: Esta si no se, lo seguro es que es driver de salida.

Para mayor información mirar aquí.

Saludos.;)

//****************************************************************************
Ahora les traigo una pequeña rutina para leer un teclado matricial 4*4, en la foto se puede ver su conexión por el puerto 1 los cuatro primero bits se configuran como salida y los cuatro últimos como entrada.

Se agrega el archivo de cabecera "tecla_y_lcd.h" al main.c, y al proyecto copiar los dos archivos que estan adjuntos aquí.

No olvidar que las resistencias se colocan desde los pines de las filas (cuatro últimos bits del puerto 1) dirigidas a GND como cualquier teclado.
 

Adjuntos

  • Tecla_y_lcd.rar
    1.2 KB · Visitas: 287
  • conexion.GIF
    conexion.GIF
    10 KB · Visitas: 135
  • GPIO.GIF
    GPIO.GIF
    6.1 KB · Visitas: 105
Última edición:
Hola que tal gente quiero hacer pasar la salida de PWM por un PGA con ganacia 1 ya que con mas no se podria de ninguna manera y no puedo hacerlo alguien sabe como hacer Saludosy muchas gracias.
 
Quetal... primero que todo muchas gracias a rednaxela por sus excelentes aportes, y a los demas por su colaboracion.

En esta ocasion estoy implementando un tarificador telefonico si interfaz al pc solo uso las entradas del MT8870 "DTMF" para identificar los numeros marcados; pero tengo varias inquietudes con respecto al temporizador "en tiempo real de minutos" ; y tambien tengo una duda que puede soñar tonta pero no he podido ingresar una cadena de caracteres seguidos a la lcd pues usando el \n se desplaza una columna, pero como el lcd position (1,0) le da una posicion este sobreescribe los numeros sobre la misma columna.


Gracias por su colaboraciòn
 
... no he podido ingresar una cadena de caracteres seguidos a la lcd pues usando el \n se desplaza una columna, pero como el lcd position (1,0) le da una posicion este sobreescribe los numeros sobre la misma columna.
No entiendo mucho que es lo que quieres, es que para leer soy malo :D.... mejor explicanos un poco más el problema que tienes y haber si le damos solución.
Saludos;)
 
Bien gracias por tu intgeres rednaxela; te explico:

Estoy implementando un tarificador telefonico sin interfaz al pc con un psoc 29466 y una LCD 16X2, este consiste en que cuando el usuario marque el numero telefonico, lo vea publicado en la LCD, esto se hace con la ayuda de un DTMF el integrado "MT8870", al cual se conecta la linea y este da una salida de las teclas en cuatro bits, estas salidas se conectan al psoc, la idea es que tan pronto le contesten al usuario, este pulse una tecla podria ser la tecla "*", que inicie el conteo de los minutos en tiempo real. " no se inicia el conteo automaticamente porque es muy engorroso tendria que implementar un comparador de voltaje y la linea tendria que tener activada la inversion de polaridad.


Debo decir que tengo un conocimiento basico de psoc yhe implentado varios proyectos, el primer inconveniente que esncontre es que no puedo ingresar todo el numero telefonico de corrido, pues tan pronto ingreso una tecla se borra la anterior, es decir qu se sobreescribe, el programa lo hice usando unos condicionales if de los puertos o un switch case, y los numeros efectivamente salen publicados pero no de corrido. ejem "312 4567890"

El otro inconveniente que tengo es con el temporizador de minutos en tiempo real creo que es una operacion con los cristales pero no la tengo muy clara.

Gracias por tu ayuda, este es un proyecto didactico, pues lo he visto implementado con otros micros y me parecio interesante hacerlo con psoc.
 
hola a todos...
hacia un tiempo q no visitaba el post y veo q han avanzado bastante, felicitaciones rednaxela por tus avances,,,
tengo una duda acerca del ejemplo que dejaste en el capitulo dos,,,, ya que me vota error y creo q cuando intente realizar a interrupcion era el mismo..

Generating Timer project...

Starting MAKE...
creating project.mk
lib/psocconfig.asm
lib/psocconfigtbl.asm
lib/timer8_1.asm
lib/timer8_2.asm
lib/timer8_3.asm
lib/timer8_4.asm
lib/timer8_4int.asm
./boot.asm
./main.c
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(22): illegal character `@'
!W D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(22):[warning] declaring a function without parameter prototypes may cause runtime errors.
If there is no parameter, use <function name>(void);
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(22): syntax error; found `48' expecting `;'
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(22): unrecognized declaration
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(22): unrecognized declaration
!W D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(25):[warning] declaring a function without parameter prototypes may cause runtime errors.
If there is no parameter, use <function name>(void);
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(25): redeclaration of `Timer8_4_DisableInt' previously declared at D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\lib\Timer8_4.h(41)
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): syntax error; found `=' expecting `)'
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): redeclaration of `PRT1DR' previously declared at C:\ARCHIV~1\Cypress\Common\CYPRES~3\tools\include\CY8C29~1\m8c.h(82)
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): IO port variable 'PRT1DR' cannot have initializer
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): syntax error; found `=' expecting `;'
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): skipping `='
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): syntax error; found `1' expecting `)'
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): missing identifier
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): syntax error; found `1' expecting `;'
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): unrecognized declaration
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): unrecognized declaration
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): unrecognized declaration
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): unrecognized declaration
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): unrecognized declaration
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): syntax error; found `&' expecting `)'
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): syntax error; found `&' expecting `;'
!E D:\DOCUME~1\INGELE~1\G_INVE~1\PsoC\CAP2CO~1\Timer\Timer\Timer\main.c(26): too many errors

C:\ARCHIV~1\Cypress\Common\CYPRES~3\tools\make: *** [obj/main.o] Error 1

Timer - 22 error(s) 2 warning(s) 21:38:13
no se que sera, segui los pasos q diste... y ademas corri tu ejemplo y ninguno...

gracias de antemano
 
Bien, también yo hace mucho no venía por acá, sabes que creo, mirando los errores lo que dice es que no reconoce el carácter '@', generalmente eso se debe a que el compilador que yo utilizo es el "HI-TECH" este compilador ubica los vectores con direcciones en las llamadas de funciones, a lo mejor tu estas utilizando otro compilador como el "ImageCraft", el cual no necesita la dirección, entonces quilate la '@' y la dirección de la interrupción que viene y eso creo que pueda ser la solución.

y ademas corri tu ejemplo y ninguno...
con eso estoy casi seguro que utilizas un compilador distinto al que yo uso :)
Saludos.
 
Última edición:
Atrás
Arriba