Hola gente del foro, hice un pequeño programa para visualizar datos analógicos en la PC, el programa lo probé en proteus y este se e muy bien, pero a la hora de probarlo en el PCB que hice no se ve nada de nada. Yo pienso que es tema de programación porque le cargue un programa mas simple y si me visualiza los datos analógicos en el PCB, entonces el hardware anda bien, les anexo el programa para que me ayuden a identificar el problema.
Gracias a todos xD
Programa en CCS
#include <16F873A.h>
#device adc=10
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#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
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
unsigned int32 sumatoria;
unsigned int conta=0, flag =0;
int16 ADC;
float media;
#int_RTCC
void RTCC_isr(void)
{
flag=1;
set_timer0(61);
}
#int_AD
void AD_isr(void)
{
conta++;
ADC=read_adc(adc_read_only);
sumatoria=sumatoria+ADC;
read_adc(ADC_START_ONLY);
}
void main()
{
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_64);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
set_timer0(61);
enable_interrupts(INT_RTCC);
enable_interrupts(INT_AD);
enable_interrupts(GLOBAL);
set_adc_channel(0);
delay_us(30);
read_adc(ADC_START_ONLY);
while(TRUE){
if(flag==1){
media=sumatoria /((float) conta+1);
//printf("%LU \n\r",ADC);
printf("s=%LU m=%U md=%01.1f adc=%LU \n\r"sumatoria,conta,media,ADC);
//delay_ms(200);
conta =0;
sumatoria =0;
flag =0;
}
}
}