Autor Tema: Problema con el ADC, utilizando el pic16f877 y el mplab x (XC8)  (Leído 4688 veces)

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

Desconectado xcalzada

  • PIC10
  • *
  • Mensajes: 3
Problema con el ADC, utilizando el pic16f877 y el mplab x (XC8)
« en: 20 de Noviembre de 2013, 14:38:27 »
Hola chicos el caso es que estoy intentado configurar el ADC, para hacer variar a un cierto nivel de tensión para que se encienda o se apague un led.
Utilizo el Mplab X con el compilador  XC8 y para ver si me funcionan las cosas o lo grabo al pic o mirando con el vsm y el proteus, pues me dado cuenta que mi registro ADRESH & ADRESL  variando la resistencia nunca cambian de valor, adjunto el código a ver si alguien me puede echar una mano, por que estoy desesperado jeje gracias

Citar

#include <stdio.h>
#include <stdlib.h>

#include <pic16f877.h>

#include <xc.h>

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = ON        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config CP = OFF         // FLASH Program Memory Code Protection bits (Code protection off)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = ON         // Low Voltage In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF        // Data EE Memory Code Protection (Code Protection off)
#pragma config WRT = ON         // FLASH Program Memory Write Enable (Unprotected program memory may be written to by EECON control)

#define _XTAL_FREQ 4000000;

void config(void);

void main(void){

    config();

    _delay(100);

    int ADCResult;

  while(1){
        _delay(100);
        ADCON0bits.CHS = 0b000;     //Selecciono la puerta AD0
        ADCON0bits.GO=1; 
       
        while(ADCON0bits.GO);          //Realizo una espera para captura de datos
        _delay(100);
        ADCResult = (ADRESH<<8) + ADRESL ;          //Sumo los registros para saber el nivel de tension

        if(ADCResult<512)           //Encender o apagar led
            PORTCbits.RC5 = 1;
        else
            PORTCbits.RC5 = 0;
    }
    }


void config(void){

    TRISA = 0b00000000;         //Puerto A como entradas
    TRISC = 0b11111111;         //Puerto C como salidas
    ADCON1bits.PCFG = 0b0000;   //Pongo todas las puertas como analogicas
    ADCON0bits.ADCS = 0b00;     //Configuro Fsc/2
    ADCON0bits.ADON = 1;        //Activo el conve
   
   

    ADCON1bits.ADFM= 1;         //Bits mas significativos
   

   

    }
« Última modificación: 20 de Noviembre de 2013, 15:05:17 por xcalzada »

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema con el ADC, utilizando el pic16f877 y el mplab x (XC8)
« Respuesta #1 en: 20 de Noviembre de 2013, 15:04:24 »
  Estás confundido con la configuración de los TRIS un 0 es para configurar como salida y un 1 es para configurar como entrada... Una forma sencilla de recordarlo es 1NPUT y 0UTPUT
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado xcalzada

  • PIC10
  • *
  • Mensajes: 3
Re: Problema con el ADC, utilizando el pic16f877 y el mplab x (XC8)
« Respuesta #2 en: 25 de Noviembre de 2013, 20:18:11 »
Muchisimas gracias entre en desesperacion absoluta