2020年5月31日日曜日

ロケット上がりそう → 成功おめでとう!

今は日曜日の02:00.SPACE-Xのロケット打ち上げを見ようとしている.打ち上げ時刻は04:30らしいのでこのまま徹夜かな.

打ち上げ数時間前からyoutubeで放送されている.

↓運転手さん搭乗の様子.打ち上げの3時間前に搭乗するのだから、途中でトイレに行きたくなったら困るだろうなぁ.オムツを装着しているんだろうけど.
周囲の黒服の人々は搭乗のお助け隊.どうみても忍者にしか見えない.
運転手の宇宙服が全然フツーの作業ユニフォームみたいで凄く違和感を感ずる.シャトルの運転手達はブカブカの宇宙服を着てたのに比較するとこの軽装はなんだ? 足元なんか只の長靴に見える.
↓運転手は30分ぐらいかけてシートに縛り付けられる.お助け隊にシートベルトを装着してもらっているところ.ミレニアムファルコン号のようにブラスター撃ちつつ駆け込んで10秒で発進とはいかないようだ.
↓この司令船のサイズは意外に大きいようで、お助け隊は船内で立位で作業している.マーキュリーやアポロの狭さに比較したら大きな進歩だ.
↓マーキュリーの実物を見ると絶句するほど小さくてチャチい.ドラム缶かい?

ーーーーー
日本時間04:12   打ち上げ10分前     天気良好.特になにもなし.管制塔の職員も暇そう.SPECE-Xのyoutube channelが最も視聴者が多い.300万人が観てる.

2分前    水を掛け始めた.

T=0     あっけなく発射.最高Gは2.5ぐらいらしいよ.

T+2.5分    一段目切り捨て、2段目点火.

T+5分    高度200km、順調に飛行.400万人が視聴中.2段目ノズル赤熱.

T+6分   1段目が戻って来る奴だった.逆噴射で減速してるぜ.

T+9分   2段目エンジン停止.等速度運動で無重量の世界へ.

T+9.5分     1段目着陸したシーンがカメラに映らなかったじゃん.電波途絶えた一瞬後にもう着陸してたよ.なにこれ陰謀?

T+12分    2段目切り捨て.これで発射ミッションはおしまい.12時間後ぐらいにISSにドッキングするらしい.

コクピットは2001年宇宙の旅っぽいデザイン.

有人飛行おめでとうございます!

カメラのデータリンクに感謝だな.

かしこ

2020年5月29日金曜日

Aliexpressは生きているか? ジャンパーピン編

AliExpressから荷物が届いた報告をもって、AliExpを応援する企画の今回は第8弾.

ジャンパーピンを買った.ときどき大量に欲しくなる、自作電気屋にとっての必須パーツのうちの一つだ.

300pcs   ¥129     安いけど間違いじゃないよ
5月1日発注   →   5月29日着       まぁ普通の日数

-----
呪われているものもある.100V200Vトランス.
3月19日発注    →  5月29日でもまだ来ない   何処で何が死んでるのだろうか?
同じモノを別の業者に頼んだら先方からキャンセルされたし.
強い呪いだ.
かしこ

ブルーインパルスは飛んでいるか?

今しがた飛んだよ、ブルーインパルス.  →これ

中目黒駅前の山手通りで通行人が足を止め上を見ていた.そしたら煙を引いてブルーインパルス4機か5機が飛んでった.模擬戦闘は見せてくれなかった.

ネットの事前情報によるとこんなルートだったらしい.

わたしは①と②を肉眼で確認.③は音だけ聞こえた.

なので事前ルートじゃなかったと思ってるんだ.

西から進入して①を通り、豊島区上空で右へ旋回して②へ.その後葛飾区上空を回ったのかは知らないが、③で爆音を残して海上へ去ったというのがひら的見立てなんだよ.

今頃Twitterは祭り状態かしら?
みんなは見れたかな?

かしこ

追記: エージェントYが隅田公園から撮影した写真.快晴の空とツリーに航跡が映える.

【新橋】ジンアンドトニックは復活しているか?

秋葉→新橋はよくあるコース。

秋葉原の街並み撮影がてらjunk屋をチェックしようと思ってたのだが地下鉄から地上へ出たら厚い雲が垂れ込めている。傘なんか無い。
中央通りまで歩いたところでほぼ土砂降りの雨でなーんもせんままに撤退を余儀なくされた、最悪コンディション。

わたしの右足親指が母をたずねて三千里状態なのは既報の通りで、爪の2/3が剥がれていて1/3はまだ指と癒着しているらしい。化膿してないのは幸いだが歩くと血が滲んでくる。怖いよぅ。外出時はサンダル履きだ。今日の秋葉土砂降りで足がぐしょ濡れになった。秋葉菌で化膿するのは避けられまい。

なにもせんままに秋葉を後にし向かうのは新橋。雨はまだ降っている。
ジンアンドトニックは復活営業していた。再開おめでとうございます。
↓まぁ古いラムでも飲め

↓新橋には「塩福」というひらがな表記困難な店名のワンタン麺屋が在った。今日前を通りかかったら、「しおつぐ」に変わってた。旧店名には苦情が寄せられていたのだろうか?
塩福五段活用
しおふかない
しおふきます
しおふくとき
しおふけば
しおふこう

習近平来日をお断りするチートな方法

香港にちょっかいを出す習近平はトランプに介入の機会を与えちゃって、香港国家安全法は悪手だったのではないだろうか? せっかくコロナ流行作戦が成功してトランプ再選を阻止できそうになってきたのに、ここでトランプに塩を送ってしまってはコロナ流行作戦はなんだったのか?と思っちゃう.

日本でもコロナへの対応の拙劣さやオリンピック延期で支持率ガタ落ちの安倍総理がいる.もしも安倍さんが「コロナ対応、そして香港をめぐる情勢から習近平主席の国賓来日はお断りしました」とシレッと言ったら大いに褒めてあげるんだが.

日本からお断りするのがかったるいのなら、激怒した習近平にお断りさせる手段がある.

安倍さんが抜き打ち的に靖国神社に参拝すればOKよ.一発でケリがつくチートな方法だ.

政治的活動はできないとされる天皇陛下にも政治的メッセージを送れる良い機会ともいえる.天皇陛下が抜き打ち的に靖国神社を参拝なされば習近平は来なくなるだろうさ.国内の護憲屋さんを憤死させる効果もあるかな.あははー

靖国神社参拝というのは日本人にとってはただのお参りなのだが、中国共産党にとってはアナフィラキシーショックのごとく致命的な意味があるみたいなので便利に使える.習近平来日阻止だけではなく応用範囲は広い.たとえば尖閣諸島周辺に中国船が来た日には靖国参拝、などという使い方だ.だったら毎日来い.

かしこ

2020年5月28日木曜日

SPACE-X ロケット飛ばない?

早朝、5時起床.現在06:05

フロリダからローンチのSPACE-Xの有人ロケットをリアルタイムで観ようとしている.USにとって9年ぶりの有人打ち上げらしい.

だが延期かな? 天気が悪いらしい.上空は雲が多いかね.
↓運転手さんたちは宇宙服のバイザーを開いてしまった.降りる気かな?
↓搭乗の渡り廊下が再びハッチに接近している.降りる気かな?
また寝ようかな.

どうしよう.

-----
現地時間 土曜日の午後3:22 が次のローンチ予定らしいよ.
日本時間では日曜日の朝5時かな.
どうもお疲れ様でした~

2020年5月27日水曜日

【中目黒】ノムネンは復活しているか?

さぁて、、、外飲みの日々がまた始まろうとしているぜぇぇ!

今日は昼食でカーナピーナの営業再開を確認した.

そして夕食には家の近所にあるノムネンの状況を偵察に出かけた.

22時まで営業できるようになったので、メニューも従来通りに復活し、短縮営業ではあるが飲み食いできるようになっていた.再開おめでとうございます!

こうゆう居酒屋メニューで酒を飲むのは久しぶりだった.いいもんだぁねぇ.
再開祝いの焼酎ニューボトルは「くじら」.鹿児島のお酒で当然芋であるが甘み控えめの大人の味わい.(右側のやつ)
帰り際、ボトルの現金足りるかなぁと、良かった足りたよ~という会話を奥さんとしてたら、お店の人が「クレジットカードも使えますよ」と言ったんだ.
「えっ、このお店って現金だけじゃないの?」とわたし.
お店の人曰く「いったい何年通ってるんですか」.レジにはクレカ処理マシーンが置かれていた.... ノムネンでカード払いしてる人を見た事なかった、呆然.

