Autor Tema: ADC PIC16F887 Problema LEctura  (Leído 1766 veces)

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

Desconectado quijano930a

  • PIC10
  • *
  • Mensajes: 7
ADC PIC16F887 Problema LEctura
« en: 24 de Octubre de 2016, 19:09:39 »
Bueno gente estoy probando el conversor adc del pic 16f887 basticamnete lo q quiero hacer de prueba es mediante un pote conectado a AN0 que seria RA0 cambiar el estado de un led, trate de mil formas y no logre hacerlo andar aca les dejo mi codigo a ver si hay algo que me estoy pasando por alto , estoy usando el oscilador interno del pic y  referencias uso las del pic tambien y nada eso un saludo y gracias!
Código: C
  1. // CONFIG1
  2. #pragma config FOSC = INTRC_NOCLKOUT// Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
  3. #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
  4. #pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
  5. #pragma config MCLRE = OFF      // RE3/MCLR pin function select bit (RE3/MCLR pin function is digital input, MCLR internally tied to VDD)
  6. #pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
  7. #pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
  8. #pragma config BOREN = OFF      // Brown Out Reset Selection bits (BOR disabled)
  9. #pragma config IESO = OFF       // Internal External Switchover bit (Internal/External Switchover mode is disabled)
  10. #pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
  11. #pragma config LVP = OFF        // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming)
  12.  
  13. // CONFIG2
  14. #pragma config BOR4V = BOR40V   // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V)
  15. #pragma config WRT = OFF        // Flash Program Memory Self Write Enable bits (Write protection off)
  16.  
  17. // #pragma config statements should precede project file includes.
  18. // Use project enums instead of #define for ON and OFF.
  19. #define _XTAL_FREQ 8000000
  20.  
  21.  
  22. #include <xc.h>
  23. void Setup(void);
  24. unsigned char ADCResult;
  25. void main(void) {
  26.     Setup();
  27.    
  28.     while(1){
  29.         __delay_us(100);
  30.         ADCON0bits.GO=1;  
  31.        
  32.         while(ADCON0bits.GO!=0);          //Realizo una espera para captura de datos
  33.         ADCResult = (ADRESH<<8) + ADRESL ;          //Sumo los registros para saber el nivel de tension
  34.        
  35.          if(ADCResult<512)           //Encender o apagar led
  36.             PORTD=0xff;
  37.         else
  38.             PORTD =0x00;
  39.     }
  40.    
  41.            
  42.            
  43.     return;
  44. }
  45.  
  46. void Setup(void){
  47.      INTCON = 0x00;
  48.      OSCCON = 0x00;
  49.  
  50.      
  51.      OSCCONbits.IRCF2 = 1;
  52.      OSCCONbits.IRCF1 = 1;
  53.      OSCCONbits.IRCF0 = 1;
  54.    
  55.      ADRESH=0x00;
  56.      ADRESL=0x00;
  57.      ANSELH=0x00;
  58.      ANSEL =0xff;
  59.      ANSELbits.ANS0=1;  
  60.      TRISD=0x00;
  61.      PORTD =0x00; // TOdo salida
  62.      
  63.      ADCON1=0b10000000;
  64.      ADCON0=0b00000001;
  65.      __delay_us(100);
  66. }

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:ADC PIC16F887 Problema LEctura
« Respuesta #1 en: 24 de Octubre de 2016, 19:23:40 »
Lo primero que veo:

unsigned char ADCResult;

en 8 bits nunca vas a poder almacenar los 10 bits del ADC, por lo cual jamas vas a superar los 255 como maximo.

usa unsigned int, que es de 16 bits.

Si aun asi no funciona es otra cosa y deberia verlo con mas detalle.

Desconectado quijano930a

  • PIC10
  • *
  • Mensajes: 7
Re:ADC PIC16F887 Problema LEctura
« Respuesta #2 en: 24 de Octubre de 2016, 19:33:15 »
Hola la verdad te agradezco muchisimo era eso jajaj no lo vi !!.
Tengo otra duda si seteo para poner Vref  una externa la tengo que declarar como Analogica no?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:ADC PIC16F887 Problema LEctura
« Respuesta #3 en: 24 de Octubre de 2016, 20:12:43 »
Si, setealo como entrada analogica


 

anything