Was passiert, wenn Daten in LATCH geschrieben werden?

9

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.

Donotalo
quelle

Antworten:

19

Latch ist eine Art Speicher von einem Bit.

Verwenden wir das Bild im Handbuch:

Generischer E / A-Port-Betrieb

Wenn Sie ein Bit in einen E / A-Pin schreiben, speichern Sie dieses Bit vom Datenbus im Datenregister ( D-FlipFlop ). Wenn TRISx dieses Bits 0 ist, befinden sich Daten von Q des Datenregisters im E / A-Pin. Schreiben in LATx oder PORTx ist das gleiche. Siehe unten in rot:

Generischer E / A-Port-Betrieb Schreiben

Auf der anderen Seite unterscheidet sich das Lesen von LATx vom Lesen von PORTx.

Wenn Sie aus LATx lesen, lesen Sie, was sich im Datenregister ( D-FlipFlop ) befindet. Siehe Bild unten in grün:

Generischer E / A-Port-Betrieb LATx lesen

Und wenn Sie von PORTx lesen, lesen Sie den tatsächlichen E / A-Pin-Wert. Siehe unten in blau:

Generischer E / A-Port-Betrieb Lesen Sie PORTx

PIC verwendet Lese-, Änderungs- und Schreibvorgänge, um Operationen zu schreiben. Dies kann ein Problem sein . Daher verwenden sie dieses Schattenregister, um dies zu vermeiden.

Daniel Grillo
quelle
1
+1 für die Verknüpfung mit einem Ort, der das Problem (und die Lösung) [ techref.massmind.org/techref/readmodwrite.htm] klar beschreibt .
Davidcary
1
Wow, tolle Erklärung.
Abdullah Kahraman
Die beiden Links zum Lese-Mod-Schreib-Problem sind unterbrochen.
Randomblue
@ Randomblue, ich habe einen anderen Link gesetzt. Das Problem mit dem anderen Link ist das Zeichen ']' am Ende. Löschen Sie es einfach in Ihrer Browseradresse.
Daniel Grillo
6

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.

Leon Heller
quelle
aber ich denke, ich muss nicht in das Latch-Register schreiben, da das Schreiben in das ursprüngliche Port-Register in das Latch schreibt, oder?
Donotalo
@ Donotalo, du hast recht. Sie können auch in das Portregister schreiben. Es tut nichts zur Sache.
Daniel Grillo
@Donotalo: Es ist möglich, in das Port-Register zu schreiben, aber ich würde aus Gewohnheit empfehlen, in die LATx-Register auf den Prozessoren zu schreiben, auf denen sie vorhanden sind, und die PORTx-Register als schreibgeschützt zu betrachten. Ein "blinder" Speicher in einem PORTx-Register (z. B. PORTB = 0x42;) verhält sich nicht anders als einer in LATBx, und ein Lese-, Änderungs- und Schreibvorgang in ein PORTx-Register (z. B. PORTB | = 0x02;) hat eine Auswirkung, die sich auswirkt entweder mit LATx identisch sein oder sich auf höchstwahrscheinlich unerwünschte Weise unterscheiden. Übrigens boten einige der späteren PICs vor dem Mikrochip LATx an; Ich weiß nicht, warum Microchip Jahre (Jahrzehnte?) Dazu gebraucht hat.
Supercat
+1 für die Erwähnung, dass PIC18F-Chips (auch bekannt als "16-Bit-Befehls-PICs") das LAT-Register haben, während PIC16F-Chips (auch bekannt als "14-Bit-Befehls-PICs") die Simulation des LAT-Registers in Software ("Schattenregister") erfordern.
davidcary