かしこ

SNSの炎上には耐えるしかないと思う件

石田純一が沖縄に行ったことを非難する気がわたしには全く生じない.疫病に罹患するリスクを犯すかどうかは個人任せだからだ.彼はどこかで菌をもらってしまったわけだが「アンラッキーだったね」と少し思うだけだ.(彼が菌をもらったのは沖縄ではない)

自分が保菌者なのかどうかを知る手段が現状無いのだから、知らぬ間に誰かに染していたと後で知っても「あぁそうだったんだ」と少し思うだけだ.逆に誰かから染されても恨みはしない.

だがいまだに石田純一は詫びが足りないなどと非難され続けている.でも彼は自殺はしない.

木村花という人が自殺したそうで、その原因は、彼女のTV番組での態度がクソだった事に立腹した多くの視聴者によるSNSへのdisコメを気に病んだかららしい、、、それで理解あってます?
この件に全然興味が無かったのでずっとスルーしてたのだけど、国会でdisコメを規制する法案が話題になるに及んでさすがにどんな事件だったの?と興味が湧いた.ネットをチラ見して「disられ自殺」だったみたいだねと、それで理解あってます?

理解あってます?と繰り返し問うほど自信がないのは、SNSでdisられて自殺するかね?と、まずそこに理解が届かないのでなんだかなーなのです.

自殺なさった人はちょっと繊細すぎたかなと言いたくなる.

当ブログで何度か触れたことであるが、SNSは本人と大衆との発言権限が同レベルなので、一人vs多勢の炎上構図になりやすいと思う.木村花のインスタには誰でもカキコ出来ちゃったわけでしょ? 荒らされやすい無防備なmediaだと思う、SNSは.
今後の法整備や民事訴訟の末にSNSのdisコメリスクが低減されるかもしれない.しかし少なくとも現状のSNSでは、一人負け、多勢勝ち、を免れようがないと思うんだ.だから神経繊細な人にはSNSは危ないんじゃないかな.炎上しても何食わぬ顔をしていられるタフネスがSNSには必要だとわたしは思う.

わたしは当ブログを実名で書き、万人を不快にさせる事を書いている.けれどSNSで同じことをする気はないんだ.なぜかというとブログには、執筆者>>コメント の上下関係がある.コメントでたかが500字の苦情を書かれたとしても、こちらはそいつの一文をあげつらって5000字で逆襲することができる.つまり当ブログはヒラサカが絶対優位なmediaなのだ.それに比べたらSNSはかったるいだろうなぁ、叩かれ放題だもん.不利な事には手出ししませ~ん.

最近知ったyoutuberで「かほなん」という一人キャンプ女子がいる.
素人さんではなくて、芸能事務所所属の現役アイドルである.youtubeの動画作成やコメ欄の管理も彼女自身でやっているらしい.(ブレイクしたらスタッフに任せるのだろうが)
かほなんって強いとなぁと感心するのは、youtubeのアンチコメントを本人が削除しているみたいなんだ.若い女子なのにその精神的タフネスは偉いと思う.それでなくてはアウトドアでサバイバル出来ないのかもしれない.

木村花という人にもそういうタフネスが必要だったのではないだろうか?
さもなくば、さっさとSNSを閉じて逃亡するのもアリだったんじゃね?

disコメの大量投下をした粘着キチガイ達だけを責める気にはわたしはならない.そうゆう輩の存在を織り込んだ上でSNS活動をするべきだったと思う.

エイメン

【祐天寺】カーナピーナは復活しているか?

コロナ戒厳令が解除され、月火の定休日を挟んでアフターコロナ最初の営業日となった今日、祐天寺のカーナピーナへ.コロナ中はtake-outのみ営業だったので今日も買って家で食べようとの算段だ.

ランチの開店時刻は11:30.バイクで着いたらまだ閉まっていて時計は11:28だった.店の前で待つ.

まもなくカーテンが開き、ドアを開けたマスターはわたしの顔を見るなりニヤリッとして言う「ホームページ見てきたの?」.わたしはきょとんとして「えっ、いや違います」.

客席を見ると電灯で明るくなっている.「あ、今日から店内食事ありですか?」

そうだ、とのことで、「第一号客になれて光栄です」と着席.

トマトラザムスープ+Lランチ(チキンSH)をたのむ.アフターコロナ第一号客だからサービスしてくれたのか、ライスが超大盛でマジ食いきれんかと思ったぞ.

再開おめでとうございまーす!

かしこ

行ったことのある外国について

コロナが流行していた時期は静かだった香港がまた大荒れになりそう.香港には記憶では2度行った.もっと行ってるはずだけど思い出せない.

わたしが行ったことのある外国って少ないんだ.記憶を辿ってみよう.

UKは滞在日数が最も多い国だ.その多くがサービス出張で缶詰だったのでロクなことがなかった.暗くて憂鬱なUKの冬のような思い出しかない.
ロンドンと、ロンドンの少し西側のベイジングストーンを徘徊していたのは20歳代の頃.
西の突き当りにあるブリストルのHPに40歳ごろによく通った.
この2つの地域しか行ってないんだよね.ウイスキー蒸留所のある北方のスコットランドには足を踏み入れた経験がない.残念過ぎる.

USも多いわな.サービス出張で缶詰になったりはしなかった.単発の出張で回数が多い.
仕事の打ち合わせばっかしだった.ソニー社員だったのにCESに一度も行かしてもらってないのはなんたることか?
シアトルは20歳代.MSの本拠地をクルマで走った.有名な鶏がいた.
SFは30歳代、HP時代にHDDのイベント見学で行った.
LAとラスベガスは20歳代、近ツーのMクンのところに遊びに行った.博打は負けた.
ど真ん中はデンバー.40歳ごろにたくさん行ったが全部社用.
東海岸唯一の訪問先はワシントンDC.2019年にスミソニアン博物館を見学したのを当ブログに投稿した.
USの飛び地ハワイには2度.奥さんとの新婚旅行.後にハワイ島へ.楽しかった.
トランジットだけだけど、USへ行くときにアンカレッジ経由だったことがあったんだ.どうしてそんな航路の切符だったのか不思議だ.いつ行ったのかも忘れちゃった.アンカレッジ空港の廃れた雰囲気が良かった.

EUは、、、少ないなぁ.
ドイツはまだ西ベルリンだった頃だから1980年代末.砲撃の跡が残されている教会が夜のTAXIの窓からぼんやりと見えた.あれは薄気味悪かった.観光はしなかった.
オランダはアイントホーヘンだったと思う.西ベルリンと同時のサービスツアーだった.観光はしなかった.SECAMの放送画面を初めて見たのがオランダだった気がする.
ローマは2018年だったっけ? 当ブログに投稿した.

中東は行ったというかなんつうか.ローマへのトランジットでカタールに数時間滞在した.娑婆へは出なかった.魔法のランプが売られていた.

中国は回数の割に訪問先がすげー偏ってる.広い中国なのに南の狭い地域だけだ.
香港観光したのは1990年代でまだUK領だったころ.インド人多いなぁと思った.
40歳ごろには東莞市に工場が在って何度も通った.広州空港から入るか、香港から深セン経由で入るかのどっちか.大量の作物を積んだ自転車が高速道路を走っていた.
珠海市はミツミの工場が在って何度も通った.日本企業がホテル貸し切りで酒池肉林パーティーをやったのが国際問題になったくらい売春が盛んな土地で、我々出張者の定宿がなんと同じホテルだった.街には売春婦がたくさん居て、うっかり目が合うとついて来られてヤバかった.
珠海はマカオへの出入国地であり、マカオへ徒歩で行き来できる.マカオの街頭ではおばさんたちが巨大な牌で麻雀を打ってた.博打は少しやった、負けた.

台湾には2度、観光で行った.2018と2019なのでまだ記憶に新しい
また行きたいけれど、暑い時期は避けた方がいいね.そしてまた冬は意外に雨が多い.爽やかな季節はいつなのだ?

たったこれだけで終了.

今年はミュンヘンにbeer飲みに行きそうだったけど、コロナで渡欧計画は消滅.
東南アジアにはたくさん行きたい.
トルコとスペイン行きたい.

google世界地図を眺めていたら、、、南半球に見慣れぬ大陸を発見.
オーストラリアだ.時差が無いのはいいぞ.訪れたのはシドニー.最悪のサービス出張だった.だらーっとした国民性だと思った.

