Autor Tema: Lectura de un canal ADC con un dspic6014A  (Leído 1298 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado javifd

  • PIC10
  • *
  • Mensajes: 4
Lectura de un canal ADC con un dspic6014A
« en: 23 de Mayo de 2019, 09:02:09 »
Hola, quería consultaros un problema que estoy teniendo con un código para leer el valor de un potenciómetro con el canal ADC de un dspic6014A. Ejecuto el código en el mplab con el CCS para mirar como cambia de valor y que este correcto el código pero no se mueve el valor de 0 y lo compruebo una y otra vez y ya no sé que hacer. Compruebo con un polímetro y funciona correctamente El potenciómetro está en la entrada RB2. Os adjunto el código.

Código: [Seleccionar]
#include "ADCheader.h"
#include "xc.h"

//MACROS O CONFIGURACION DE PARAMETROS
_FOSC(CSW_ON_FSCM_OFF & XT);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF & PWRT_16 & MCLR_EN );
_FGS(CODE_PROT_OFF);
//RUTINA DE RETARDOS
#ifndef __DELAY_H
#define delay_us(x) __delay32(((x*FCY)/1000000L)) //delay x us
#define delay_ms(x) __delay32(((x*FCY)/1000L)) //delay x us
#define delay_s(x) __delay32(((x*FCY)/1L))
#define __DELAY_H 1
#endif
float VADC;
float v3 ;

int main()
{
TRISB=0XFFFF;        //DEFINO ENTRADA
ADPCFG = 0xFFFB;     //RB2 ANA; TODO LO DEMAS DIGITAL
ADCON1=0;            //ADON=0 ADC off,
                     //FORM=0 FORMATO SALIDA=ENTERO
                     //SSRC=0 INICIO DE CONVERSION: MANUAL (A TRAVES DE SAMP)
                     //SIMSAM=0 MUESTRAS SECUENCIALES (UNA POR UNA)
                     //ASAM=0: MUESTREO EMPIEZA CON SAMP=1
                     //SAMP=0 MUESTREO DESHABILIDADO (INICIAN CUANDO SAMP=1)
                     //DONE=0 CONVERSION NO TERMINADA
         
ADCHS = 0x0002;           //CH0NA = 0 Channel 0 negative input is VREF
                     //CH0SA = 0000 RB2/AN2 = CH0 CONFIGURO RB0/AN0 COMO MI CANAL

ADCSSL = 0; //SKIP SCAN DE TODOS LOS CANALES
ADCON3=0X0101; //1 TAD y reloj derivado del sistema
ADCON2 = 0; //VCFG=0 REFERENCIAS AVss=NEGATIVA AVdd= POSITIVA
            //CSCNA=0 NO SCAN
            //CHPS=0 CONVERTIR CH0
            //BUFS=0 NO APLICA PUES NO DIVIDIREMOS EL RESULTADO
            //SMPI=0 INTERRUMPIR CUANDO SE COMPLETE UNA CONVERSION
            //BUFM=0 TRABAJAR COMO BUFFER DE PALABRA DE 16 BITS
            //ALTS=0 USAR UNICAMENTE MUX A (MUESTREO SIMPLE)
           
ADCON1bits.ADON = 1; // ADC ON
while (1) // REPETIR INDEFINIDAMENTE
{
ADCON1bits.SAMP = 1; // INICIAR MUESTREO
delay_ms(10);            //  for 100 mS
ADCON1bits.SAMP = 0; // DETENER MUESTREO; INICIAR CONVERSION
while (!ADCON1bits.DONE); // CONVERSION LISTA?
VADC = ADCBUF0; // SI, CAPTURAR EL VALOR EN LA VARIABLE VADC
v3 = (VADC * 5.0) / 1024.0;   //Se convierte en voltios
}
    return 0;
}

Os agradecería vuestra ayuda :grin: