3 Replies Latest reply on Dec 8, 2012 12:36 AM by AbhishekK_31

    Problem whit PSOC1 ADCINC and LM35


       Hi, I'm starting to program in PSOC and I have problem with the ADCINC, I made a program for read a LM35, but when i conected it, to psoc it only read cero, if a remplace with a pot i can see the variation, i have been searching a explain but i cant found it. I hope that you can help me. I anex the code. excuse me for me redaction y and the coments in spanish.




      #include <m8c.h>        // part specific constants and macros


      #include "PSoCAPI.h"    // PSoC API definitions for all User Modules


      #include "stdlib.h"     //incluimos la libreria para conversiones


      #include "delay.h"      //incluimos la libreria para retardos


      #include "string.h"     //incluimos libreria para punto flotante


      #define _FTOA_TOO_LARGE -2


      #define _FTOA_TOO_SMALL -1




      /*El programa realizará una conversion analogica a digital para detectar temperatura mediante un sensor LM35


      y visualizarlo posteriormente mediante un LCD con barra grafica. 




      ADCINC:                                 PGA:


      DataFormat: UnSigned.                  Gain:  1.00


      Resolucion: 10bits.                  Input: AnalogComun_InputMUX_0


      Data Clock: VC1(2MHz).               Reference: VSS


      ClockPhase: Normal.                  AnalogBug: Disable


      PosInput:   ACB00


      NegInput:   --


      NegInputGain:  Disconected.














      Hoja de datas del ADCINC


      Hoja de datos del PGA


      Hoja de datos lenguaje C








      //                           CONDICIONES GLOBALES






      char*flotante;          //puntero para el punto flotante


      int valor;              //entero para almacenar valores


      float temperatura;          //flotante para generar voltaje


      int estado;             //estado de comparacion para el flotante




      //                           Codigo de Programacion






      void main(void)




      M8C_EnableGInt ;   //Abilitamos interrupciones globales.


      LCD_Start();           //inicializamos la LCD


      PGA_Start(3);           //iniciamos el PGA e indicamos que opera con potencia alta (3=PGA_HIGHPOWER)


      ADCINC_Start(3);       //iniciamos el ADCINC e indicamos que opera con potencia alta (3=ADCINC_HIGHPOWER)


      ADCINC_GetSamples(0);       //indicamos que el ADC registra muestras continuas. 


      LCD_InitBG(LCD_SOLID_BG);   //inicializamos la barra grafica con lineas




      while(1){               //iniciamos el bucle infinito


      LCD_Position(0,0);           //posicionamos el lcd para escritura


      LCD_PrCString("Temperatura:");   //escribimos la etiqueta voltaje




      while(ADCINC_fIsDataAvailable()!=0){        //mientras la lectura sea valida


      valor=ADCINC_wGetData();                //valor adquirirá el valor de lectura


      ADCINC_fClearFlag();                    //reseteamos la bandera del ADC incremental


      temperatura= (float)valor*100/1023;           //convertimos los bits a flotantes


      LCD_Position(0,9);                     //posicionamos el LCD


      flotante=ftoa(temperatura,&estado);         //conversion para impresion en LCD


      LCD_PrString(flotante);                 //imprimimos el voltaje






      Delay10msTimes(20);     //creamos un retardo


      LCD_Control(1);         //resetamos la lcd