かしこ

2020年5月26日火曜日

Aliexpressは生きているか? STM32F205RCT6編

AliExpressから荷物が届いた報告をもって、AliExpを応援する企画の今回は第7弾.

STM32でDCCを作ろう連載でTargetにしたい本命パーツであるところの、STM32F205が届いた.

↓このpackaging、粋だねえ.この粋さを理解できないようでは中華通販を愉しむのは難しい.いや不可能であろー.トレイから移してセロテープで貼って、梱包材でグルグル巻きにして発送してくれてる.足ピン曲がってないかなぁ.

4月21日発注  →  5月26日着      @¥273      1ヶ月ちょいかかっている.

このCPUは豊富な機能のわりに安価でいいわ.わたしが常用したいCPUのうちの一つだ.
IDEも使いやすいと思っておる.

これからプリント基板を試作しようと思う.

かしこ

ドメスティックな彼女27巻特装版 →え~っな展開

今日はネタバレなしです.来ました、ドメカノ27巻特装版.左の小冊子が特別付録です.ドメカノコミックの表紙を外すとHイラストがあるんで、それをまとめたものです.はっきりいってエロいです.
27巻はひら的にはビックリな展開だったのでネタバレはしません.
↓ヒナ姉が泣いております.
↓そして、そして、なんということでしょう.28巻で完結するんだそうよ.いやまて、この姉妹丼storyはまだまだ続く要素があっただろうに、なんなんだこの手仕舞いはぁぁぁぁ、、、、
28巻、楽しみだけれど、読むの怖い.

うぅ、、、

ZOOM環境整備 マイクアンプの対策と製作

戒厳令下でTV会議に勤しんでいた人は多かろう.わたしは業務ZOOMは無かったけれど、ZOOM飲み会を2回やったかな.

机置きスマホでZOOMすると湖川友謙あおりアングルになってしまう人がいる.

また音量が小さい人もいる.ピンマイクが一番良いと思う.

↓マイクというと最近奥さんがAmazonでこれを買った.¥3580
電池が無いのでダイナミックかと思ったらコンデンサーマイクだった.
もう少し高感度だとうれしいのでマイクアンプを作ったので仕様の説明をしておくなり.
↓まず、このマイクのコネクタ仕様はこうなっている.モノラルマイク出力がステレオ端子にこのように出てくる.
↓またこのマイクはコンデンサマイクなので電源供給を必要とする.わたしは知らなかったのだが、PCのマイク端子は「プラグインパワー方式」になっているのだそうだ.回路的にはネットで拾ったこの図が判りやすいだろう.
この方式って、RがコンデンサマイクのFETのドレイン抵抗になっていると思われる.PCの汚い電源でマイク信号が汚染されそうで居心地の悪い仕組みだ.ダイナミックマイクならこうゆう仕組みは不要だとはいえ、マイクジャックにRが内蔵されてしまっているのだからノイズ混入のリスクを払拭できはしない.そもそもこのマイクジャックにダイナミックマイクを接続して大丈夫なのだろうか?という疑問を感ずる.

↓マイクアンプ出力を挿す相手はPCのマザーボードではなくてこのUSBデバイスを使った.このデバイスのAudio In端子も「プラグインパワー方式」になっている.電圧は2.3Vだった.Rは不明.
↓このUSBデバイスはステレオ入力対応なので、コネクタは一般的なステレオ接続になっている.

以上によりマイクアンプの接続仕様が決まる.
電気的仕様としては、、、
1)最大10倍増幅、ボリウム調節可能
2)音楽録音にも使うかもしれないので帯域は10kHzオーバー
3)ノイズは酷くない程度になっていて欲しい

↓いきなり回路図.
アンプ入力はLchのみ引き受けて、アンプ出力はLRch同出力にしといた.手持ちのマイクとUSBデバイスの結線からするとこれが無難だと思うため.
この回路で最大10倍にして使ってみると小声で喋ってもビンビンに音を拾う.椅子のきしむ音などを拾い過ぎるくらいだ.

ところが感度が上がってめでたくオシマイにはならなかったのである.windowsが勝手にマイクレベルを下げてしまうんだ.ネットでも多くの悩みの声が報告されている.

ネットでお悩みの皆さんの症状は様々だが私の症状は、、、、
マイクを口元に持っていって大声を出すと過大入力で16bitがoverflowする.すると元は100にセットしといたマイクレベルが98→92→85.....と勝手に下がってしまう.それで時間が経つと100に戻るのならまぁ許せるのだがそうではない.マイクレベルは下がったままになってしまう.これではせっかく増幅したのにくしゃみでもしたら帳消しにされてしまう.このような不都合なAGCはやめてもらいたい.

というわけで、せっかくマイクアンプを作ってもZOOMの音質改善効果は限定的だったのです.残念であります.

かしこ

Aliexpressは生きているか? USB3300編(chip単品)

AliExpressから荷物が届いた報告をもって、AliExpを応援する企画の今回は第6弾.

STM32でDCCを作ろう連載で使う、480MbpsのUSB Phyだ.

4月21日発注   →    5月26日着
1ヶ月を越えたので★一つ減点としとくかの.

お値段はおサイフに優しい@¥67
7pcsで¥507で調達.

STM32に480MbpsのPhyが内蔵されていない点に不満はあるが、@¥67ならば外付けしても不満を言う筋合いじゃないわ.

試験実装するプリント基板は出来てるんだ.
かしこ

2020年5月25日月曜日

戒厳令日記(48日目) さようなら、またお目にかかりましょう

♪ほたるのひ~か~り  窓の雪♪

48日の長きに渡った戒厳令が、終わろうとしています.

つらいこともあった、電車は空いてた、在宅勤務は退屈だった、自粛厨がうざかった、、、様々な思いが去来します.

この48日間、読者の皆様と共に苦楽を分かち合い、お互いを励まし合ってこられました.それがわたしにとっての戒厳令の思い出です.他には何もございません.

戒厳令第一弾は本日で終わります.

しかし、コロナに終わりはありません.読者の皆様と再び会えるその日はきっとやって来ます.秋が深まった頃、戒厳令日記で再びお目にかかりましょう.

その日を信じて、一旦筆を置くことに致します.

あでゅー


【戒厳令日記(48日目)】

昨夜2時      就寝

07:00       なぜか早起き

07:30      朝食、カップ麺、食パン

秋葉原へ遊びに行こうと思ったが挫折する

13:00      昼食、GTの地下のハンバーガー屋

15:00~17:00     睡魔に負ける

19:00      夕食、ピザ、サラダ、コーンポタージュ

本日会話した人:    おくさん
本日の外出距離:     500m
本日のキャッシュアウト
Aliexpress  STM32F205と405を¥900、ケース¥400、LED¥207
Amazon  ドメスティックな彼女27巻特装版 ¥822
ハンバーガー  ¥2400(二人前)

♪明日がある、あしたがある、あしたがある♪

STM32でDCCを作る方向で (18) HighSpeedに進化

STM32でDCCを作ろう!     INDEXページへ

TargetにしているNucle0-F207にはUSB 2.0 HighSpeed(480MHz)のPhyが装備されていない.Phyを外付けしなければFullSpeed(12Mbps)しか出せない.

先日届いたHS-PhyをNucleoに取り付けた.
取り付け状況.60MHzの信号が通るにしてはグダグダな配線....
windows10はデバイスを認識していて、HighSpeedでリンクされている.

今後の作業は、
  1)USB Audio Class 2.0に進化させる
  2)feedbackの実装
という感じで進める.
win10のUAC1.0標準デバドラは調子悪いみたいだ.UAC2.0のデバドラは先日までいじってたEZ-USBでちゃんと動作していた.なのでとっととUAC2.0に移行したく思う.

いつまでもNucleoをTargetにしてるのもかったるい.STM32F205とUSB3300がAliexpressから届くのを待っている.届いたらプリント基板を作るつもりだ.Targetが定まらないと効率悪いのさ.

本日は秋葉原へ遊びにいくのでこれまで.      やっぱやめた、体調悪い

かしこ

Aliexpressは生きているか? PCM5102編

AliExpressから荷物が届いた報告をもって、AliExpを応援する企画の今回は第5弾.

昨日届きましたモノは、PCM5102ボード.TIのHiRes DACで、動作テスト用としてちょこまか使っている.便利なので2枚目を買った.

4月24日発注   →   5月24日着 
1ヶ月なのでごくフツーのデリバリ状況.

お値段は@¥308
同じものをAmazonで買うと(出所は中華業者だが)@¥1000を超える.
きちんとしたサービス体制を伴った日本のshopで買うと@¥2000になっちゃうんだろうな.

パーツを買いに深センへ行きたいなと思ったりするけど、香港から入りたいと思ったりするけど、やめといた方がいいね.こうしてAliexpressで通販しているのが遅いけど安心だ.

かしこ

2020年5月24日日曜日

戒厳令日記(47日目)最終回直前

今日の東京都のコロナ患者が14人だったって? 増えたけれどそれで戒厳令解除できんの? 基準満たすの?

基準はこれ.
「10万人当たりの1週間の感染者が0.5人程度以下」
「100万人当たりの1週間の感染者が5人程度以下」
「1000万人当たりの1週間の感染者が50人程度以下」

基準を満たすかどうか計算してみましょう.データはこちらから.

感染者数推移:
24日14人、23日2人、22日3人、21日11人、20日5人、19日5人、18日10人
この7日間の感染者累計=50人

え~っ微妙、というかボーダーライン?

もう少し精度よく計算してみるなり.東京都の人口は13,982,622人.
「1398万人当たりの1週間の感染者が70人程度以下」

大丈夫そうだ.明日で戒厳令日記は終了するでしょう.どうもお疲れさんでした~.下期にまたよろしくで~す.

------
4月17日にこういう投稿をした.
6月の国会会期末で安倍政権が倒れるんじゃないのか?というようなことを書いた.

本日は5月24日、検察庁法案という自爆ネタで想定外に支持率が低下している安倍政権を見るだに、どうだろうか?  安倍さんを応援したい人でもそうでない人でも、6月で安倍政権が倒れるかもしれないという認識は高まってきたんじゃないの?

わたしは安倍さんの事を嫌いじゃないよ.それに次の総理大臣がどーせロクでもない奴になるのも承知というか覚悟してもいる.
だけど、ビジョンを掲げ、社員にハッパをかける社長が、裏ではコンペティターと仲良しに転じてしまっていたり、社長が法外な接待費を浪費して会社が傾いたりしたらその社長はクビだよ、クビ.

なんで習近平国賓訪問を帳消しにしないんだよ.なんで消費増税するんだよ.逆噴射自滅総理はクビだ.

次の総理は二階と菅が決める.石破じゃ選挙を闘えないので石破はない.全然望まないけど、ポンコツ進次郎を担いで二階と菅の傀儡とするんじゃね? まったくロクでもねぇ.


【戒厳令日記(47日目)】

昨夜2時      就寝

11:00     起床

12:00     朝食、さわら塩焼、ほうれん草のおひたし、納豆、味噌汁、ごはん

フリーメイソン、イルミナティ、スカル&ボーン、エプスタイン、クリントンなどについて陰謀論の観点から議論した.結論、ムーを読もう.

20:00    夕食、麻婆茄子、味噌汁、ごはん

本日会話した人:    おくさん
本日の外出距離:    0m
本日のキャッシュアウト:     ¥0

かしこ

親を憎む自分が嫌いですか? →いやべつになんとも...

本日の投稿1本目でボケ毒父の行き場のない状況を毒父への蔑みたっぷりで書いた.

そう、わたしは自分の親を蔑んでいる.わたしは、自分が蔑んで止まない者の子供であり、遺伝子の半分はそいつから受け継いでいる.

人によっては血の繋がり故に親を蔑めなかったり、親を蔑む自分を許せなかったりするようだ.心理学のテーマの一つであろう.

わたしは親を蔑む自分が嫌いだろうか?    →嫌いも何も、何も感じてない

わたしは承認欲求でパッツンパッツンになっている者(毒父はその一人)が嫌いなので、そうゆう奴が目の前に現れるとイジメたくなる.というか確実にイジメる.でも、ネットによく居るキチガイ執着者みたく、そいつの居場所へ出向いてまで嫌がらせをするような事はしない.目の前から消えてくれれば追いかけはしないってことだ.

だが毒父はそうはいかない.法的に親子の関係は切れないし、親類縁者もご近所さんも居る.あまつさえ毒父が死んでもあいつとわたしの親子の縁は切れないのだ.縁が切れないのであるから、たとえ奴が死んでも毒父攻撃を止めることはないだろう.毒父をこの宇宙から滅失してやりたいと願う.

だからといって、親を蔑む自分を嫌いっていうことは全くない.べつにフツー.

-----
心理分析的に「ヒラサカはどうしてそこまで承認欲求を憎むの?」という問いになら興味はある.

どうして?と問われて一言で返せば、くだらないから目の前から消したい、だ.

承認欲求でパッツンパッツンになっている者に共通するのは、負け方が下手というか、負けると妙な方向へひねくれるんだよ.
1)ある勝負で負けている
2)負けたら素直に死ぬか克服するかしかない
3)ところが承認欲求でパッツンパッツンになっている者は、負けを認めない
4-1)負けを認めないために、脳内妄想に逃げ込む
4-2)負けを認めないために、勝ち組を引き摺り降ろせばいいと考える

判りやすい実例(女子)を挙げる.
1)就職できない(成績はとても優秀という自負がある)
2)希望就職先のレベルを下げるしかない
3)自分は一流企業に就職できるはず     ←君は秀才だが世間知らずなんだよ
4-1)男性中心社会が悪い     ←暗黒面堕ち
4-2)世渡り上手でさっさと就職を決めた彼氏を逆恨み   ←暗黒面堕ち
↑いるよね、こうゆう奴.

毒父の場合はこうだった.
1)岩手の田舎から東京へ出てきた.方言が通じない、東京者には口数だけで10倍負け越している.適わない相手だ.
2)方言も口数も克服すればいいだけだが、、、、
3)東京に在るルールが悪いのだ
4-1)オレはバカじゃない、間違ってるのは東京の方だ!   ←暗黒面堕ち
4-2)東京でチャラってる奴らを攻撃する!   ←暗黒面堕ち

毒父はこの葛藤に18歳で直面して暗黒面に堕ちてしまったのだった.暗黒面は狂った現実認識であって、ただ自分を焼き殺すだけの悪感情だ.しかしボケてもなお暗黒面を行動原理として生きている.有害である.

そんな承認欲求に根差した不満心理でパッツンパッツンになっている毒父の近くに、東京でチャラってる権化みたいな最悪の敵が出現した.息子=平坂久門である.

幼少期~少年期のわたしは毒父に攻撃された.攻撃対象は、わたしが楽しそうにしている物事のうち、毒父から見て都会的と分類される物事だ.ドラマ、アニメ、マンガ、歌謡曲、メディア、サブカル、を徹底的に処断された.毒父の暗黒面ではそういうのは「東京でチャラっている物事」なのだから攻撃しないわけにはいかなかったのである.

それから数10年経って、毒父滅失を企てるヒラサカの動機はこの攻撃への仕返しである.

ヒラサカはどうしてそこまで承認欲求を憎むの?
→毒父からの狂った攻撃への反発心だと思う.

------
おぞましいことに、ボケてもなお毒父には18歳で落ちた暗黒面が滲み出ているのだ.毒父の問題行動の一つに「徹底的にものを捨てる」という奇行が在る.老人ホームを追放された原因の30%は物捨てだ.物捨て行動は「東京チャラい否定」だと家族は推測している.
毒父は保持すべき物と、捨てるべき物を区別している.植物や花瓶や服は捨てない.捨てるのは、写真、印刷物、プラスティック、食品容器、はみがき、リモコン、、、戦後になって普及した日用品を全部捨てるのである.
毒父にとってはボケてもなお、土人が正しくて、都会や文明は悪なのだ.それは逆恨みだ.有害なのはお前だ.キチガイに居場所は無い.早くしね.

毒父滅失

毒父の状況について 第12次中間報告

わたしの毒父については何度も書いてきた.現状を一口で言えばボケて徘徊がひどくて手を焼いているというごくありふれた有様なのだが、わたしはボケる以前から毒父を嫌っていた.「そんなに世間が憎いのなら二度と生まれ変わって来るな」と評すべきクソ野郎だからだ.
社会を相手にする時には、碇シンジのごとき「回避性パーソナリティ障害」であった.しかし家庭内においては、アスカ・ラングレーのごとき「自己愛性パーソナリティ障害」であった.
どっちが本性なのかというと、自己愛・ナルシスト・少数派を気取っているくせに多数派になれない自分が大嫌い、承認欲求でパッツンパッツンに膨れ上がった小心者であった.

