You are here

Problem whit PSOC1 ADCINC and LM35 | Cypress Semiconductor

Problem whit PSOC1 ADCINC and LM35

Summary: 3 Replies, Latest post by amka on 08 Dec 2012 12:36 AM PST
Verified Answers: 0
Last post
Log in to post new comments.
maytzuc's picture
17 posts

 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





rjvb's picture
Cypress Employee
90 posts

If you are getting proper readings using a POT then the problem is related to LM35 or its connection to PSoC 1. Did you check voltage at the ADC pin when operating with LM35?

-Rajiv Badiger 

user_14586677's picture
7646 posts

Hooked up correctly for the package ? Note which view pinout is

described, top or bottom specified.


Attached hookup and pinout.


Regards, Dana.

amka's picture
Cypress Employee
5 posts

Check the voltage at the output of LM35. Also can you attach the project so that various parameter settings could be checked 

Log in to post new comments.