ayúdame a entender el registro de ANSEL en PIC

en nuevo a PIC, esto es un poco confuso.

Para cambiar, usart, debemos borrar el registro de ANSEL para hacer una E/S digital, de modo que solo podamos leer 0 o 1 de ese pin.

la hoja de datos dice que si configuramos un pin particular como entrada analógica y cuando lea esos pines devolverá 0, entonces, ¿cuál es la necesidad de ANSEL y cuándo habilitarlo?

si estoy totalmente equivocado por favor perdone y expliqueme gracias

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Respuestas (2)

Debe configurar el bit ANSEL alto para cualquier pin para el que desee utilizar la función analógica. De lo contrario, ajústelo bajo para usar la función digital.

Si lo deja bajo y necesita funcionalidad analógica, no funcionará en absoluto.

Si lo deja alto, en este chip en particular, la salida digital seguirá funcionando, sin embargo, el pin leerá cero. Si se trata de un chip sin la función LAT, una instrucción de lectura, modificación y escritura provocará un funcionamiento incorrecto.

Por ejemplo, escribe 0xFF en el puerto y el bit ANSEL correspondiente al bit 1 es 1, entonces todos los pines se pondrán en alto. Sin embargo, si trato de configurar el bit 0 a 0 (una instrucción de lectura, modificación y escritura, BCF en lenguaje ensamblador), de modo que se espera que el puerto vaya a 0xFE, entonces los bits 0 y 1 irán a cero (0xFC), porque la instrucción escribirá el valor que leyó del bit 1. Esto suele ser muy indeseable: cambia un poco que no tenía intención de modificar.

Aquí está la actividad del ciclo de máquina de una instrucción BCF en un PIC de rango medio:

ingrese la descripción de la imagen aquí

En el ciclo Q2 se lee el registro (un puerto en este caso), se borra el bit deseado y luego se vuelve a escribir en el mismo registro.

En el ejemplo anterior, la instrucción en lenguaje máquina para borrar el bit 0 de PORTA sería:

 BCF PORTA, 0  

Un compilador agregará una capa sobre las instrucciones en lenguaje de máquina, pero a menos que implementen un registro de sombra (que ralentiza las cosas, por lo que probablemente sería un valor predeterminado no deseado), existe el problema de RMW.

qué es b y f en BCF b,f... lo siento, no estoy familiarizado con el lenguaje ensamblador
f es el nombre de registro del archivo. PORTA en el ejemplo anterior. b es el bit (0..7). Entonces, si desea borrar el bit 2 en un registro llamado ESTADO, puede usar BCF ESTADO, 2
Sí, creo que lo entiendes.

No soy un experto en PIC, pero es común que los pines tengan diferentes circuitos de entrada según la función seleccionada.

Para retener una señal analógica de la mejor manera, los pines se pueden cambiar a un modo analógico. Utilice este modo junto con un convertidor de analógico a digital (para leer más que solo un 1 o un 0) o un convertidor de digital a analógico si desea generar un voltaje que no sea VDD o VSS.

Además, las señales se enrutan de manera diferente en su microcontrolador según la función seleccionada.

Para cualquier función digital en un pin, debe configurarlo en modo digital (el modo normal).

Muy útil para comprender cómo el microcontrolador en particular implementa las funciones de los pines que generalmente se dan en la hoja de datos en algún lugar (ya sea en la parte GPIO o en una sección propia).

Para un PIC12(L)F1571 se ve así :ingrese la descripción de la imagen aquí

Lo que nos muestra, que el NOT ANSEL se usa con un AND a la entrada digital de los pines. Entonces, si ANSEL es 1, NOT lo convertirá en 0 y AND dará como resultado un 0 independientemente del voltaje en la entrada.

Te preguntarás por qué lo hacen así. Hay algunas razones que me vienen a la mente (no diseño microcontroladores, así que no estoy seguro):

  • Aplicar un voltaje analógico a una puerta no optimizada puede causar altas corrientes en la etapa de entrada si el voltaje está en el medio de los niveles lógicos.
  • Una puerta no optimizada puede influir en la señal analógica aplicada
  • La aplicación de una señal analógica podría provocar una conmutación errática de la salida digital (conmutación muy frecuente), lo que podría interferir con los periféricos digitales y también aumentaría el consumo de corriente.