Autor Tema: ADC del 18f4550 en CCS  (Leído 4872 veces)

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

Desconectado lepra85

  • PIC10
  • *
  • Mensajes: 11
ADC del 18f4550 en CCS
« en: 17 de Julio de 2012, 10:42:34 »
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

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: ADC del 18f4550 en CCS
« Respuesta #1 en: 17 de Julio de 2012, 10:53:00 »
Hola lepra85. este hilo te puede interesar.
http://www.todopic.com.ar/foros/index.php?topic=27929.20
Suky explica allí entre otras cosas, lo siguiente:
"En cambio para los PIC18F2455/2550/4455/4550 el tiempo mínimo de adquisición se reduce a 2.45us, los cuales podemos configurarlo por hardware dependiendo del reloj de conversión seleccionado. Cuando se selecciona ACQT2:ACQT0: 00 la demora se debe generar por software.-"

Saludos.
jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado lepra85

  • PIC10
  • *
  • Mensajes: 11
Re: ADC del 18f4550 en CCS
« Respuesta #2 en: 17 de Julio de 2012, 11:06:01 »
jukinch:
Mi duda es:
¿el tiempo de adquisicion de 2,45us son fijos o depende de la configuracion del ADCON2? Por que en los 16F este tiempo es fijo (alrededor de 20us).
Si al modiicar el ADCON2, se modifica el tiempo de adquisicion, ¿como lo configura el CCS si no pongo nada?

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: ADC del 18f4550 en CCS
« Respuesta #3 en: 17 de Julio de 2012, 11:22:25 »
Mirá la Página 264-265 del datasheet del 18f4550. DS39632C


"Manual acquisition is selected when
ACQT2:ACQT0 = 000. When the GO/DONE bit is set,
sampling is stopped and a conversion begins. The user
is responsible for ensuring the required acquisition time
has passed between selecting the desired input
channel and setting the GO/DONE bit. This option is
also the default Reset state of the ACQT2:ACQT0 bits
and is compatible with devices that do not offer
programmable acquisition times."
« Última modificación: 17 de Julio de 2012, 11:24:45 por jukinch »
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado lepra85

  • PIC10
  • *
  • Mensajes: 11
Re: ADC del 18f4550 en CCS
« Respuesta #4 en: 17 de Julio de 2012, 12:17:30 »
jukinch:
al parecer,  por defecto ACQT2:ACQT0 = 000.
Pero, entonces, me pregunto:
al yo usar un clock de 48MHz y setup_adc(ADC_CLOCK_DIV_64)
¿estoy manteniendo ADQT2:ACQT0 = 000  o el setup_adc lo modifica? Te comento esto por que la tabla  TABLE 21-1: TAD vs. DEVICE OPERATING FREQUENCIES del Datasheet parece decir que lo cambie con el setup_adc().
segun la tabla no deberia un clock de 48Mhz y ACQT2:ACQT0 = 000.

Saludos,
lepra85


Desconectado lepra85

  • PIC10
  • *
  • Mensajes: 11
Re: ADC del 18f4550 en CCS
« Respuesta #5 en: 19 de Julio de 2012, 10:03:05 »
Resurjo el tema antes de que muera.
setup_adc() modifica el ADCON2?