Folgendes habe ich im Datenblatt PIC16F1947 gefunden:
Durch Lesen des PORTB-Registers wird der Status der Pins gelesen, während durch Schreiben in das PORT-Latch geschrieben wird. Alle Schreibvorgänge sind Lese-, Änderungs- und Schreibvorgänge. Daher bedeutet ein Schreiben in einen Port, dass die Port-Pins gelesen, dieser Wert geändert und dann in den PORT-Daten-Latch (LATB) geschrieben werden.
Ich bin Firmware-Entwickler und habe einen Hintergrund in der Informatik. Ich habe immer noch Schwierigkeiten, Elektronik und Logik auf Hardware-Ebene zu verstehen. Ich habe nur das Grundwissen.
Ich möchte also verstehen, was passiert, wenn Daten so geschrieben werden, dass sie auf Hardwareebene verriegeln.
Danke.
quelle
Um Probleme beim Lesen, Ändern und Schreiben zu vermeiden, sollten Sie auf den gesamten Port schreiben, anstatt einzelne Bits im Port zu setzen oder zurückzusetzen. Ein RMW-Problem kann dazu führen, dass ein Bit nicht gesetzt wird oder ein anderer Ausgang hoch geht, insbesondere wenn die Ausgangspins viel Strom beziehen oder abbauen.
Typischerweise wird ein "Schattenregister" verwendet. Setzen oder setzen Sie die Bits darin und geben Sie sie an den Port aus, um RMW-Probleme zu vermeiden.
Das Problem wird bei 18F-PICs durch die Verwendung eines separaten Latch vermieden, in dem einzelne Bits ungestraft gesetzt und zurückgesetzt werden können.
quelle