Busque en varios hilos del foro y encontre muchisima informacion sobre el modulo ADC del 18f4550. Entiendo que de la configuracion del registro ADCON2 es la que determina el tiempo de adquisicion del modulo (que junto con el tiempo de conversion, va a ser el tiempo que tarda por conversion). lei en:
http://www.todopic.com.ar/foros/index.php?topic=25525.0 como se puede modificar el ADCON2 en CCS y efectivamente funciona.
ahora la duda:
si no modifico ADCON2, osea que me uso read_adc() en CCS para el 18f4550,¿como configura el CCS al ADCON2 por defecto?
andjunto este codigo que está andando pero no se como calcular cuanto va a tardar la conversion:
-------------------------------------------------------------------------------------------------------------------------------------------------
#include <18F4550.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES XTPLL //Crystal/Resonator with PLL enabled
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV20 //Brownout reset at 2.0V
#FUSES PUT //Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES NOPBADEN //PORTB pins are configured as digital I/O on RESET
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES MCLR //Master Clear pin enabled
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL1 //No PLL PreScaler
#FUSES CPUDIV1 //System Clock by 1
#FUSES USBDIV //USB clock source comes from PLL divide by 2
#FUSES VREGEN //USB voltage regulator enabled
#FUSES ICPRT //ICPRT enabled
#use delay(crystal=4000000, clock=48000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_A0,bits=8)
int a=0;
void main()
{
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_64);//Tconv=64/48MHz=1.33us
//setup_pmp(PMP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
disable_interrupts(global);
while(1){
a=read_adc();
delay_us(5);
output_toggle(PIN_C1);
}
//TODO: User Code
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------
gracias