Esto es lo que encontré en la hoja de datos PIC16F1947:
Leer el registro PORTB lee el estado de los pines, mientras que escribir en él escribirá en el latch PORT. Todas las operaciones de escritura son operaciones de lectura, modificación y escritura. Por lo tanto, una escritura en un puerto implica que se leen los pines del puerto, este valor se modifica y luego se escribe en el latch 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 los conocimientos básicos.
Entonces, quiero entender qué sucede cuando los datos se escriben para bloquearse en el nivel de hardware.
Gracias.
Latch es una especie de memoria de un bit.
Usemos la imagen en el manual:
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, 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:
Por otro lado, leer desde LATx es diferente a 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:
Y cuando lee desde PORTx, está leyendo el valor real del pin de E/S. Ver abajo en azul:
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.
Para evitar problemas de lectura, modificación y escritura, debe escribir en el puerto como un todo, en lugar de establecer o restablecer bits individuales en el puerto. Un problema de RMW puede resultar en que no se configure un bit, o que otra salida suba, especialmente si los pines de salida están generando o absorbiendo mucha corriente.
Normalmente se utiliza 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, bits individuales que se pueden configurar y restablecer con impunidad.
davidcary
abdullah kahraman
Aleatorioazul
daniel grillo