もちろん家族仲は悪かった.というかわたしが一方的に毒父を嫌っていただけだけど.毒父本人は上で述べた人格障害を表層心理では自覚してなかったし、母は知っていたけれど荒立てたくない一心で「貴方は最高に偉い人だわ」とアゲ続けて生きてきた.なので毒父はどうして息子から疎まれるのかが判らなかったようだ.

ボケる前の毒父に対して「お前なんかただのバカじゃん」と総攻撃することも出来たのだが、わたしは敢えてそうしなかった.それには理由がある「どうして嫌われるのか判らない」という不安心理を抱えさせたままで彷徨わせる方が毒父へ与えるダメージが大きいだろうと思ったからだ.また「お前のどういう点がバカなのか」を説明した結果毒父が解脱してしまったりしたらスゲー気持ち悪いしな.

毒父には魂を腐らせたまま死んでもらう.また、毒父が如何にクソなのかを親戚縁者に喋りまくるのもわたしの仕事だ.「ディスカウント毒父」これはわたしの神聖なる業務のひとつである.

-----
その毒父がボケて行方不明になるわ徘徊・物捨て等の奇行が激しくなり、母親が倒れたのをきっかけとして老人ホームへ入れた.

だが奇行があまりにも酷くて老人ホームから追放された.精神病院送りになった.精神病院入院初日の身体測定で暴れて備品を壊しまくってた.医者からは「ひどい症状だ」と言われた.

精神病院に入ったのが2月中旬で、それから3か月ほど経ち、そろそろ退院できるかなと精神病院が言い始めたのが5月中旬.毒父の容体は、大部屋で生活出来ているが、徘徊はするし他人の部屋のドアを開ける奇行は相変わらずだった.

しかし精神病院送りになったそもそもの原因は、老人ホームで他人の部屋を勝手に開ける奇行が原因なのだった.なので老人ホームは毒父の受け入れを拒否.

老人ホームには部屋代を支払い続けている.なぜなら、精神病院に死ぬまで居られるわけもないので、クスリで大人しくさせたら老人ホームへ戻るためだ.しかし奇行が収まらないので老人ホームへ戻ることもできない.

精神病院から伝わる雰囲気によると、徘徊・ドア開けを止めるクスリは存在しない.やるとすれば歩けなくするクスリならある.しかし暴力沙汰を起こしたわけでもないので歩けなくするクスリを使うのは厳しいかな.
わたしとしては「どんどんやってくれ」なのだが.病院の都合を忖度して自重.

さて困ったぞ.老人ホームは受け入れ拒否、精神病院は「そろそろ出て行け」状態になった.当然家族もあんなのは拒否.行先ないね.早く死ねばいいのに.

振り返ると、毒父の処遇についてのわたしの過ちは3つある.
1)手のつけようのない徘徊老人を人として扱ってしまった
2)初手の行先は老人ホームではなく精神病院であるべきだった
3)老人ホームの選択を誤った.正常人向けの開放スペース型老人ホームを選んでしまったのが失敗で、毒父に必要だったのは閉鎖・監禁型老人ホームだった

というわけで5月中旬、新たなる老人ホームの探索を開始した.
徘徊・奇行対応型老人ホームを見つけるのが目的である.二度と出てくるなよ.
老人ホーム斡旋業者があるので自分で探しはしない.
斡旋業者曰く、候補施設は在るんだけど、コロナのために見学禁止になっていてご案内のしようがないとのことだった.パンフレットだけで決めるのもなんだし.

とりあえず戒厳令の解除を待ち、6月になって施設の防御態勢が緩むのを待とうかね、というのが斡旋業者とわたしの状況である.

二度と出てくるな.そして二度と生まれ変わってくるな.

毒父滅失

STM32でDCCを作る方向で (17) 再生→停止→再生できん件

STM32でDCCを作ろうシリーズ.今回はわりとサラッと終わる.重箱の隅つつきレベルBB+である.

前々回で音が出たところまでレポした.
だが問題が2つあった.
1)win10で動かない     →win10のデバドラを削除更新したら何故か治った
2)起動→再生→停止→再生     2度目以降の再生がうまくいかない

2番目の問題について、丸3日悩んでやっと治った.

2度目の再生をする直前に、バッファのポインタをゼロにしなくちゃいけない.
これを怠るとbitがズレて音がめちゃくちゃになってしまう.
なので3日間もバッファの挙動を調べていた.

余談だが、EZ-USBはstop/startの繋ぎが楽だった.理由はhardwareが剥き出しなのでbuffer emptyなどのstatus signalが1 clock精度で外部pinへ出てくるからだ.ところがSTM32はそうゆうのが全然出てこない.転送完了割り込みはあるけど、割り込みがかかった時点で数clock進んでしまっているはずなのでアテにならない.かったるい.

------
ポインタをゼロにする必要のあるbufferとre-start時の取り扱い
根元から順に.

1)16bit buffer
書く人:   USB IF
re-start時:     write pointer=0にする
方法:   packet受信準備関数 USBD_LL_PrepareReceive() が用意されており、それでptrを引数渡しできるので無問題

2)32bit buffer
書く人:    16bit buf→32bit bufへコピーするprogram
re-start時:    pointer=0
方法:   自分でそのようにprogramすればよいので無問題

3)SPI DMA
作業内容:    32bit bufから読んでSPIへ渡す
re-start時:     read pointer=0
方法:    DMA start関数 HAL_SPI_Transmit_DMA()はptr=0から開始するようになっているので無問題

4)SPI DMA転送完了割り込み
割り込み条件:   32bit bufのを半分/全部消化したら割り込み
re-start時:     read pointer=0
方法:     3番で一蓮托生にptr=0になるので無問題

ここまで検証するためにbuffer dumpとか色々なことをやった.
全部無問題なのだが、2度目の再生で音が破壊される症状は変わらなかった

1~4は、byte単位のズレの無き事を確認したのだったが、実はその先にbit単位のズレが在ったのだ.

5)SPI が再起動する時に、MSB 1stになってない      原因はこれ
SPIはMSB 1stでdataを出力してくれるのが大前提.これが担保されないと、bit streamをブツ切りにする役割のLRCKが不正になってしまい音が破壊されてしまう.しかし2度目の再生時には何bit目から出てくるのかが不定なのだ.腰が抜けるぜ.1度目の再生時の末尾のdataがshift registerに残っているからだろう.
不満が募る.DeInit()をcallすればSPIはdisableにされる(EN=0).ならばEN=0にされた時点でSPI内部FlipFlopもclearしてもらいたい.2度目の利用時にはhardware resetを叩かなくちゃいけないっていうのはかなり不気味だ.
もっともSPI Slave TXなんつう珍妙な使い方をするからこういう地雷を踏むのだろうが.
後日考えるに、1度目の再生の末尾でSPI busyのままブチ切っているのが作法に反しているのだろうと思う.

------
5番を修正するための試行錯誤
要はSPIをどうやって初期化=resetするのか?である.

対策1)2度目の再生の先頭でSPIを初期化する.
HAL_SPI_INIT()みたいな関数があるのでそれをcallしてみる.   →ダメ

対策2)2度目の再生の先頭でSPIをDeInit()Init()する.
DeInit()は構造体やbufferの解放をケアするためである.    →ダメ

対策3)2度目の再生の先頭で、SPIのregisterを強制的にゼロにする.  →ダメ
DeInit()Init()と絡めてみたがダメ.

ここまでやって、registerレベルで初期化してもまだSPI hardwareのどこかにresetされていない場所が密かに在って、それが原因でSPIの再起動時にMSB 1stで出てこないのだと推測された.
そこでDeInit()のsourceを見ると、hardware resetは一切やってないのだと判った.

datasheetには、各peripheral独立のresetが可能だと書かれている.

対策4)2度目の再生の先頭で、SPIをhardware resetする.   →治った
具体的にはこんなcodeでSPIのresetと初期化を行う.
  while(HAL_SPI_DeInit(&hspi3)!=HAL_OK);      ←リソース開放
  __HAL_RCC_SPI3_FORCE_RESET();          ←hard reset
  __HAL_RCC_SPI3_RELEASE_RESET();      ←reset解除
  MX_SPI3_Init();       ←通常の初期化

peripheralはブラックボックスで使いにくいな.

かしこ


2020年5月23日土曜日

戒厳令日記(46日目) 星合

戒厳令日記最終回まであと3日.

