Autor Tema: Conversor A/D Pic18F8720  (Leído 1669 veces)

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

Desconectado TUpiX

  • PIC10
  • *
  • Mensajes: 2
Conversor A/D Pic18F8720
« en: 04 de Junio de 2007, 17:44:07 »
Saludos a todos

Agradecería mucho si me pueden ayudar. Lo que quiero hacer en primer lugar es poder trabajar con el conversor analogo digital del PIC18F8720, la verdad que para un PIC18F452 me funciona, pero al cambiar a un PIC18F8720 no hace lo que quiero que haga( es decir no puedo trabajar con el conversor analogo digital), bueno espero puedan ayudarme, aquí les dejo el programa que estoy tratando de hacer correr.


#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#byte port_b = 0xf81

void main() {

   float medicion;
   float nivel[3]={0x00,0x7F,0xFF};
   int1  CasoA,CasoB;
   set_tris_b(0x00);

   setup_port_a( ALL_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
   set_adc_channel( 0 );
   port_b=0x00;

   do {
      delay_ms(100);
      medicion = Read_ADC();
      CasoA=((medicion>=nivel[0])&&(medicion<nivel[1]));
      CasoB=((medicion>=nivel[1])&&(medicion<=nivel[2]));

      if(CasoA)
      {
           port_b=0x03;
      }
      else
      if(CasoB)
      {
           port_b=0x07;
      }

   } while (TRUE);
}



para el pic18F8720 solo he cambiado el pic y trato de simularlo en el proteus, el programa queda asi:
 
#include <18F8720.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#byte port_b = 0xf81

void main() {

   float medicion;
   float nivel[3]={0x00,0x7F,0xFF};
   int1  CasoA,CasoB;
   set_tris_b(0x00);

   setup_port_a( ALL_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
   set_adc_channel( 0 );
   port_b=0x00;

   do {
      delay_ms(100);
      medicion = Read_ADC();
      CasoA=((medicion>=nivel[0])&&(medicion<nivel[1]));
      CasoB=((medicion>=nivel[1])&&(medicion<=nivel[2]));

      if(CasoA)
      {
           port_b=0x03;
      }
      else
      if(CasoB)
      {
           port_b=0x07;
      }

   } while (TRUE);
}


como ya les habia dicho en el primer programa (pic18F452) hace lo que quiero, es decir saca a traves del puerto b el valor 3  o 7 según corresponda, pero en el segundo caso en donde se cambia el pic al PIC18F8720 no lo hace, ¿alguien sabe por qué?, agradeceria mucho vuestra ayuda (sera el simulador?? , ya que todavia no lo paso a la placa para ver esto, la verdad que no se), si me quieren responder a mi correo en forma directa este es jcalle077@hotmail.com

                                            BIT

Desconectado TUpiX

  • PIC10
  • *
  • Mensajes: 2
Re: Conversor A/D Pic18F8720
« Respuesta #1 en: 04 de Junio de 2007, 21:16:56 »
 En el programa del PIC18F8720 de arriba existes dos declaraciones de estas * (solo debe haber una), fue un error cuando lo transcribi a este foro (yo lo tengo con uno solo), pero al quitarlo aun no me simula en el proteus, ¿alguien puede ayudarme con este problema?

* #use delay(clock=20000000)
#use delay(clock=4000000

Desconectado Vayadespiste

  • PIC12
  • **
  • Mensajes: 53
Re: Conversor A/D Pic18F8720
« Respuesta #2 en: 05 de Junio de 2007, 18:11:23 »
No creo que sea tu problema, pero bueno por decirlo que no quede, el 8720 creo que la alimentación del modulo a/d es aparte del microcontrolador es decir los pines 25 y 26.