¿Qué sucede cuando los datos se escriben en LATCH?

9

Esto es lo que encontré en la hoja de datos PIC16F1947:

Al leer el registro PORTB se lee el estado de los pines, mientras que escribir en él se escribirá en el pestillo PORT. Todas las operaciones de escritura son operaciones de lectura-modificación-escritura. Por lo tanto, una escritura en un puerto implica que los pines del puerto se leen, este valor se modifica y luego se escribe en el pestillo de datos del PUERTO (LATB).

Soy desarrollador de firmware y mi experiencia es informática. Todavía me cuesta entender la electrónica y la lógica a nivel de hardware. Solo tengo el conocimiento básico.

Por lo tanto, quiero entender qué sucede cuando los datos se escriben para retener en el nivel de hardware.

Gracias.

Donotalo
fuente

Respuestas:

19

Latch es un tipo de memoria de un bit.

Usemos la imagen en el manual:

Operación genérica de puertos 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. Ver abajo en rojo:

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

Por otro lado, leer desde LATx es diferente de leer desde PORTx.

Cuando estás leyendo desde LATx, estás leyendo lo que está en el Registro de datos ( D-FlipFlop ). Vea la imagen a continuación en verde:

Operación de puerto de E / S genérico Leer LATx

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

Operación de puerto de E / S genérico Leer PORTx

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

Daniel Grillo
fuente
1
+1 para vincular a un lugar que describe claramente el problema (y la solución) (lectura-modificación-escritura) [ techref.massmind.org/techref/readmodwrite.htm] .
davidcary 05 de
1
Guau, gran explicación.
abdullah kahraman
Los dos enlaces al problema de lectura-mod-escritura están rotos.
Randomblue
@ Randomblue, he puesto otro enlace. El problema con el otro enlace es el carácter ']' al final. Simplemente elimínelo en la dirección de su navegador.
Daniel Grillo
6

Para evitar problemas de lectura-modificación-escritura, debe escribir en el puerto en su conjunto, en lugar de configurar o restablecer bits individuales en el puerto. Un problema de RMW puede ocasionar que no se establezca un bit o que otra salida se ponga alta, especialmente si los pines de salida están generando o hundiendo mucha corriente.

Normalmente se usa un "registro de sombra". Establezca o restablezca bits en eso, y envíelo al puerto, para evitar problemas de RMW.

El problema se evita con los PIC 18F mediante el uso de un pestillo separado, los bits individuales se pueden configurar y restablecer con impunidad.

Leon Heller
fuente
pero supongo que no necesito escribir en el registro de cierre, ya que escribir en el registro de puerto original escribirá en el cierre, ¿verdad?
Donotalo
@Donotalo, tienes razón. También puede escribir en el registro de puertos. No importa.
Daniel Grillo
@Donotalo: es posible escribir en el registro de puertos, pero recomendaría por costumbre escribir en los registros LATx en los procesadores que los tienen, y con respecto a los registros PORTx como de solo lectura. Un almacenamiento "ciego" en un registro PORTx (por ejemplo, PORTB = 0x42;) no se comportará de manera diferente de uno a LATBx, y una lectura-modificación-escritura en un registro PORTx (por ejemplo, PORTB | = 0x02;) tendrá un efecto que tendrá puede ser lo mismo que LATx o bien diferir de la manera más probable o indeseable. Por cierto, algunos de los PIC pre-Microchip posteriores ofrecieron LATx; No sé por qué Microchip tardó años (¿décadas?) En hacerlo.
supercat
+1 por mencionar que los chips PIC18F (también conocidos como "PIC de instrucción de 16 bits) tienen el registro LAT, mientras que los chips PIC16F (también conocidos como" PIC de instrucción de 14 bits ") requieren simular el registro LAT en software (" registro sombra ").
davidcary