LATCHにデータが書き込まれるとどうなりますか?


9

これは、PIC16F1947データシートで見つけたものです。

PORTBレジスタを読み取るとピンのステータスが読み取られ、レジスタに書き込むとPORTラッチに書き込まれます。すべての書き込み操作は、読み取り-変更-書き込み操作です。したがって、ポートへの書き込みは、ポートピンが読み取られ、この値が変更されてから、PORTデータラッチ(LATB)に書き込まれることを意味します。

私はファームウェア開発者で、バックグラウンドはコンピューターサイエンスです。私はまだハードウェアレベルでエレクトロニクスとロジックを理解するのに苦労しています。私は基本的な知識しか持っていません。

そこで、ハードウェアレベルでラッチするようにデータが書き込まれるとどうなるかを理解したいと思います。

ありがとうございました。

回答:


19

ラッチは1ビットのメモリの一種です。

マニュアルで画像を使用してみましょう:

汎用I / Oポート操作

I / Oピンにビットを書き込むと、このビットがデータバスからデータレジスタ(D-FlipFlop)に格納されます。このビットのTRISxが0の場合、データレジスタのQからのデータはI / Oピンにあります。LATxまたはPORTxでの書き込みは同じです。以下の赤字を参照してください。

汎用I / Oポート操作書き込み

一方、LATxからの読み取りは、PORTxからの読み取りとは異なります。

LATxから読み取るときは、データレジスタ(D-FlipFlop)の内容を読み取っています。以下の緑色の画像を参照してください。

汎用I / Oポート操作読み取りLATx

また、PORTxから読み取る場合、実際のI / Oピン値を読み取っています。青色で以下を参照してください。

汎用I / Oポート操作読み取りPORTx

PICは、読み取り、変更、書き込みを使用して操作を書き込みますが、これは問題になる可能性があるため、このシャドウレジスタを使用して回避します。


1
場所にリンクするための+1は、(read-modify-write)[ techref.massmind.org/techref/readmodwrite.htm]問題(および解決策)を明確に説明しています。
davidcary 2011

1
うわー、素晴らしい説明。
abdullah kahraman

読み取り-変更-書き込みの問題への2つのリンクが壊れています。
Randomblue

@Randomblue、私は別のリンクを入れました。他のリンクの問題は、末尾の「]」文字です。ブラウザのアドレスから削除してください。
Daniel Grillo 2013

6

読み取り、変更、書き込みの問題を回避するには、ポートの個々のビットを設定またはリセットするのではなく、ポート全体に書き込む必要があります。特に出力ピンが大量の電流をソースまたはシンクしている場合は、RMWの問題によりビットが設定されないか、別の出力がHighになる可能性があります。

通常は「シャドウレジスタ」が使用されます。その中のビットを設定またはリセットし、ポートに出力して、RMWの問題を回避します。

この問題は、個別のラッチを使用することで18F PICで回避され、個々のビットは無事にセットおよびリセットできます。


しかし、元のポートレジスタに書き込むとラッチに書き込むので、ラッチレジスタに書き込む必要がないと思います。
ドノタロ2011

@Donotalo、あなたは正しい。ポートレジスタにも書き込むことができます。それはどうでもいい事です。
Daniel Grillo

@Donotalo:ポートレジスタに書き込むことは可能ですが、習慣として、それらを搭載したプロセッサのLATxレジスタに書き込み、PORTxレジスタを読み取り専用と見なすことをお勧めします。PORTxレジスタへの「ブラインド」ストア(例:PORTB = 0x42;)はLATBxへの動作と同じように動作し、PORTxレジスタへの読み取り-変更-書き込み(例:PORTB | = 0x02;)は、 LATxと同じであるか、そうではない可能性が最も高い方法で異なります。ところで、後のマイクロチップ以前のPICのいくつかはLATxを提供していました。なぜマイクロチップがそうするのに何年(数十年)かかったのかはわかりません。
スーパーキャット2011

PIC18Fチップ(別名「16ビット命令PIC」)にはLATレジスタがあり、PIC16Fチップ(別名「14ビット命令PIC」)はソフトウェアでLATレジスタ(「シャドウレジスタ」)をシミュレートする必要があることを言及するための+1
davidcary
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.