1クールで打ち切りになってしまった「星合の空」の続編シーンを含む動画が公開されている.(後半が新作カット)    2年後、高校生になった彼らは、相変わらず嫌な状況に置かれているみたいだ.わたしはこの嫌なstoryの続編を待望する者のうちの一人だ.
監督がどこかのinterviewで語っていたのだが、USの放送局に高値で売れたらしい.その理由というのがLGBTの悩みが描かれているから、なのだそうだ.親殺しは問題にならないんですか?と思っちゃったんだけど...

【戒厳令日記(46日目)】

昨夜12時       就寝

13:00      電話で起床  (少々調子が悪い)

14:00      朝食、お弁当、エクレア

20:00      夕食、お蕎麦、イワシ塩焼き、ごはん

本日会話した人:   おくさん、業者さん
本日の外出距離:    0m
本日のキャッシュアウト:     ¥0

かしこ

2020年5月22日金曜日

戒厳令日記(45日目)MAX

古い写真を整理していたらシアトル近郊にあるボーイング社を見学したときの写真が出てきた.その写真から25年後の今、737MAXの墜落とコロナの二重苦で困っているであろうボーイング.

ひら的には737MAXのbug fixにどうしてあれほど時間がかかっているのかが不思議だ.

というのは、787が飛び始めた頃に起きたリチウムバッテリー炎上事故は随分とアバウトな幕引きだったからだ.「リチウム燃えても煙突で排煙するようにしたよ」でおしまいだったはずだ.ハイテク機に煙突とはシュールだ.5か月間で速攻でケリ.
あの時思った、それって対策ではあっても原因じゃないだろって.アメリカの航空当局も結局は安全性よりも企業利益優先なんだねって.

2機目の737MAXが墜落して飛行禁止になったのが2019年3月.後にボーイングは設計ミスを認めた.アメリカの航空当局とは仲良しだからすぐにbug fix版が飛ぶんだろうなぁとわたしは思っていた.だが飛ばない.
やがて飛行禁止から1年が経つ頃、USにもコロナが上陸し航空キャリアは大幅な減便.737MAXなんか当分復活しなくてもいいやになってしまったかに見える.ボーイングさんに合掌.

リチウム事故に5か月でケリつけたなら、bug fixは3か月でやらんか!w


【戒厳令日記(45日目)】

昨夜3時      STM32をいじりつつ疲れ果てて就寝

10:00     起床

11:00     朝食、煮魚、納豆、ふりかけ、ごはん

13:00~16:00      睡魔に負ける

19:00     夕食、サンドイッチ、サラダ

本日会話した人:     おくさん
本日の外出距離:     0m
本日のキャッシュアウト:    ¥0

かしこ

2020年5月21日木曜日

戒厳令日記(44日目) 千葉埼玉の皆様へ

千葉埼玉の皆様へ

この度は東京都のコロナ患者数が解除基準に達せず千葉埼玉の皆様を戒厳令の巻き添えにしてしまいましたこと、深くお詫び申し上げます.

都民は今後もコロナとの闘いを続けて参ります.

しかしながら、予期せぬクラスターが生じた場合は、6月に入ってもなお千葉埼玉の皆様に多大なるご迷惑をおかけすると予想されます.その際には、千葉埼玉の皆様におかれましては政府の指導を無視して独自の行動を取られますようお願い申し上げます.

敬具

5月25日までは戒厳令が続くみたいだから「戒厳令日記48日目」まで続くわけだね.
不意にクラスターが炸裂し、6月7月と戒厳令が続いて、あげくにホリエモンが都知事になるまで解除されなかったら笑う.自粛厨しね.小池しね.


【戒厳令日記(44日目)】
今日もSTM32をいじる他には何もやっていない.やけに眠い.

昨夜3時        STM32をいじっていたが疲れ果てて就寝

10:00          玄関の呼び鈴が鳴ったが起きれず  (置き配されてた)

10:30          起床

11:00          朝食、カレー

13:00~15:00         睡魔に襲われ睡眠

19:00~21:00        睡魔に襲われ睡眠

21:30       夕食、煮魚、生卵、ふりかけ、ごはん

本日会話した人:    おくさん

本日の外出距離:      40m(玄関先) 40cmに訂正

本日のキャッシュアウト:      ¥0

かしこ

2020年5月20日水曜日

戒厳令日記(43日目) カレー曜日

明日5月21日は戒厳令を見直す予告日だったよね?
東京も戒厳令解除される方に3000点.
戒厳令日記が44日目で最終回になるのに3000点.


【戒厳令日記(43日目)】

昨夜3時      就寝

09:30       宅配便にたたき起こされる

10:00       おめざ、カップ麺(フォー)

12:00       カーナピーナへカレーを買いに行く

12:30       祐天寺のKFCを買う  (コロナ患者が出て休業してたけど再開してた)

13:00       昼食、カレー

20:00       夕食、カレー(自家製のもの)
今日はカレーばっかり食ってた.野菜を1gも食べなかった.


本日会話した人:   おくさん、カーナピーナの人、KFCの人

本日の最長移動距離:    2km?

本日のキャッシュアウト:     カナピカレー¥1440     KFC¥740

かしこ

STM32でDCCを作る方向で (16) CPUをいじっている個人的理由

今回はいつものSTM32 DCCの件とは趣向を変えて「どうしてCPUをいじっているのか?」を書こうと思う.

一言でいえば、取り戻すためだ.

さきほど当ブログ開設当時の人気シリーズである「失業理由INDEX」を作った.失業理由シリーズを連投してたのは、わたしが失業した2011年である.民主党政権と白川日銀のせいで悪夢の円高に日本経済が殺されていた頃だ.当然奴らへの呪いの言葉が何度も登場する.民主党しね.白川しね.

失業理由シリーズの主役は1987~2010まで企業所属の回路設計屋として過ごしたわたしだ.その間のわたしは、CPU周りの仕事を避けて生きてきた.その後遺症で、今でもCPU systemやOSについては詳しくない.その失われたCPU技術を取り戻すのがいまわたしがSTM32やEZUSBをいじっている理由だ.

なんでわたしはCPUを避けてきたのか?

CPU以外に手薄な分野が在ったからである.どの分野かというと「信号処理」だ.わたしは他の技術者から不人気な信号処理の仕事ばかり進んで引き受けてきたのである.

技術者という生き物は、大勢の同僚技術者がいる分野が好きなようだ.CPU systemやソフトや制御には、技術者がわんさか居た.新人技術者はその輪の中に入りたがった.孤独は嫌ですか?

わたしは逆張りしてた.
仲間がたくさんいたら、組織の中で唯一の人材になりにくいじゃん.だから誰もいない分野を歓迎した.孤高な立場に成れてナンボだと思っていた.信号処理屋はたいていは空席だった.
それに、自分が参加する製品を成立させるための多様な技術分野のうちで、手薄な信号処理屋は設計部隊の技術的弱点であると察知してもいたので、誰かがやらなくちゃダメじゃんという判断もあった.
「電磁変換系や信号処理をやらしてくれ」といって上司に止められる事は一度もなかった.

わたしが社会人になって数年間は、DATとVHSの仕事だった.
ヘッド&テープ&録再回路と、VHSではビデオ信号を設計した.
VHSの時は、さほど必要でもないのにトランジスタ回路をたくさん設計した.1980年代終わりの頃の新人電気屋でトランジスタ回路に執着している奴なんか他に誰も居なかった.その後も同年代でトランジスタ好きな奴に会ったことは無い.まして年下においておや.

当ブログの「電撃トランジスタ講座」はその頃に得た知識である.

30歳ごろ、日本HPに勤めていた頃は、HDDの録再回路を設計.

失業するまで勤めたソニーではテープストリーマの録再回路を設計してた.この頃には再生回路を全部digital信号処理に置き換える事に熱を入れてた.

というわけで、キャリアのほぼ全部が磁気記録の録再回路=信号処理だった.

CPUをやったのは社会人1~2年目に少しやっただけだった.(8085アセンブラ)

------
約20年間に、8bit→16bit→32bitになり、CPUはARMになり、開発環境はwinになり、PCBは¥2000で買え、USBを繋げば焼けてしまうようになった.大人のおもちゃとしてかなり楽しめるようになった.

だがわたしは、その20年の進歩をひたすら脇見でスルーしてきたのである.

2011年から失業状態なので、失われた20年間を取り戻してみようかと思い、様々なCPUを触ってみるようになった.

