Saltar al contenido

Diferencia entre PORT y LATCH en PIC 18F

Solución:

El pestillo es el producción aferrarse a los valores que se escriben. El puerto es el voltaje en el pin real.

Hay algunas situaciones en las que pueden ser diferentes. El que me he encontrado con más frecuencia es si tiene un pin (accidentalmente) en cortocircuito a tierra. Si configura el pestillo alto, el pestillo leerá alto, pero el puerto leerá bajo porque el voltaje en el pin todavía está aproximadamente a tierra.

Otra situación que conduce a lo que ha descrito es cuando el pin del puerto no se ha configurado correctamente. Yo (y todas las personas con las que trabajo) hemos pasado muchas horas tratando de averiguar por qué nuestro PIC no está funcionando según las expectativas, para eventualmente descubrir que pasamos por alto apagar los módulos analógicos, por ejemplo. Asegúrese de revisar la sección Puertos de E / S -> PORT ?, TRIS ?, y LAT? se registra en la hoja de datos. Puede obtener más información en la página wiki de Microchip, que explica cómo leer el valor incorrecto inmediatamente después de escribir una salida en un pin conectado a una carga capacitiva.

Esa página wiki también explica:

Una lectura del registro de pestillo del puerto devuelve la configuración de los controladores de salida, mientras que una lectura del registro del puerto devuelve los niveles lógicos que se ven en los pines.

Además, aquí hay un fragmento de la sección Puertos de E / S en el 18F14K50 (que debería ser el mismo que el resto de la serie 18F):

Cada puerto tiene tres registros para su funcionamiento. Estos registros son:

  • Registro TRIS (registro de dirección de datos)
  • Registro PORT (lee los niveles en los pines del dispositivo)
  • Registro LAT (pestillo de salida)

Entonces, en la mayoría de las situaciones, escribirá en el pestillo y leerá desde el puerto.

Adaptaré mi respuesta de Ingeniería eléctrica.

Usemos la imagen del manual:

Funcionamiento genérico del puerto de E / S

Cuando escribe un bit en un pin de E / S, está almacenando este bit desde el bus de datos al registro de datos (D-FlipFlop). Si TRISx de este bit es 0, entonces los datos de Q del Registro de datos estarán en el pin de E / S. Escribir en LATx o PORTx es lo mismo. Vea a continuación en rojo:

Escritura de operación de puerto de E / S genérico

Por otro lado, la lectura de LATx es diferente de la lectura de PORTx.

Cuando está leyendo de LATx, está leyendo lo que está en el Registro de datos (D-FlipFlop). Vea la imagen siguiente en verde:

Funcionamiento del puerto de E / S genérico Leer LATx

Y cuando lee de PORTx, está leyendo el valor real del pin de E / S. Vea abajo en azul:

Funcionamiento del puerto de E / S genérico Leer PORTx

PIC usa operaciones de lectura-modificación-escritura para escribir y esto puede ser un problema, por lo que usan este registro de sombra para evitarlo.

Aquí hay un resumen útil de la hoja de datos.

11.2.3 Registros LAT

El registro LATx asociado con un pin de E / S elimina los problemas que podrían ocurrir con las instrucciones de lectura-modificación-escritura. Una lectura del registro LATx devuelve los valores retenidos en los pestillos de salida del puerto, en lugar de los valores en los pines de E / S. Una operación de lectura-modificación-escritura en el registro LAT, asociada con un puerto de E / S, evita la posibilidad de escribir los valores de los pines de entrada en los pestillos del puerto. Una escritura en el registro LATx tiene el mismo efecto que una escritura en el registro PORTx.

Las diferencias entre los registros PORT y LAT se pueden resumir de la siguiente manera:

  • Una escritura en el registro PORTx escribe el valor de los datos en el pestillo del puerto.
  • Una escritura en el registro LATx escribe el valor de los datos en el pestillo del puerto.
  • Una lectura del registro PORTx lee el valor de los datos en el pin de E / S.
  • Una lectura del registro LATx lee el valor de datos retenido en el pestillo del puerto.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *