(日々の記録)デジタルオシロを買った。(日)STM8Sとモノクログラフィック液晶を基板に実装する今年の正月以来取り組んできたSTM8Sでの日本語フォント表示に、やっとのことで成功し、重い荷を肩から下ろしたときのように、暫く力が抜けて前へ進む気力を失った。記念すべきブログ200本めの記事なのだが、焦点が定まらない。当初、このSTM8Sとモノクログラフィック液晶(GLCD)の組み合わせは、電波時計のプラットホームにするつもりだった。これだけ日本語フォントの表示に苦労したのに、時計は日本語テキストを殆ど使わないというのは、いかにも勿体ない気がする。ハードウエアも、まだバラックである。GLCD(JCG12864A37)のインタフェースはブレッドボードで動くように自作のピンソケットをつけたものの、STM8S-Discoveryとの接続は基板のソケットからのジャンパーコードを差しただけで移動することもままならない。バラックで実験していたのは、電波時計でない他の適当なアプリケーションが見つからなかったためである。いって簡単にばらしてしまうのは、これだけ長い間付き合ったセットに何か薄情のような気もする。使うあてがないにしても、少しはまともな形でSTM8SとGLCDを動く形に残しておくことにした。秋月の新商品パワーFET(FKV757)を買ってきた(4/1/2013)実装するとは決めたが急に方針が決まるわけでもない。手を動かしていないと落ち着かない性分になっている。手は勝手に、このあいだのMOS-FETスイッチ制作の続きに移った。念願のサトー電気からフォトボル型カプラー(TLP590B)は手に入れたが、スイッチに使えるようなパワーFETの手持ちがない。GM管(SBM-20)やパルストランスなど自作のための高圧パーツはあのとき全部揃えたのだが、あれからガイガーカウンター制作熱はすっかり下がったままである。このFETはデータシートを見るとオン抵抗は数オーム近くありスイッチ用には適さない。それでもフォトカプラーを試したくて、ブレッドボードに組んでみた。導通テストは普通のマルチテスターの導通モードで確かめる。ブレッドボードなので組むのに10分もかからない。単三を3つ並べた4.5Vを入力側に入れてテストする。おお、無限大を差していた抵抗値が、一気に0Ω近くに下がる。LEDのON/OFFも問題ない。調子に乗って、1.5Vのモーターの入り切りをやってみる。これはさすがに動かなかった。オン抵抗の低いFETが欲しい。ウェブ上で色々物色していたら、おあつらえのように秋月電子からサンケン電気のMOS-FET、FKV575が新商品として売り出された。75Aで導通時のDS間の抵抗が何と8mオーム、しかも値段が¥120と安い。久しぶりに仕事の帰り、秋月に寄った。新商品なので、陳列棚には出ていなかった。秋月は、月、木はバーコードのついた商品しか売らないということでカウンターのウインドウケースには白いシーツがかかっている。店員に商品名を言えば出してくれることがある。急ぐものではないが折角ここまで来たのだがらと、だめもとで店員に聞いてみた。最初、ないようなことを言っていたが、事情通の別の店員が、奥からリールに入った現物を出してくれ無事手に入れることが出来た。帰って夕食もそこそこにわくわくしながらテストに入る。実に安上がりな娯楽だ。例のフォトボル型カプラー(TLP590B)をゲートにつないでまずテスターで導通テスト。おお、このあいだのFETは数オームだったが、今度は測定限度の0オーム。1.5ボルトのモーターは快調に廻る。MOSFETのスイッチ回路と遅延回路(4/5/2013)MOSFETスイッチの目的は、オーディオアンプとスピーカーの間に入れて電源投入時のポップノイズを避ける遅延スイッチである。フォトカプラーやFETの部品は揃ったが、回路をどうするかが悩ましい。スピーカーに流れる電流は交流なので、単純なスイッチでは動かない。ウェブなどを見ていると、オーディオ製品のこうしたソフトスイッチは、結構おおがかりで、回路がどうなっているかわからないがFETを4つも使って一回路を切ったりしている製品もある。こちらは、そんな大げさにするつもりはない。フォトボル型カプラーのおかげでFETをドライブする部分は非常に簡単になったのだが、スピーカーの接続を遅らせる遅延回路と、実際のスピーカー回路に入れるFETの組み合わせになかなか良い回路例が見当たらない。FETを対称に並べるスイッチは、片側のFETは寄生ダイオードを利用して導通している。寄生ダイオード(ボディダイオード)の順電圧降下はデータシートによれば、1V以上で、折角、片側がミリオーム台でも、トータルとしては結構な損失になる。仮に100Wの最大電力がスピーカー負荷(8Ω)にかかったときの電流は、3.5Aで、このときの損失は順電圧降下が1Vとすると3.5W、ヒートシンクが必要になるレベルになってしまう。片側をボディダイオードで導通させない回路を探しているが見つからない。FETを4つ使ったスイッチは恐らく、ボディダイオードを使わない方式だとは思うけれど、どうして実現するのかあれこれメモに書いては見るがうまくいかない。遅延回路の方は、最初からCR時定数で組むつもりをしていたが、フォトカプラーの入力電流をCRで遅延させるのは、大容量のコンデンサーが必要で何か資源の無駄のような気がする。トランジスタをかませばもっと簡単になることに気が付いた。電流の少ないベース側にCRを入れコレクター負荷でフォトカプラーをドライブする。ブレッドボードに組み込む。定番の2SC1815でベースに4KΩ、220μFの遅延回路を入れて0.8秒程度の遅延時間が得られた。いう、ちまちました実験も楽しい。STM8Sとモノクログラフィック液晶を実装する(4/7/2013)FETスイッチはさておき、そろそろ本来のプロジェクトに戻ろう。これまでブレッドボードにジャンパーでつながれていたSTM8S-Discovery基板とAitendoのGLCD(JCG12864A37)を基板に固定する工作を始めた。何に使うか決まっていない。STM8S-DiscoveryのST-LINKの部分も切り取らず、秋月の両面C基板の上下に液晶とCPU基板をソケットでつけることにする。STM8S-DiscoveryのCPU周りには、2X6のピンヘッダーが4つ出ており、C基板には、それぞれそれに見合うソケットをつけて固定する。GLCDは四隅のビス穴とスペーサーで固定する。インターフェースケーブルにはブレッドボード用のmilピッチのピンをつけてあるので、これを基板にハンダ付けしてしまう。抜き差しは、前々回に紹介したリード線のソケットで出来る(あまりやりたくないが)。忘れずにSPIの逆流防止のSBD(ショットキーダイオード)の1S4もつける。UARTは例によって、3ピンソケットでUART線をUSBアダプターにつなぎ、アダプターは共用する。久しぶりのハンダ付けが楽しい。目的がはっきりしているときの作業は捗る。テニスから帰って風呂に入ったあと、少し根を詰めて作業に熱中し、終わった時はさすがに腰が痛くなっていた。チェックもそこそこに通電した。よっしゃー、全く誤配線なしでWelcome画面が出た。苦労したあとの成功も嬉しいが、こういう一発で動くというのも爽快なものだ。これを何に使うかということが決まっていないと言うのがつらいところである。SPIの不具合再発とその解決(4/9/2013)ところが一発で動いた後、思わぬトラブルに巻き込まれた。このあいだのフラッシュメモリの読み出しエラーが再発したのである。ブレッドボードではSBDをGLCDとフラッシュメモリの間にはさんで直ったのだが、今度はSBDが入っていても直結のときと同じようなエラーがでる。エラーの状況は、どこかで、SPIのクロックの1ビット程度が抜け(または余分に入る)、それ以降がすべて狂う。フォントデータだと少しずれるだけで済むが、漢字だとフォントデータに辿りつくデータブロックアドレスが目茶目茶になるので全く字にならないゴミが表示される。これでは使い物にならない。配線が長くなったからなのだろうか。どこかと干渉しているのだろうか。UEW線で結線した配線の長さが特に大きくなったわけでもない。ブレッドボードよりハンダ付けなので明らかに抵抗値は下がっているはずだ。ダイオードをとりかえてみても駄目。配線の位置を変えても駄目。確かに、GLCDのSPIのクロック線は、フラッシュを読みに行く時にわずかな波形が出ている。このSPIのクロックは、CPUクロックの1/2の8Mhzである。トランジスターや、普通のフォトカプラーでは高速すぎて分離できない。ここで、サトー電気で高速フォトカプラーTLP552を買ってあったのを思い出した。おお、先見の明があった。買ってきたのが無駄にならなかったぞ。こいつは10mA以上を入力側に流す必要があり、つないだだけでSPIそのものが動かなくなった。考えてみたらこんなことに¥200以上する高速フォトカプラーを使うのは明らかに資源の無駄遣いだ。それにしても、何故ブレッドボードで動いて、実装するとおかしくなるのだろう。何が悪さをしているのかわからない。こんな些細なことでも上手く行かないと言うのは、不愉快なものである。SPIを複数ディバイスで共用するときのノウハウをウェブで探すが、そういう話はどこにもない。そのうち、Vccの違いを吸収するレベルシフターICを使えば、ハード的な干渉を避けられるような気がしてきた。いわゆるバスバッファーICというやつである。いうICは出力側をHiZ(ハイインピーダンス)にして完全に接続を切ることもできる。バスバッファーのICならFPGAのドングルを作ったときの予備のTC74VHC244がピッチ変換基板に取り付けたまま残っている。ブレッドボードにつけて、ジャンパーピンを実装面に無理やりハンダ付けし、空中配線でテストしてみた。フラッシュメモリは全くエラーなく読み出せるようになった。今のプログラムのUARTはテスト用に、日本語フォントのフォントブロックテーブルをコンソールに表示するコマンドがあるのだが('q')、これがいくら繰り返しても、全く同じデータを表示する。ANK文字表示('d')も、今までは、どこかしら字が欠けていたのだが、全く変わらない。今までの鬱陶しい気分がすかっと抜けて気分は日本晴れだ。はい、完全に中毒にかかっていますな。バスバッファーで問題は解決した。8チャンネルもある3ステートバスバッファーを使うまでもない話だ。世の中には、1チャンネルだけのバスバッファー(74LVC1G125GW)もあるようだが(Digiで¥15)、これだけ買うわけにもいかない(共立電子の通販でも発見。実際の実装には、昔々、電子工作を始めて最初にChaNさんのシリアルプログラマーを作ったときの予備、74HC126を使うことにする。この石は4回路をチャンネルごとにHiZ(ハイインピーダンス)に出来る。HiZにする必要はなさそうだ。enableのままで問題なく動いた。1回路しか使っていないけれど、16ピンDIPくらいならあっても邪魔にならない。基板にハンダ付けする。これでやっと実装版が完動した。ZAZ(ザーズ)にはまる(4/10/2013)全く電子工作とは違う話題でちょっと失礼。珍しく感動したことがあって記録を残しておくことにする。イザベル・ジュフロワ)を知った。所長は音楽と言えばクラシックしか聴かないのだが、これが、このあいだのポルトガルのファドと同じように、何故か心を引き込まれてしまったのである。ジャンルは、シャンソン、ジャズの範囲に入るのだろうか。ハスキーで、メジャーになって本式の伴奏がついたものより、ギターとベースだけのストリート時代の録音の方が訴える力が強い。伝説的なシャンソン歌手、エディットピアフの再来と言われている。日本にも1回来たようだ。歌詞(彼女は作詞作曲もする)は、放送の時は字幕がついていて、結構、歌詞でも引き込まれるのだが、不思議なことに全く理解できないフランス語だけのときでも気持ちが伝わってくる。PCの前で例の雑誌付録のUSB-AUDIOからYouTubeの音をカマデンのデジタルアンプで再生する。良い時代になったものだ。CDを買ってこなくてもとりあえず自由に音楽が聴ける。ファドと違って気分が落ち込まないのが良い。音楽を聴きながら、このブログの原稿を書いたり、電子工作の資料を検索したりする。Command(0x40でlowerアドレスが位置アドレス)という命令があることを知り(データシートP26とP42)、いつかそのテストをしたいものだとブログに書いた。実は、前回発表したソースコードには既にこのコマンドを動かす機能が入っている。UARTモニターの「s」というコマンドがそれで、sn(nは1桁の数字)とやると、nドット分ずれて画面が表示されるようになっている。実装はコントローラーのコマンドたったのひとつで、VRAMのY軸(縦)1ドット単位に任意の場所を画面の最初に持って行くことが出来る。残りの画は巻絵のように上に折り返して表示される。ハードなので表示の切り替えは一瞬である。これを使って、12ドットの漢字をスクロールさせようとコードを入れてみたが、全くうまくいかなかった。液晶がFSTNで残像が大きく、100ms以上の待ちを入れないとちゃんと絵がでないということもあるが、うまくいかなかった理由はそれだけではない。このGLCDの縦のサイズは64ドットで、12ドットの漢字を5行表示すると、下に4ドットの余りが出来る。これを単純に12ドット単位にスクロールさせると、この4ドットの余白がずれて動くので、文字が無駄に動いてスクロールしたように見えなくなるのだ。理屈はわかったが、これをどうやって解消してスムーズなスクロールに出来るかうまい方法が見つからない。画面下の4ドットの余白を残しながら、画面60ドット分だけをスクロールさせるのは、簡単なロジックでは実現できない。いうことで、スクロール機能は放ってあったが、実装が一段落したので、これも何とか実現させてみようと取り組んでみた。考えれば出来るだろうと思っていたのだが、これが思いのほか手強い。フォントを画面の下段から上段にかけて分離して描画しないと、余白をなくすことは出来なさそうだ。なると相当基本的な部分まで手を入れないとスムーズなスクロールは出来ない。問題が難しいとわかると、余計燃え上がるのが性分である。ブログの原稿を書きながら、ロジックに頭をひねる。擬似コーディング以前に考え方を整理しておく必要がある。メモに図を描きながら、何度も発想を換えて一番合理的な方法を研究する。その結果、やはり当初のやりかた通り、文字フォントの描画、画面の領域(レクタングル)のクリアなどの関数を、Y軸についてシームレス(最大幅まで来たら折り返して0に戻る)に動くようにすれば、画面のスクロールの部分は単純な演算だけ(フォントを書き出すVRAMアドレスは16回も変わって元へ戻るが)で、表示できることを擬似コーディングで確かめた。実装はこれからで、文字フォント描画関数がはたしてシームレスに動くように改装できるか確認できないが、とりあえず何とか動きそうな感じである。ささやかだがこういうときも達成感がある。本当は動いてから報告するべきだが、ちょっと時間がかかりそうなので、このあたりでブログに上げることにする。動いたかどうかは次記事をお楽しみに。半年ぶりのブログ更新に漕ぎつけた(2019.09.19)研究所活動は停滞したままでCCDカメラ顕微鏡導入など(2019.02.08)ドングルのHFコンバーターでJJY標準電波は見えたか(2018.12.12)JJY電波を見るため、RF(高周波)の世界に踏み込む(2018.10.31)ESP8266のJJY電波時計のスケッチ公開(2018.10.02)「STM8S」カテゴリの記事STM8Sでグラフィック液晶に漢字をスクロール表示する(2013.04.26)STM8Sとモノクログラフィック液晶を基板に実装する(2013.04.14)STM8Sでグラフィック液晶に日本語文字が表示できた(2013.03.30)リニアPCMプレーヤーのデバッグで電子工作に戻る(2013.03.17)STM8Sでグラフィック液晶に文字を表示することに成功(2013.02.14)コメントkugaさん、お久しぶりです。>>(ここが間違っている?)。>はい、間違っています。実は数日前から、オシロと信号発生機でACをFETにかけて実験しているのですが、出力がACのまま出てくるので頭を抱えていたところでした(半波波形を期待していたのですが)。ACなのでFETを切って(ゲート0V)も、脈流らしいものが流れます。これが寄生ダイオードの分なのでしょうか。これを止めているのが、2つ背中合わせにしたFETスイッチだと言われれば納得がいきます。23時01分がた老さん、こんにちは。>FETはゲートでオンにしても、逆方向には流れませんよね>(ここが間違っている?)。はい、間違っています。(寄生ダイオード経由ではなく)Sam_Yさんが、15日のコメントで以下のように指摘してます。19時01分shuji009さん、こんにちは。ハードスクロールの実装は先週完成し、今、動画をどうやってアップロードするか思案中です(まともな音が録れない)。勘違いがいくつかあって、まともに出るまで四苦八苦でした。表示も、一字づつ数十ms時間を置かないとFSTNでは真っ白になってしまいますね(スクロールは早いですが)。動画をつけてアップします。15時44分ハードウェアスクロールですが、既に実装済みだと思いますが、先ほど、思いついた方法。条件:縦12ドットのフォント文字の縦スクロール文字列は、5行分。上から4行を12ドットに、直下1ドット分を空白にする。64ドット最後の文字列だけは、下の空白無し。スクロールは1ドット毎13回する(ちらつくようであれば、適当にディレイをいれたり、ハードウェアスクロール値を2-3ドット程度にする必要有りと思います)SPI速度が十分とれれば、仮想VRAMからの転送でも良いと思いますが(汗;)。実際にどうされたのか楽しみです。01時17分Sam_Yさん、たびたびどうも。switchは、まさしく、2個のFETを使ったスイッチです。逆方向にもオンの時は流さなければいけません。FETはゲートでオンにしても、逆方向には流れませんよね(ここが間違っている?)。片側は寄生ダイオードで導通していると理解しているのですが。それでいいと思います。寄生ダイオードの損失は考えなくていいです。