TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: mauryras en 11 de Octubre de 2010, 18:40:54

Título: AYUDAA CON COVERSOR AD PIC 16F88
Publicado por: mauryras en 11 de Octubre de 2010, 18:40:54
HOLAS A TODOS .. MIREN TENGO UNA DUDA CON EL CONVERSO AD UTILIZANDO EL PIC 16F88 TRABAJO CON PICC, LO Q E SUCEDE ES COMO Q NO ME CONVIERTE NOSE POR QUE QUIERO VER LA CONVERSION EN UN LCD Y NO MUESTRA NADA NECESITO AYUDA : ESTE ES MI CODIGO:

#include <16F88.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOPROTECT                //Code not protected from reading
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES IESO                     //Internal External Switch Over mode enabled

#use delay(clock=20000000)
#define LCD_TYPE 2
#include <lcd.c>
#use fast_io(a)

int i;
char n;
void vista();
void convierte();
void main()
{
   
   //set_tris_a(1);//'1'-->entrada ; '0'--> salida
   lcd_init();
   vista();
   convierte();
   setup_adc_ports(sAN1|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL );
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   //TODO: User Code

}
void vista(){
   lcd_putc("   Iniciando");
   delay_ms(1000);
   for(i=0;i<=3;i++) //me muestra los ....
  {
   lcd_gotoxy((13+i),1);
   lcd_putc(".");
   delay_ms(300);
  }
   delay_ms(2000);
   lcd_putc("\f");
   lcd_putc("  Sistemas Para\n");
   lcd_putc("  Control-2010");
   delay_ms(3000);
   lcd_putc("\f");
   lcd_putc("  Control Temp\n"); //Saca texto
   lcd_putc("    con LM 35");     //Saca texto
   delay_ms(3000);
   lcd_putc("\f");
}
void convierte(){
   set_adc_channel(0);
   delay_us(50);
   n=read_adc();
   lcd_gotoxy(1,1);
   printf(lcd_putc,"%u",n);
   delay_ms(2000);
}
Título: Re: AYUDAA CON COVERSOR AD PIC 16F88
Publicado por: Suky en 11 de Octubre de 2010, 18:57:53
Hola! Estás realizando la conversión y visualización antes de inicializar todo  ;-) Prueba con :

Código: C
  1. #include <16F88.h>
  2. #device adc=8
  3.  
  4. #FUSES NOWDT                    //No Watch Dog Timer
  5. #FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
  6. #FUSES NOPUT                    //No Power Up Timer
  7. #FUSES MCLR                     //Master Clear pin enabled
  8. #FUSES NOBROWNOUT               //No brownout reset
  9. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  10. #FUSES NOCPD                    //No EE protection
  11. #FUSES NOWRT                    //Program memory not write protected
  12. #FUSES NODEBUG                  //No Debug mode for ICD
  13. #FUSES NOPROTECT                //Code not protected from reading
  14. #FUSES FCMEN                    //Fail-safe clock monitor enabled
  15. #FUSES IESO                     //Internal External Switch Over mode enabled
  16.  
  17. #use delay(clock=20000000)
  18. #define LCD_TYPE 2
  19. #include <lcd.c>
  20. #use fast_io(a)
  21.  
  22. int i;
  23. char n;
  24. void vista();
  25. void convierte();
  26. void main()
  27. {
  28.    
  29.    //set_tris_a(1);//'1'-->entrada ; '0'--> salida
  30.    lcd_init();
  31.       setup_adc_ports(sAN1|VSS_VDD);
  32.    setup_adc(ADC_CLOCK_INTERNAL );
  33.    setup_spi(SPI_SS_DISABLED);
  34.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  35.    setup_timer_1(T1_DISABLED);
  36.    setup_timer_2(T2_DISABLED,0,1);
  37.    setup_ccp1(CCP_OFF);
  38.    setup_comparator(NC_NC_NC_NC);
  39.    setup_vref(FALSE);
  40.  
  41.    while(1){
  42.       vista();
  43.       convierte();
  44.    }
  45.  
  46. }
  47. void vista(){
  48.    lcd_putc("   Iniciando");
  49.    delay_ms(1000);
  50.    for(i=0;i<=3;i++) //me muestra los ....
  51.   {
  52.    lcd_gotoxy((13+i),1);
  53.    lcd_putc(".");
  54.    delay_ms(300);
  55.   }
  56.    delay_ms(2000);
  57.    lcd_putc("\f");
  58.    lcd_putc("  Sistemas Para\n");
  59.    lcd_putc("  Control-2010");
  60.    delay_ms(3000);
  61.    lcd_putc("\f");
  62.    lcd_putc("  Control Temp\n"); //Saca texto
  63.    lcd_putc("    con LM 35");     //Saca texto
  64.    delay_ms(3000);
  65.    lcd_putc("\f");
  66. }
  67. void convierte(){
  68.    set_adc_channel(0);
  69.    delay_us(50);
  70.    n=read_adc();
  71.    lcd_gotoxy(1,1);
  72.    printf(lcd_putc,"%u",n);
  73.    delay_ms(2000);
  74. }


Saludos!
Título: Re: AYUDAA CON COVERSOR AD PIC 16F88
Publicado por: korpaztk en 01 de Noviembre de 2010, 10:26:15
yo lo que haria tambien es...

void convierte(){
   set_adc_channel(0);
   delay_us(50);
   n=read_adc();
   DELAY_US(20);
   lcd_gotoxy(1,1);
   printf(lcd_putc,"%u",n);
   delay_ms(2000);
}

hacer un pequeño delay despues de leer el conversor porque hay aveces (me ha pasado) de que la lectura no se carga en la variable... espero poder ayudarte tmb
Título: Re: AYUDAA CON COVERSOR AD PIC 16F88
Publicado por: Suky en 01 de Noviembre de 2010, 11:26:18
hacer un pequeño delay despues de leer el conversor porque hay aveces (me ha pasado) de que la lectura no se carga en la variable... espero poder ayudarte tmb

 :shock: Como?
Título: Re: AYUDAA CON COVERSOR AD PIC 16F88
Publicado por: korpaztk en 01 de Noviembre de 2010, 11:55:24
me ha pasado muchas veces que al poner la instruccion:

"x" = read_adc();

y luego seguir con mi programa no cargaba en mi variable lo que leia del conversor, despues de renegar un buen tiempo le he puesto un delay de 20us y me ha funcionado muy bien, nose si sera locura de mi compilador de mi pic o nose jeje...
Título: Re: AYUDAA CON COVERSOR AD PIC 16F88
Publicado por: Suky en 01 de Noviembre de 2010, 12:02:46
No entiendo como puede llegar a darse eso  :? Pero bueno, de CCS se puede esperar cualquier cosa  :D


Saludos!