2024年11月30日土曜日

PICのEUSARTの送信バッファー

 RS-485等の半二重通信線にてデーターを送受する際は、
トランシーバーICの送受切替を行う必要がありますね。

細かい事を言ってしまえば、レシーバーはイネーブルのままでも構わないので、
厳密に制御が必要なのはドライバーの方です。

ではそのドライバーの制御タイミングは どうするかと言いますと、
他の端末がデーター送信を行ってない事を確認した上で、
シリアルポートからデーター送出する直前にドライバーをONにし、
データー送出を終わったら速やかにドライバーをOFFにする、
という至極簡単な動作。

この動作中で問題になるとしたら、データー送出完了をどう判断するか。
これをミスると、送出データーが欠如してしまう事態が発生しちゃったり、
無駄にドライバーがONしたままになって、コンフリクトを起こしたりします。 

 

PICマイコンにてこの辺の判断を行うのに使えそうなのが、TRMTビット。
送信バッファーの空き状態を表すビットだそうな。

単純に考えるなら、TRMTビットを見て、送信バッファーが空になったなら、
直ちにドライバーをOFFにすれば良さそう。

しかし本当にそのタイミングで支障が無いのか?
ちょっと気になったので調べてみることにしました。

使ったPICは12F1822で、トランシーバーICとしてLT1785が繋がってます。
今回、差動信号線までは見ないので、トランシーバーICは無くてもOKなのですが(笑)

ということで早速見てみたのが以下の波形。









 

ボーレートは約230kbpsです。
PICのポート操作のレスポンスを良くする為、MAXの32MHzで動かしてます。

送信バッファーエンプティモニターはTRMTビットの状態表示です。

これを見ると、EUSARTからシリアルデーターを送出完了次第、
TRMTビットが変化していますね。
これならばTRMTビットをドライバーON/OFFの参考にしても問題無さそうです。

上記の波形ではデーター送出が完了してからドライバーがOFFになるまで、
約1msくらい間がありますが、これはわざと遅延を入れてる為です。

 安全を見てタイミングに余裕を取っていたのですが、
実際のところ不要の様ですね。

2024年11月26日火曜日

外気温モニターの拡張 その5

 かなり間が空いてしまいましたが、久しぶりに「新型外気温モニター」の話です。

今月は  もう暇になってしまった 効率的に仕事を進めた結果 手が空いたので、
外気温モニターを進めることにしました。

先に書いようにハードは一応出来たので、次はファームウェアです。

ソフトウェア視点だと、このシステムは下記の様な構造になります。




これだとPICマイコンの区別が しづらいので、以下の様に番号を付けます。




この3個のPICマイコンそれぞれにファームが必要なわけですが、
③は「かんたんスマートモニター」のメインチップですので、
「かんたんスマートモニター」のファーム変更という内容に。
これについては当記事がでは特に触れない方向で行きます。

①と②が「新型外気温モニター」様のPICマイコンで、
RS-422とSPI信号の変換を行っています。

さて、「新型外気温モニター」に載ってるセンサーモジュールBME280は
インテリジェントなユニットですので、アナログセンサーの様に
電源を投入すればダラダラと測定値が読めるわけではありません。
まず、センサーの初期設定が必要となります。
その後、ハンドシェイク手順に基づいて測定値を読み出すことになります。

ではそのハンドシェイク手順の制御を誰が行うか?が1つのポイントになります。

3つ有るPICマイコンの内、どれかが行うわけですが、
どれに任せるかは設計思想に関わる話になります。

①に任せるケース
「外気温モニター」内のPICマイコンがセンサーの面倒を全てみるパターンです。
この場合、RS-422線を通るのが測定データーのみとなるので、
通信線のプロトコル設計が非常に簡単になります。
しかしながら、センサーに対するアクセス内容に変更が生じた場合、
「外気温モニター」内のPICマイコンのファーム変更が必要となるわけで、
ファームを「かんたんスマートモニター」側から書き換えられる仕組みを
用意していなかった場合、アフターファローが非常に面倒なことになります。

②に任せるケース
これは選択されることは無いと思われます。
メリットが思い浮かびません。(笑)

③に任せるケース
これは「かんたんスマートモニター」のメインマイコンにて、
BME280の制御を全て行うというパターンです。
「かんたんスマートモニター」自体はアクセスが容易な場所に設置されるので、
BME280へのアクセス制御に変更が生じても、割りと簡単に書き換えができます。
しかしながらRS-422の通信に、それら全てを折り込む必要があるので、
通信線のプロトコル設計が一番面倒になります。
RS-422はSPIに比べ通信速度も遅いので、それも考慮する必要があります。


ということで、上記をどうするか、湯舟に浸かりながら考えてましたが(笑)、
今回は①に任せる方法を採用することにいたします。

理由は大きく2つ。
①RS-422線の通信プロトコルが非常に簡略ができる。

BME280の面倒を①のPICが見るならば、「かんたんスマートモニター」から
「外気温モニターユニット」へ送るデーターはほぼ無くせます。
データー垂れ流し式にするならば、皆無にすることも可能かと。

「外気温モニターユニット」から「かんたんスマートモニター」へ行くデーターも
測定値だけで済むので、最低限の簡単なデーター形式にできます。

