Autor Tema: ADC=10 en 16f88  (Leído 2574 veces)

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

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 108
ADC=10 en 16f88
« en: 19 de Julio de 2009, 18:36:55 »
Un alma piadosa que me ayude
hola el problema es que no me lee el ADC en la practica porque en los display muetra 00.00 aqui esta el codigo
pero en la simulacion proteus 7.5sp3 si
uso ccs 4.088
es para 0-31.72v tengo que dividir el voltage en 6.144 para obtener en 31.72v/6.144=5v voltage de refencia +
Código: [Seleccionar]
#include <16F88.h>
#device adc=10
#FUSES NOWDT      //No Watch Dog Timer
#FUSES INTRC_IO   //Osc interno clock i/o
#FUSES NOPUT      //No Power Up Timer
#FUSES NOMCLR     //Master Clear pin desabilitado
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP      //No programacion bajo voltage B3 usado for I/O
#FUSES NOCPD      //No proteccion area de datos
#FUSES NOWRT      //Proteccion de escritura de memoria de programa
#FUSES NODEBUG    //No Debug modo para ICD
#FUSES NOPROTECT  //Codigo protegido from reads
#FUSES NOFCMEN    //Fail-safe clock monitor disabled
#FUSES NOIESO     //Internal External Switch Over mode disabled
#FUSES CCPB3
#use delay(clock=8000000)
#use fast_io(A)
#use fast_io(B)
//variables
int bcd_datos[4]={0,0,0,0};
int16 volt, temp;

//Funciones
void espera_4ms();
///PROGRAMA
void main(void)
{
 disable_interrupts(GLOBAL);
 set_tris_a(0x01);
 set_tris_b(0x00);
 setup_adc_ports(sAN0|VSS_VDD);
 setup_adc(ADC_CLOCK_DIV_16);
 set_adc_channel(0);
 setup_vref(FALSE);
 setup_spi(FALSE);
 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
 setup_timer_1(T1_DISABLED);
 setup_timer_2(T2_DISABLED,0,1);
 setup_comparator(NC_NC_NC_NC);
 setup_oscillator(OSC_8MHZ|OSC_INTRC);
 disable_interrupts(GLOBAL);
 While(TRUE)
  {
   output_b(bcd_datos[3]|0b00010000);
   espera_4ms();
   output_b(bcd_datos[2]|0b00100000);
   output_bit(PIN_A1,1);
   espera_4ms();
   output_b(bcd_datos[1]|0b01000000);
   output_bit(PIN_A1,0);
   espera_4ms();
   output_b(bcd_datos[0]|0b10000000);
   espera_4ms();
  }
}

void espera_4ms()
 {
   int i;
   delay_ms(4);
   set_adc_channel(0);
   delay_us(100);
   volt= (long)read_adc();
   temp= (long)volt*3;
   for(i=0;i<5;i++)
   {
     bcd_datos[ i ]=temp%10;
     temp=temp/10;
   }
 }
este no tiene problemas con la conversion de variable tipo long a bcd funciona
 :)
« Última modificación: 19 de Octubre de 2009, 15:13:53 por allennet »
"La curiosidad mato al gato, pero murio sabiendo"

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: ADC=10 en 16f88
« Respuesta #1 en: 19 de Julio de 2009, 22:10:53 »
envez de retardo no le deverias dar delay disculpa ??

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: ADC=10 en 16f88
« Respuesta #2 en: 19 de Julio de 2009, 22:18:43 »
Rectifico, ya lo simule y si me manda lectura tarda en aparecer en los display pero aun asi si la manda

Desconectado PICPOWER

  • PIC10
  • *
  • Mensajes: 17
Re: ADC=10 en 16f88
« Respuesta #3 en: 20 de Julio de 2009, 15:01:54 »
Saludos allennet

Te comento que los problemas que he tenido en ISIS en LCd ha sido por la velocidad en que responde el LCD simulado, que es más elevada que un LCD normal. Tienes que agregar retardos variados por alguna de las funciones de LCDxxx.c. Un error que me hizo perder mucho tiempo está en la forma de leer al LCD, en ISIS la lectura de las localidades del LCD es normal, pero en hadware leía mal. Esto se solucionó con un retardo dentro de la función de lectura de localidad d eLCD.

Bytes...

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 108
Re: ADC=10 en 16f88
« Respuesta #4 en: 21 de Julio de 2009, 19:08:18 »
Como dije lo simula pero en la practica aparece en los display 00.00 y se queda ahi ??
"La curiosidad mato al gato, pero murio sabiendo"

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 108
Re: ADC=10 en 16f88
« Respuesta #5 en: 05 de Septiembre de 2009, 20:35:41 »
ya lo sulucione el problema era los capacitor de ruido 100nf que no puse en los reguladores porque esta al lado de un transformador de 80VA aunque siempre es recomendable ponerlos
"La curiosidad mato al gato, pero murio sabiendo"


 

anything