2011年、1chipマイコンを触ってみるかと思っていじくり倒したのがSTM8Sだった.  →こちらのページはメンテしてないけどまだ生きてる

STM32は2012年に触り始めた.

2015年にEZ-USBをいじり倒す.   →こちら

Arduinoは2017年から使い始めている.便利.

------
なんとなく好きなCPUランキング

1位     STM32      リソース豊富なのでなんでもできる.その割に安い.

2位     Arduino      sample codeが豊富なのでDLすりゃなんでもできる.安価.

3位     EZ-USB      480Mbpsにしては安価で良いが、peripheralが貧弱.

4位     STM8S       Arduinoの便利さには負けている.


CPUのお勉強は趣味であって、就職のための勉強じゃないんです.

かしこ


STM32でDCCを作る方向で (15) DAC出力のために2 (一応音出た)

告知です.
コミケ99にて当社のDDC/DACを頒布いたします.
  日付   2021年12月31日(金) 東地区 テ-40b  東5ホール
  サークル名    bangflat
コミケにお越しの際はお立ち寄りいただけますとありがたいです.
商品紹介ページを作りました.

ーーーー
STM32でDCCを作る.    INDEXページへ

一応、、、ちゃんと音が出た.音を出すためのポイントを今回は述べる.
間違っていてもわたしは何の責任も負わないので素直に死んでくれ.


【条件、環境】
(target)
targetはNUCLEO-F207を使っているが、STM32のHAL/LLライブラリを使えば他のCPUへの移植は容易だと思う.最終的に使いたいのはSTM32F205またはSTM32F405である.
(USB)
NUCLEO-F207にはFullSpeed専用のUSBと、HighSpeedでもFSでも使えるUSBの2つ載っている.いまはUSB-HSを使っている.ただしモードはFSである.
NUCLEO-F207のプリント基板上にはUSB-HSのUSBコネクタはついてないのでUSB-HSのpinにコネクタを自分で取り付けた.でもsoftware的にはFSモードで動かしているので12Mbpsしか出ないので48kHz16bitで動作確認するに留める.

(HOST)
win10だと音楽再生アプリが動かない.デバドラの問題であろうが未解明.→win10のサウンドデバドラを更新とかなんとかしたら治ってしまった.
Linuxなら動く.
Linuxでaplay -D hw:1.0 xxxx.wavで音楽再生している.xxx.wavは48k16bitで作成しておく.

(IDE)
開発環境は、STM32CubeIDE Version: 1.3.0.
Peripheral制御はSTM32CubeMXに頼りっぱなし.
USB Audio Class 1.0のsample codeもSTM32CubeMXが吐いたものを使用.→こちら

(sample code)
同sample codeのデフォの機能は、、、
・デバイスディスクリプタが記述されていて、win10なりLinuxにUSB接続するとUAC 1.0 deviceとして認識してもらえる.ただしサンプリング周波数やbit数は16bit48kで決め打ち.
・受信したaudio streamの処理は、80 packet(80mSec分)をbufferに積んでくれるところまでやってくれる.
・ただし、HOSTアプリがaudio streamを出力してくれるかどうかは、上で触れたようにwin10だとなぜか知らないけどダメ.Linuxならaudio streamを出力してくれる.
・audio streamの仕様は、、、
    -EndPoint1を使う
    -1packetは、1ms毎のisochronous転送で送られて来る量(FSであるため1mSec)
    -48kHz 16bit 2chの場合は、1msのdata量=48000x2x2÷1000=192bytes
    -サンプリング周波数はSTM32CubeMXで変更可能
    -little endian    ←fuckだなぁ
・その先の処理、すなわちDACへの出力は自分で書く必要がある.

なお、現状はFullSpeedでUSBを動かしているので、packet周期は1mSecであるが、後日HighSpeedにしたら125uSec周期になる.


【自力でやること1   出力インターフェースの決定】
DACへ音声を出力するには通常はI2Sバスを使うだろう.しかし、STM32のI2Sは192kHz32bitが最大なのだ.384kHzは通らない.   ←残念だなぁ

そこでわたしはSPIを使うことにした.SPI1なら余裕で384kHzを通せる.ただしSPI3は192kHzが限界である.

ところが現状のTargetのSTM32F207-144だと、pinアサインの問題により、USB-HSとSPI1を同時に使えないんだ.  ←fuckだなぁ.   →こちら

なのでSPI3でaudio streamを出力する.(とりあえず実験のためだけ)

DACはLRCKを必要とする.I2SはLRCKを出力してくれる.
しかしSPIはLRCKを出力してくれない.どうするか?
外付けのFPGAでLRCKを生成する.

DACはPCM5102を使う.(とりあえず実験のためだけ)

そして超大事なこと.SPI/DACはmaster clockで動かすこと.これは鉄則だ.


【自分でやること2    hardware/peripheralの諸々】
(SPI)
STM32CubeMXで設定する.
・Transmit slave
・DMA追加
・DMA割り込みON
・DMAはCirculerにする  (じゃないと音がブツブツ途切れる)

Slave SPIのSCKには48kHzx2chx32bit=3.072MHzを与える必要がある.FPGAで生成する.(DACを32bit modeで動かすため)

(USB)
STM32CubeMXで設定する.USB-HSは「USB-OTG-HS」という名称なので注意してくれ.FSでもHSでもcodeはほとんど変わらないので、USB-OTG-FSでやりたければそうすればいいだろう.

(DAC)
PCM5102を使う.I2S 32bit modeである.
wavファイルとUSBが16bitなので不一致であるが、それはprogramで調整する.

(FPGA)
Xtalの源発振からbckとsckとLRCKを生成する役目.bck=sck=64LRCKの関係.
LRCKのbit同期は、再生開始の最初のdata bitで決める.
そのため、STM32から再生開始パルスを出してFPGAをre-startさせる.
verilog codeの公開はここでは割愛する.


【自分でやること3   STM32 buffer動作】
bufferの動作を考える.sample codeを崩してしまい、違う形にした.

ring bufferを2つ設ける.

(16bit buffer)
sample codeのデフォルトのbufferをそのまま使う.
USB packetが192bytesだと上で述べた.1mSec分である.
80 packet分のring bufferが在る.サイズは192x80=15360 bytesである.80mSec分のaudio streamを格納できる.格納物は、16bit LittleEndian LRchである.
HOSTから来るpacketは休みなくこのbufferに積まれる.

(32bit buffer)
わたしが追加したbuffer.
DACは32bit BigEndianである.
そのため、16→32bit変換と、LE→BE変換をしないといけない.
そこで2つ目のbufferを設ける.サイズは1つ目のbufferの2倍で30720 bytesだ.
格納物は、32bit BigEndian LRchである.
2つ目のbufferは、SPI DMAによって休みなく読まれ続ける.

1つ目のbufferには際限なく積まれる.2つ目のbufferは際限なく読まれる.1から2へ定期的にコピーしてやる.その仕組みをこの図で解説する.

①音楽再生の先頭からUSB packetが192bytesずつ16bit bufferに積まれてゆく
      ---wait 40mSec---
②半分まで積んだら、16bit buffer前半を32bit buffer前半にコピー
      ---wait 40mSec---
③全部積んだら、16bit buffer後半を32bit buffer後半へコピー
④SPI DMA起動.以後DMAはグルグル廻り続ける
      ---wait 40mSec---
⑤SPI DMA半分割り込みが発生する.16bit buffer前半を32bit buffer前半へコピー
      ---wait 40mSec---
⑥SPI DMA全部割り込みが発生する.16bit buffer後半を32bit buffer後半へコピー
      ---wait 40mSec---
以降は⑤と⑥の永久loop

問題がある.
積まれる速度はHOST CPU固有の速度だ.
読まれる速度はFPGA Xtal固有の速度だ.
この2者の速度はppmオーダーで食い違っている.
わたしの実機では30秒ぐらい経つとbufferが破綻する.
この破綻を避けるためのUSBの仕組みがfeedbackである.feedbackはsample codeに実装されていない.自力で実装しなくてはいけない.まだ実装していない.


【自分でやること4   STM32 programming】
1)buffer操作のstateを定義する
(usbd_audio.h)
/* Audio Commands enumeration */
typedef enum
{
  AUDIO_CMD_NONE = 0,
  AUDIO_CMD_START,      上図の②
  AUDIO_CMD_WAIT1,
  AUDIO_CMD_PLAY,          上図の③④
  AUDIO_CMD_WAIT2,
  AUDIO_CMD_FILL_FROM_TOP,    上図の⑤
  AUDIO_CMD_WAIT3,
  AUDIO_CMD_FILL_FROM_HALF,   上図の⑥
  AUDIO_CMD_WAIT4,
  AUDIO_CMD_STOP

} AUDIO_CMD_TypeDef;