②「外気温モニターユニット」単体で完結する

どういう意味かと言いますと、電源を投入すれば、
RS-422で簡単に測定値が読めるユニットが出来上がる、という事なのです。
これならば、「かんたんスマートモニター」用と限らず、汎用性が出るわけですね。

PIC②やPIC③で制御する方式だと汎用性は非常に低くなってしまい、
事実上「かんたんスマートモニター」向け専用ユニットになってしまいます。

ユニットとして単体動作が可能ならば、RS-422/RS-232の変換アダプター経由で、
パソコンからアクセス可能になるので、開発時の効率も格段に上がります。
デバッグ時、「かんたんスマートモニター」経由でのアクセス必須というのは、
結構面倒な話になるんですね。


ということで、まずはちまちまとPIC①のファームから書いていきましょうかね。

2024年11月23日土曜日

やらかし発覚

 前の記事に続いて、また失敗話とか縁起悪いけど勘弁plz

某氏向けのハードで設計ミスに気付いたもんで、
急遽戻してもらって改修することにした話です。

PICマイコンからTTLロジックである7438を押すと言う回路なのですが、
間に別基板が噛むこともありまして、うっかり下記の様になっちゃいました。





 

1つの信号線上に3.3Vのプルアップと5Vのプルアップが同居しちゃってます。
これは当然マズいわけですね。

マイコン基板は元々別目的で作ったものを流用してます。
この接続ならば本来、マイコン基板上で3.3Vプルアップは行わないんですね。

このマイコン基板を使うとしても、本来ならば以下の様な設計にしなきゃなりません。





 

さてどう修正するかが悩みどころ。
本来ならば上図の様に換えるのが筋ですが、
ドライバー基板上には3.3Vの電源が存在しません!!
つまり3.3Vのレギュレーターから用意する必要があるわけです。

う~~ん、さすがにそれは大がかりになっちゃうなぁと・・・・・
そこで閃いたのが下記の方法。






 

プルダウン抵抗を追加し、見た目3.3Vでプルアップされてる様にするものです。
これなら改造も少なくて済むので、この方針で行くことに。

3.3Vということならば、18KΩではなく20KΩでプルダウンすれば、
3.33…V相当になるので近くなりますが、
3.3Vよりも高くなるのは避けたいわけでして、
抵抗の誤差も考慮すると若干低い電圧にしたいところ。
そこで18KΩにしました。
これだと約3.21V相当という値になりますので、
抵抗の誤差を加味しても3.3Vを大幅に超過することはないでしょう。


さてでは実際の改修作業ですが、ドライバー基板内のプルアップ抵抗は
実際にSIP型の抵抗アレーなんですね。
それにちまちまプルダウン抵抗を1本ずつ付けていくのは難儀です。
ですので18KΩの抵抗アレーで一気にプルダウンすることにしましょう。

しかしここで問題が!!

18KΩの抵抗アレーって、入手性が悪いんですね。
さてどうしたものか・・・・・・
海外から引っ張るか?
とか考えていたら、またまた閃きました。

以前「つくまた」で頒布した抵抗アレーキットを使えばいいんじゃね?

チップ抵抗さえあれば、任意の抵抗アレーを自作できるのが強み。

ということで作った抵抗アレーが下記。









 

8連タイプはオリジナルのキットのままですが、
4連タイプは9連用キットをカットして作っています。
一応こういう使い方も想定していました。


抵抗アレーが用意できたので、いざ実装。









 

こんな感じで無事改造完了です。
基板にアセテートテープを貼り、その上に抵抗アレーを置いてます。
GNDをスズメッキ線で引っ張ってきてるのはご容赦という感じ。

2024年11月17日日曜日

いやぁ、失敗失敗

 先日の15日の晩、私が主催の「基板作成パワーアップ1」を開催。
数人しか来て頂けなかったらどうしようと心配してましたが、
結果的に15人近い参加者が集まりまして、
会場のキャパを考慮すると大成功という結果でした。

何より、この内容に対する需要の存在を実感できたのが大きかったです。

と・こ・ろが、最初の発表者である私が いきなりのチョンボ。
ホワイトボードのPC上の基板CADのハイブリット形式の予定でしたが、
ノートPCの画面が会場の大型TVに映らない!!
これでは基板CADを使った説明ができないわけです。

急遽、ホワイドボードのみで発表を行いましたが、
かなり端折った内容になってしまいまして、ちとガックリ。

次回は ちゃんとした内容で発表したいと決意しておりますが、
そもそもなんでPCの画面が映らなかったのか?
帰宅後に気づいた(忘れてた?)のですが、
そのノートPC、HDMI出力を使う際はキー操作が必要なのでした!

他のノートPCはHDMIケーブルを挿せば自動で対応してくれるので、
全く思いもよりませんでした。

まぁそんなわけで、ノートPCの故障というわけではなかったので、
次回は大丈夫!(のはず)


ちなみに次回ですが、来年の2月くらいで考えております。
今回は会場費や軽食費等、全て自腹を切ったわけですが、
次回は某社が会場を提供して頂けそうな雰囲気。
大変ありがたいですね。