2025年10月22日水曜日

小ネタ


 三菱電機グループの技術を紹介する「三菱電機技報」全バックナンバーを公開 | 三菱電機

 オンラインで公開していなかった1959年以前についても公開を始めたよ、とのこと。’50年代はともかく、それより前は現代の文に慣れてる身からするとかなり読みづらいけど。

 興味はあるけど、いかんせん量が多いのでなぁ……



 なんか頭痛いなーと思って熱を測ったら37.1℃あって、慌てて加湿器をつけて寝たら、翌朝には36.8℃くらいまで下がってた。その後.8と.9を行ったり来たり、といった感じ。体感ですごい楽だから熱下がったのかなーと思って測ったら37.1℃だったりとか。人体謎い。

 信頼できない湿度計によると、部屋の湿度は45%くらいだった。一晩加湿器をつけて4Lくらいぶちまけて58%くらい。部屋にいるとわからないけど、一旦部屋を出て数分して戻ってくると、部屋に入ったら明らかに蒸し暑い感じがする。単純に加湿器(加熱型)で熱が供給されているのもあるだろうけど。

 部屋の外に設置したGPSアンテナの同軸線を引き込むために窓を数mm開けているので、加湿してもここから空気が交換されるっぽい(室温と外気温の温度差で循環しそう)。とりあえずマスキングテープを窓枠に貼って密閉。これで加湿器をつけると湿度は上がるようになったけど、部屋があちぃ。。。なんだよ10月も後半に29℃って……

 なお、今回更新分の内容が薄いのは体調不良ではなく、ダッコフが原因です。


 ダッコフはドロップが渋いのでなかなか難しいね。例えばDELTA FORCEのオペではデイリーとかウィークリーで装備チケットが貰えたからそれを使い潰して大して稼がなくてもだいぶ遊べたけど、ダッコフでは全部自分で装備を整えなきゃいけないのでデスペナがキツイ。

 最初の数日はわりと遊んだけど、気軽に行ける範囲が結構狭くてすぐ飽きちゃった。




  オンライン対戦のデスマッチ型タイピングゲーム。現在デモ版がフリー公開中。

 対戦型とはいえFPSみたいなゲームに比べれば比較的個人戦に近いのでだいぶ遊びやすい。とはいえ、勝率は悪いので大抵のゲームは普通に撃ち殺されるけど。……タイピングゲームで撃ち殺されるとは一体。。。

 最大100人が同時に入れるのかな? 200人に加えて机やタイプライター等の小物が100セット配置してあって、グラ要求がかなり大きい。

 自分の場合、誤入力が比較的多いので1ミスが命取り(文字通り)になるこのゲームは結構大変。あと、単に英語能力が低いのもボトルネック。次に入力する単語を読み上げるみたいな機能があればタイピング練習だけじゃなくて英語学習的に良さそうな気がする。

 日本語モードも欲しくはあるけど、実装難易度は段違いだろうな。日本語は英語と違って入力の揺れがあるから、それらを許容しようとすると結構手を入れなきゃいけなさそう。


 プレイ時間1時間ちょっとでレベル100を超えて、いくらでもやれそうだけどこれ以上は何かしらに支障をきたしそうなので一区切り。気がついたらレベル200超えてるけど多分なにかのバグ。



 そういえばIdiosが案件してたQTTA、プライムデーで箱買いしていたのが届いたので、とりあえず醤油を試食。記憶の中のQTTAってもっと重いイメージだけど、リニューアルした分が効いてるのか、記憶違いなのか、思ったより食べやすかった。ただ、主食にするには少ないし、間食にするには多いし、微妙なところ。まあ、大抵のカップラーメンはそれくらいの感じだけど。ボリュームが欲しいならパックご飯とか温めればいいしな。そのあたりは個人が好みで調整といったところで。

 最近あまりカップ麺を食べてなかったので結構久しぶりな気がする。昔は別ブランドの6種類入り12個入りとかを箱買いして毎日それを1個ずつ食べるみたいな生活を結構長期間やっていたせいで、その頃に食べていたカップ麺は食傷気味。そういう意味では、QTTAは当時ほとんど食べなかったので、気軽に食べられそうだが。


 カップ麺を食べながら、日常生活の中で時計の時刻精度が10秒くらいで要求される状況もなかなか無いよなー、などと考えたり。待ち合わせでも例えば1,2分くらいのズレは許容できそうな気がする。

 カップ麺を作る場合、3分として10秒で5%くらいだから、湯を入れる場所と食べる場所が物理的に離れている場合、双方の時計が10秒以下程度で同期している必要がある。クォーツ時計は月差10秒前後だから、その誤差が出る時計の場合は数週間程度の頻度で時計を合わせておく必要がある。電波時計やNTPで時刻同期した時計の場合は最大でも数秒程度の誤差に収まるはずだから、カップ麺を食べるときでも安心。



 たまーに流れてくる「ウン十年無借金で経営してきた(経営状況に問題のない優良な)町工場が後継者不在で廃業するしかない」みたいなニュース、人材育成のコストをケチったから無借金だっただけでは?って気がするな。「誰か後を継いでくれる人がいないか」とか言っても、その「誰か」って、最初から自分と同じスキルを持っていることを期待しているんでしょ? 長期間無借金経営ってことはその間に大規模な設備投資も行っていないだろうし、何十年も前に作られたマニュアルもなければ保守できる人も居ない機械が並んだ工場を売りつけられて「明日からよろしく」とか言われたってどうにもならないでしょ。最悪鉄くず程度の価値しかない工場なのでは?



 最近PCのオーディオ系が調子悪いんだよなー。有線イヤホンが時々ゴッソリ抜ける。おそらく充電器に入れてあるEcho Buds 2がPCと接続して出力先がそっちに吸われてるんだと思うんだが。実際、ケース内のBudsをグリグリ押すと正常に戻るし。しばらく放置しても戻ることもある。ファームウェアのバグっぽい挙動なのか、あるいは電気的な問題なのか。BGMとか動画とかの音声が頻繁に途切れるのは結構ストレスが溜まる。



 SDカードにUbuntuを焼いてみたけど、うちのノートPCは内蔵のSDカードリーダーからのブートには非対応っぽい。残念。USB接続のSDカードリーダー経由でも駄目っぽい。同じUSB MSC扱いだと思うけど、USBメモリからは起動できてSDカード(USBリーダー)からは起動できないのちょっと謎い気もする。


 このノートPC、前に使っていたものに比べてほとんど半分くらいまで軽くなっているので取り回しがかなり楽。画面も広くなってFHDになったし。この軽さに慣れたら次に買うノートPCが重くて使えないんじゃないかってレベルで軽い。

 ただ、トラックパッドのスクロールに変なクセが有るのと、CapsLock(Ctrlに割当)を押すとトラックパッドが一瞬反応しなくなるのと、あと動作が全体的に遅い。一応何世代か前のi5が入っているけど、Visual StudioでのビルドとかをメインのPCと比べると圧倒的に時間がかかる。


***


 Windowsでのfl2k、ウイークリービルドのosmo-fl2k-64bit-20220706.zipは動作する(少なくともfl2k_test.exeでsps/2が出る)けど、おそらくその次のosmo-fl2k-64bit-20231112.zip以降は動作しない。


 libosmo-fl2k.dllの戻り値が結構クセがあって大変。列挙型ではSUCCESS = 0で定義してあるけど、例えばfl2k_set_sample_rateの戻り値はintで、正常時には4が帰る。これはfl2kチップのレジスタに値を書き込むfl2k_write_regの戻り値が帰っていて、この関数はlibusb_control_transferの戻り値を返している。ここで4バイトの配列を与えているから、正常時には4が帰り、例えばタイムアウトエラーが発生した場合にはLIBUSB_ERROR_TIMEOUTが帰るが、これはFL2K_ERROR_TIMEOUTで同じ値(-7)が定義してあるから、それが見える(実際にどういうエラーメッセージが出るのかは未確認だけど)。

 大雑把には、負数の場合はエラー、ゼロ以上であれば概ね正常、みたいな判断になる。厳密にやるなら例えばfl2k_set_sample_rateの戻り値は4以外をエラーとする、みたいな扱いでもいいけど、実装が変わったときに対応できない懸念がある。


 とりあえずopen/closeとサンプルレートのset/getは動いているような気配がある(getはFL2000から読んでいるわけではないけど、少なくともDLLレベルまでは正常にアクセスできているはず)。ただ、start_tx/stop_txを入れると、コールバックは呼ばれるが、適当な乱数を入れた配列を与えても出力されないし、その後のcloseはハングアップする。

 参照しているコードは最新のコミットだから20220706版のビルドと違う可能性もありそうだけど、古いバージョンのタグをZipで落としてヘッダを見ても内容はほとんど変わらないから、少なくともAPIを叩くレベルでは区別せず使えるはず(さらに古いバージョンだとI2C機能がなかったりする)。


 試しにi2c_readを適当な引数で叩いてみると、指定したアドレスのI2Cコマンドが出る。ターゲットデバイスをつないでいないから最初のアドレスでNAKを読んでFL2K_ERROR_NOT_FOUNDが帰るけど。とにかく、物理的にFL2000を開いてI2Cコマンドが出ることはオシロで確認できたから、少なくともfl2k_openは正しく動いているし、それで得られたデバイスハンドラも最低限取り扱うことはできているはず。

 i2c_readを呼んだあとにcloseしても正しく閉じれるから、FL2000に対する操作でcloseがハングアップするわけではなさそう。ただ、i2c_readを呼ぶ前には定期的にDDCをポーリング(後述)しているけど、i2c_readを呼ぶとDDCポーリングが止まる。fl2kとしてRF信号を出す場合はDDCは必要ないはずだから事実上は問題ないだろうけど。DDCはFL2000が勝手にポーリングしてるものだと思ってたけど、fl2k側から止められるならなんで出してるんだろう?


 さて、Windowsでfl2k_testが動いて、DLLを叩いて一部の機能は触れるようになったが、DLL経由では肝心の波形信号が出せない、といったところで今週は時間切れ。どうしたものか。fl2k_tcp.exeとかいういかにもなヤツも付属してるから、それを叩いてもいいんだけどな。rtl_tcp.exeの場合は吐き出されるバイナリ列を受け取るだけだから簡単だけど、fl2k_tcpはデータを待ち合わせしなきゃいけないからちょっと面倒そうだ。



 USB 3.0 - VGAアダプタの部品面

 裏面には部品は乗ってないので省略。

 中央にあるのがFL2000-1L0-DX。右端にUSB 3.0のケーブルがはんだ付けしてあって、D, TX, RXの3ペア6本と電源の8本。左端にはDsub15のコネクタが実装されている(上下の補強端子はハンダ無し)。

 左下のチップはフラッシュメモリっぽいけど型番でググっても出てこない。似た型番は出てくるのだが。

 右上のSTO-23は1.2VのLDO。その隣の5ピンも3.3VのLDOで、シリーズで使っているのかな? DACの基準にも使っているっぽいから、PSRR重視でLを挟んでシリーズにしているんだと思う。

 右下に10MHzの水晶。

 その他トランジスタやダイオードやインダクタがいろいろ、コンデンサが大量、抵抗もいくつか。


 I2Cのプロービング用にpin5(GNDのはず)を引き出したらなんか信号が浮いてる。もしかしていくつかのリターン線が結線されてない……?? 



 FL2000のDDC

 I2Cのクロックは15.23kHz。NTSCのHsyncに近い周波数だけど、少し(3%程度)違う。そもそも走査線数からして違うからNTSCとVGAのHsyncの周波数が同じである(or近い)必然性もないし。

 0x50~A(W)が8個ずつ、260ms程度の頻度で出ている。オシロのデコーダのバグで左端にも0x50~Aが出ているけど、実際には無い(前の組のDDCは適切にストップしている)。

 

 先頭

 スタートコンディションの前に1発負パルスが出ている。


 末尾

 NAK直後にストップコンディション。



 fl2kからHsync/Vsyncを出せれば数十kHzとか数十Hzのパルス信号を出せて、RF信号に同期したパルス(トリガ信号)を出せて便利そうだな、と思ってたんだけど、Osmo-fl2kのWikiによるとHsyncとVsyncの両方を無効にしないと連続信号が出せないらしい。ままならないな。


 とりあえず、当面はDLL経由で波形を出せるところが目標か。しかし、構造体とかの取扱もさほど変なところは思いつかないし、怪しいところも無いからなぁ。libosmo-fl2k.dllを消すとfl2k_testも動かなくなるから、少なくともDLLの問題はなくて、叩く方法の問題であることは間違いないはずだが。ダミーのDLLを作ってどういう操作がされているかを見るとか? メンドクセ…… そもそもDLLを正しく叩けているかが問題なのに、どうやってDLLに偽装するんだという話だし。


0 件のコメント:

コメントを投稿