2)SPI DMAの半分割り込みと完了割り込みcallbackを登録する
(main.c)
static void MX_SPI3_Init(void)   へ追加
HAL_SPI_RegisterCallback(&hspi3, HAL_SPI_TX_COMPLETE_CB_ID, TransferComplete_CallBack_HS);  DMA完了割り込み⑥

HAL_SPI_RegisterCallback(&hspi3, HAL_SPI_TX_HALF_COMPLETE_CB_ID, HalfTransfer_CallBack_HS);    DMA半分割り込み⑤

(stm32f2xx_hal_conf.h)
callbackを有効化する.
#define  USE_HAL_SPI_REGISTER_CALLBACKS         1U

3)DMA割り込みcallback関数にcodeを追加する
何をやりたいのかというと、、、
  ・if文は、packetが来ないならDMAを止める
  ・audio_cmdという変数は、buffer操作stateを進行させる

(usbd_audio_if.c)
extern SPI_HandleTypeDef hspi3;
extern uint8_t audio_cmd;
extern uint8_t packet_watch;

void TransferComplete_CallBack_HS(void)DMA完了割り込み⑥
   if(packet_watch==0) HAL_SPI_DMAStop(&hspi3); // No packet
   packet_watch=0;
   audio_cmd = AUDIO_CMD_FILL_FROM_HALF;
}

void HalfTransfer_CallBack_HS(void){    DMA半分割り込み⑤
   if(packet_watch==0) HAL_SPI_DMAStop(&hspi3); // No packet
   packet_watch=0;
   audio_cmd = AUDIO_CMD_FILL_FROM_TOP;
}

4)16bit buffer操作
音楽再生が終わるまで、ここはpacket毎の割り込みでcallされつづける.=SOF割り込み=1mSec
しかしこの関数の実質的な仕事は音楽再生の先頭だけだ.
16bit bufferに、②半分積まれたら32bit bufferへコピー、③全部積まれたら32bit bufferへコピー させるよう、buffer操作stateを進める.

(usbd_audio.c)
USBD_AUDIO_DataOut(*pdev, uint8_t epnum)   SOF割り込みでcallされる
{
  USBD_AUDIO_HandleTypeDef   *haudio;
  haudio = (USBD_AUDIO_HandleTypeDef *) pdev->pClassData;
  usbd_ptr = pdev;
ここでは引数のpointerをglobal変数に退避させるという変なことをやっている.深い処にある16bit bufferのアドレスをmain()に引き渡すためである.16bit bufferアドレスは動的に変化するのだっ!

  packet_watch=1;     packet在りの監視
  haudio->wr_ptr += AUDIO_OUT_PACKET;    write ptr更新

16bit bufferが半分に達したらbuffer操作stateを進める.
  if (haudio->wr_ptr == AUDIO_TOTAL_BUF_SIZE/2){
    if (audio_cmd == AUDIO_CMD_NONE){
      audio_cmd = AUDIO_CMD_START;
    }
  }

16bit bufferが全部埋まったらbuffer操作stateを進める.
  else if (haudio->wr_ptr == AUDIO_TOTAL_BUF_SIZE){
    haudio->wr_ptr = 0U;      write ptr topに戻す
    if (audio_cmd == AUDIO_CMD_WAIT1){
      audio_cmd = AUDIO_CMD_PLAY;
    }
  }

次のpacket受信の準備
  USBD_LL_PrepareReceive(pdev, AUDIO_OUT_EP, &haudio-> buffer[haudio->wr_ptr], AUDIO_OUT_PACKET);
}

5)buffer操作をするところ
buffer操作はmain()のpollingでやることにした.それには理由がある.buffer操作には2mSecぐらい要する.割り込みハンドラ内で2mSecも時間を喰うと、1mSec毎のpacket割り込みを取りこぼして死んでしまうからだ.(割り込み優先度はさておく)

(main.c)
while loop内でbuffer操作stateを監視し、16bit→32bit変換とLitterEndian→BigEndian変換を適宜行う.
while(1)  {
USBD_AUDIO_HandleTypeDef   *haudio;
uint8_t* buffer_ptr;
  haudio = (USBD_AUDIO_HandleTypeDef *) usbd_ptr->pClassData;
    switch(audio_cmd)  {

②の処理.32bit bufferの前半にコピーする.
      case AUDIO_CMD_START:
buffer_ptr = &(haudio->buffer[0]);  16bit bufアドレス
        for(int i=0;i<AUDIO_TOTAL_BUF_SIZE;i=i+8){ 32bit buf前半
                          16bit→32bit変換とLE→BE変換
     pbuf32[i+3]=0; // Lch 32bit bigendian (UPPER)
     pbuf32[i+2]=0;
     pbuf32[i+1]=*buffer_ptr++; // USB little endial (LOWER)
     pbuf32[i+0]=*buffer_ptr++; // USB little endial (UPPER)
     pbuf32[i+7]=0; // Rch 32bit bigendial (UPPER)
     pbuf32[i+6]=0;
     pbuf32[i+5]=*buffer_ptr++; // USB little endial (LOWER)
     pbuf32[i+4]=*buffer_ptr++; // USB little endial (UPPER)
     }
        audio_cmd = AUDIO_CMD_WAIT1;  wait state
      break;


③の処理.32bit bufferの後半にコピーする.
      case AUDIO_CMD_PLAY:
                    16bit bufferアドレスは半分進んだ場所とする
        buffer_ptr = &(haudio->buffer[AUDIO_TOTAL_BUF_SIZE/2]);
        for(int i=AUDIO_TOTAL_BUF_SIZE; i<AUDIO_TOTAL_BUF_SIZE*2;
            i=i+8)    32bit buf後半
        {
                       32bit変換、LEBE変換は同上
     }

                    PC8でFPGAをre-startする
     HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, 1);
                    ④ SPI DMAを32bit bufferで起動する
     HAL_SPI_Transmit_DMA(&hspi3, pbuf32,
                                     AUDIO_TOTAL_BUF_SIZE*2);
     HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, 0);
     audio_cmd = AUDIO_CMD_WAIT2;  wait state
      break;

⑤の処理.32bit bufferの前半にコピーする
      case AUDIO_CMD_FILL_FROM_TOP: // fill pbuf32 top to half
        buffer_ptr = &(haudio->buffer[0]);
      for(int i=0;i<AUDIO_TOTAL_BUF_SIZE;i=i+8)
        {
                       32bit変換、LEBE変換は同上
        }
        audio_cmd = AUDIO_CMD_WAIT3;  wait state
      break;


⑥の処理.32bit bufferの後半にコピーする
      case AUDIO_CMD_FILL_FROM_HALF: // fill pbuf32 half to end
        buffer_ptr = &(haudio->buffer[AUDIO_TOTAL_BUF_SIZE/2]);
        for(int i=AUDIO_TOTAL_BUF_SIZE; i<AUDIO_TOTAL_BUF_SIZE*2;
            i=i+8)
        {
                       32bit変換、LEBE変換は同上
        }
        audio_cmd = AUDIO_CMD_WAIT4;  wait state
      break;
      default:;
} // switch
  } // while


【残問題   feedback】
現状のSTM32 DCCには異なる2つの時間が流れている.

buffer readは、SPI DMAに時間支配されている.SPI DMAはSlave modeで動いているので、時間の源はFPGA上のXtal発振器である.

もう一方のpacket割り込みは1mSec毎にかかるが、HOSTに時間支配されている.HOSTの時間の源はマザーボード上のXtal発振器である.
両者は完璧に同期してなければならない.同期がずれるとaudio streamがbit落ちして音声にnoiseが出る.

しかし現状の両者は同期していない.30秒ぐらいで1pcket分ズレてしまうぐらいの不一致度だ.Xtalの周波数精度は数10 ppmオーダーだからそんなもんだろう.

同期させるには、USB deviceにfeedbackを実装する必要がある.
sample codeにはfeedbackは無いので、自分で実装する必要がある.

次の課題はそれかな.


#project folderをzipにしたものをupしておく.   →こちら
debug codeを追加してあったりとグダグダに汚いが文句は禁止だ.
間違っていても知らん.
再生終了処理と再開処理を実装してないので起動後一曲目しか動かない.これは仕様です.

かしこ