TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: tunino en 08 de Mayo de 2007, 02:53:24
-
Buenas a todos:
Lo que les queria preguntar si es que existe alguna diferencia con las siguientes instrucciones
en lo que se refiere al valor que se le asigna a la variable en PBP
*ADCin 0, T
*T=adresh
exactamente que o cual el valor que se asigna en cada una de las instruccion,
el valor de salida analogo?
el codigo de la posicion de la conversion es decir un valor 0-255 si fuese de 8bit?
..... que cosa???
De antemano agradecido
-
Cuando Usas ADCIN canal, variable lo que hace es guardar -tal como tu dices- un valor de 0 a 254 o de de 0 a 1023 segun los bits que uses y dependiendo de lo que te entrgue la señal.
-
Todo pedende de cómo tengas configurada la justificación.
Si defines ADC_8 es de 8 bits y toma los valores del ADRESH (porque justifica a la izquierda).
Si tu defines justificación a la derecha y tomas T=ADRESH, solo tomarás los dos últimos bits de mayor peso.
Claro que si colocas ADC_10 tomas los diez bits pero debes crear una variable tipo WORD para poder guardar esos 10 bits (que te los justifica a la derecha).
Revisa primero el manual de tu µicro en la sección de justificación del AD para que se te aclare mejor; busca en el foro temas relacionados con la operación del ADCIN, seguro se te aclara la duda.
-
navaismo
me has aclarado la duda que tenia con ADCIN muchas gracias
Mario
gracias tambien por responderme mas o menos sabia eso que depende de la justificacion
pero lo que no se es que valor asume T=adresh (independiente de la justificacion) si no
se define esto por ejemplo
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
Esta definicion siempre la he visto cuando se usa ADCIN y uno se olvida de los bit
ya que estan definidos alli, pero cuando se usa T=adresh no he visto que se defina eso por
lo que no se si asume 10 bit o 8 bit. (tambien se pueden definir???)
Si fuese de 8 bit entonces T=adresh y ADCIN 0,T(con DEFINE ADC_BITS 8 ) serian lo mismo que asume un valor de 0 a 254 ??
Gracias nuevamente
-
Hola tunino.
Al parecer sabes de lo que estás hablando, lo cual es muy bueno; quizá con estos enlaces (posiblemente los 2 primeros) puedas salir de dudas:
http://www.microengineeringlabs.com/resources/samples/pbp/a2d10.bas
http://www.microengineeringlabs.com/resources/samples/pbp/a2d8.bas
http://www.microengineeringlabs.com/resources/samples/pbp/adcin10.bas
http://www.microengineeringlabs.com/resources/samples/pbp/adcin8.bas
http://www.todopic.com.ar/foros/index.php?topic=13543.0
http://www.todopic.com.ar/foros/index.php?topic=14736.0
Espero te sirvan, si no, lo preguntas y se tratará de ayudar en la medida de lo posible.
-
Hola Mario
gracias nuevamente por los enlaces por lo visto muchos son los que han tenido mas de algun dolor de cabeza por el conevrtidor A/D de los micros y trabajar con el lm35 jaja.
los ejemplos que me pusiste ya lo habia visto en un comienzo pero digo era el comienzo no entendia nada y los volvi a ver
ayer y creo que se me aclaro la dudas que tenia. lo que explico ahora es lo que entendi si es cierto a mas de alguien tambien le podra aclarar un poco esto y si esta mal me lo hacen saber por favor.
Bueno resulta que las dos instrucciones antes mencionadas cumplen la misma funcion y entregaran un valor entre 0-254 o 0-1023 dependiendo de los bit, la diferencia esta en que cada instruccion tiene su forma de definicion por decrirlo de alguna manera
****por ej Si uso ADCIN 0,T
antes debo hacer las siguientes definiciones
DEFINE ADC_BITS 8 (aca es donde se define los bit)
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
claro que tambien habria que declarar T como var y hacer la justificacion que uno desea
***en cambio se uso T=adresh
aca no se hace ninguna definicion de la cantidad de bits, solo hacer la justificacion y declarar la T como var
al colocar solo adresh este lee solamente 8bit previa justificacion deseada y si quisiera usar 10bit habria que hacer lo siguiente
t.highbyte = ADRESH
t.lowbyte = ADRESL
y en el instruccion de salida ya sea serout, lcdout por ejemplo solo colocar la variable t
Espero haberme explicado bien y como dije si esta correcto lo que entendi a mas de alguien le ayudara a comprender y darse cuenta que son 2 formas de hacer lo mismo.
Saludos y gracias nuevamente
-
Todo perfecto, solo queda añadir el registro ADCON para que realmente se jusstifique izquierda o derecha. Ya que luego con define ADC_BITS no es suficiente