2026.6.25
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第244回]



●PIC18F45K50(7)SR Latch(4)

前回までのところではまだSR Latchについて完全には理解していないところがありました。
さらに思い違いをしてSRQビット出力とSRNQビット出力を取り違えてしまったこともあってさらに混乱してしまいました。
まだよくわからないままにあれこれ試していくなかでとにかくSRCON0とSRCON1を前回まで書いてきた通りに設定することでSRQ出力ビット(RA4)が0になりSRNQ出力ビット(RA5)が1になることがわかりました。
そしてSRI入力ビット(RB0)を1にすると出力が反転してSRQ出力ビット(RA4)が1になりSRNQ出力ビット(RA5)が0になることを確認しました。
SRラッチはH入力でラッチされるようです。
確かにSRラッチ動作はしているようです。
しかしそのように一度ラッチしたものをクリアするにはどうしたらよいのかそこがわかりませんでした。
ロジック回路のRSフリップフロップではSET入力とRESET入力があります。
SET入力によってラッチ出力をセットしますがRESET入力によりラッチ出力はRESETされます。
しかしPIC18F45K50のSR LatchではSRI入力はSETかRESETかいずれか一方しか設定できません。
ひょっとしてSRCON1のbit7を1にする代わりにbit3を1にするのかも?
そうしておいてSRI入力を1にすればSR Latchはリセットされることになりますけれど。
こちらがSRCON1です。

[出典]Microchip TechnologyInc. PIC18F2X/45K50 Datasheet

いやいやいや。
それはあまりにおかしい。
よくわからないときはやっぱり元に戻ってDocumentを読み直してみるべきです。
ひょっとするといい加減に読んでいて読み落としているところがあるのかも。
確かに。
読み落としておりました。

[出典]Microchip TechnologyInc. PIC18F2X/45K50 Datasheet

21.1 Latch Operationのところです。
The SRPS and the SRPR bits of the SRCON0 register may be used to set or reset the SR latch,respectively.
と書いてあります。
おお。
SRPSビットとSRPRビットなんてのがあるんだ。
やっぱりよく読まなければいけませんねえ。
こちらはSRCON0です。

[出典]Microchip TechnologyInc. PIC18F2X/45K50 Datasheet

SRCON0のbit1がSRPSでbit0がSRPRです。
ということは。
SRCON0のbit0を1にすればSR Latchがリセットされるはずです。
さっそく試してみました。

なるほど。
/wr SRCON0,8dの実行でPORTA出力が[20]になりました。
RA5=1、RA4=0ですからQ_=1、Q=0です。
そして/wr SRCON0,8eの実行でPORTA出力が[10]になりました。
RA5=0、RA4=1ですからQ_=0、Q=1です。
これでやっと納得できました。
あらためて/wr SRCON0,8dの実行でテスト開始です。
/rd PORTAの実行で[20]を確認してSRI入力を1にしたあともう一度/rd PORTAの実行で[10]を確認しました。
これだけでは何をやっているのかわかりませんね。
こんなことをやっていました。
今新しいPIC18F45K50を使ったPICBASICコンパイラボードの製作を計画中です。
それが出来上がればもっとすっきりした形でテストができると思うのですが今は以前作った基板しかないので手っ取り早くテストしようとするとこんな状態でテストをするしかありません。

中央上部にあるのがPICBS01ボードとPICBS02ボードです。
今回はSR Latchの動作を確認するためにPICBS02(PIC18F45K50)のSRI(RB0)とSRQ(RA4)とSRNQ(RA5)にカメレオンロジアナを接続しています。
SRI(RB0)には下図のように抵抗とトグルスイッチを接続しています。

RS Latchなので動作テストならプッシュスイッチでよいのですが今回はチャタリング動作の確認もしたいのであえてトグルスイッチを使いました。
最近のプッシュスイッチ(タクトスイッチ)はなかなか優秀で余りチャタリングが発生しません。
写真のトグルスイッチは某国製でしっかりチャタリングが発生します。


カメレオンロジアナの表示画面です。

PROBE0がSRI(RB0)でこの入力がLからHになるとトリガが発生します。
PROBE1がSRQ(RA4)でPROBE2がSRNQ(RA5)です。
トリガ発生と同時にSRQはHになりSRNQはLになりました。
SRIにはチャタリングが発生しています。

約300μs後ですがチャタリングは収まっていません。

SRQはHをSRNQはLを安定に維持しています。

約500μs後ですがチャタリングはまだ収まっていません。


やっと約590μs後にチャタリングが収まりました。


以上でSR Latchのテストは終わりです。
前の回でも書きましたがPICBASICコンパイラならばSFRに試しに値を設定してその結果をリアルタイムで確認することがいとも簡単にできてしまいます。
めちゃめちゃ便利なツールなのです。
しかも今回のテストなどはBASICプログラムを使う以前にコマンドだけでそれができてしまいました。
これを作った私自身が「これは便利だー」と思っています。
以上。自画自賛です。
まあ宣伝なんて全部自画自賛、手前味噌なんですけれど。

PICBASICコンパイラ[第244回]
2026.6.25 upload

前へ
次へ
ホームページトップへ戻る