hola de vuelta a todos!
sigo buscando hacer una placa adquisidora para un sensor. Como tenia un 16f877 a mano empece con ese. Lo unico que hace el codigo por ahora es hacer una conversion AD y enviarla a la pc. En un principio solo hacia la conversion y cada vez que la hacia cambiaba el estado de una patita (PIN_A1). Hasta ahi estaba perfecto, hacia una conversion cada 80us segun proteus.
El problema aparecio cuando quiero transmitir a la PC, ahi aparece que paso por la conversion cada 1ms.
lo que no entiendo es por que me cambia esa sentencia del programa en cada cuanto paso por la interrupcion del AD.
Si la interrupcion del CAD se realizaba cada 80us,por que una sentencia en el main() hace que la interrupcion se de cada 1ms.
el codigo:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <16f877.h>
#device adc=8 //hay que ponerlo?si
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=8000000)
#use standard_io(b)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,bits=8,parity=n)
#use fixed_io(b_outputs=pin_b7)
int i,j;
#INT_AD
void ad_isr (void){
i=read_adc(adc_read_only);
j=1;
output_toggle(PIN_A1);
}
void main(){
j=0;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL|ADC_CLOCK_DIV_32);
set_adc_channel(0);
delay_us(30);
read_adc(ADC_START_ONLY);
enable_interrupts(GLOBAL);
enable_interrupts(INT_AD);
while(1){
if(j==1){
read_adc(ADC_START_ONLY);
j=0;
//putc(i); //la sentencia de la muerte!
}
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------
si alguien me puede aclarar por que pasa esto y como lo corrijo para que haga la conversion mas rapido que cada 1ms se lo agradecere.