Buenas tardes gente, he buscado a lo largo del foro y siempre he encontrado este tema pero con visualización en LCD. En mi caso, yo quiero hacer la visualización en leds. Para tal motivo, escribí el siguiente código en CCS C Compiler.
Escogí la división entre 32 porque estoy trabajando con un cristal de 20MHz. En ese sentido Tad = 32Tosc = 32/20MHz = 1,6us y 12Tad aproximadamente 20us. Al simular el Proteus me arroja el siguiente warning:
Entiendo por esto que el delay es muy corto, pero ¿por qué?. Más allá de sintaxis de código necesito que me ayuden a entender el tiempo de adquisición y como calcularlo correctamente de acuerdo a la división de reloj que utilice (siempre trabajo con 20MHz). Además ¿qué ventajas tiene usar el reloj RC interno del PIC? y ¿cómo cambia el código si decido usar los 10 bits de conversión?
Espero que me puedan ayudar, muchas gracias de antemano. ...
Código:
#device adc=8
void main()
{
setup_adc(adc_clock_div_32);
setup_adc_ports(all_analog);
set_adc_channel(0);
set_tris_c(0);
int8 valor_adc;
while(true)
{
delay_us(20);
valor_adc = read_adc();
output_c(valor_adc);
}
}
Escogí la división entre 32 porque estoy trabajando con un cristal de 20MHz. En ese sentido Tad = 32Tosc = 32/20MHz = 1,6us y 12Tad aproximadamente 20us. Al simular el Proteus me arroja el siguiente warning:
Código:
ADC conversion started before \'wait\' time has expired following previous conversion or channel change
Entiendo por esto que el delay es muy corto, pero ¿por qué?. Más allá de sintaxis de código necesito que me ayuden a entender el tiempo de adquisición y como calcularlo correctamente de acuerdo a la división de reloj que utilice (siempre trabajo con 20MHz). Además ¿qué ventajas tiene usar el reloj RC interno del PIC? y ¿cómo cambia el código si decido usar los 10 bits de conversión?
Espero que me puedan ayudar, muchas gracias de antemano. ...