BSS138をはさむことで信号が鈍るようなんです。私みたいにソフト・サーバ屋から電子回路に入ってきた人間には想像もつかないことですが、本来コンデンサではないはずの部品や回路配線自体に寄生容量というものが存在するそうです。これがコンデンサとして働いてしまう。この寄生容量(C)とプルアップ抵抗(R)で、RC遅延回路が形成されてしまう。すると信号の立ち上がりに遅れが生じて、方形が山形状の波形に鈍ってしまうと。Bitbangモードだけで動いた、その理由は具体的にはわからないのですが、オシロで確認した限りでは生成された波形にかなり違いがありました。Rの上位1ビットだけがHということですね。PixelPin);この違い、わかります?全体の長さも違いますが、Bitbangモードの方がH信号の山部分が平坦かつ長いんですね。Bitbangの方が正確なんですよ。UARTバッファモードは、元々シリアル通信の生成に使うハードウェア機能を流用して作られたものですから、本来の信号のためのクロックをだましだまし使うということになります。そりゃそうだ、WS2812B専用の回路を持つマイコンなんて存在しないから。これが影響しているんじゃないかなー・・・・と個人的には思っているのですが、宮仕え先のオシロは仕事の都合で返してしまったので、結局調べられていません。コメントを受け付けていません。コメントを受け付けていません。Pi前提で、車両からCANデータを取得するものでした。回路の間違いはあったけど一応動いている。ボード単体でCANデータを送信できるようにしたり、ちょっとした解析ができれば、便利ではないかと思った。それには通信機能がついているマイコンが必要だ。ここ1年くらいで急速に盛り上がってきたESP8266というWiFiチップがある。IDEで開発できる単体マイコンでもあるから、他にマイコンは要らないわけだ。チップ単体だと500円を切っており、ヘタにArduinoボードを買うより安いというのも痺れる。APIを使おうとしたのです。動かない・・・ところが動かないんだなこれが。Arduino用のMCP2515ライブラリをESP8266で動くように移植していたのだが、テコでも動かない。ESP8266にはSPIとHSPIという2種類があるようなのだが・・・世間様の情報を見ても、なぜ2つあるのか全くわからなかったのだ。ESP8266_SPI_Driverの2種類あるのもなぞだった。たまらず先人に質問したりしたのだが、接続等も間違っていないようだし。これはソフト的な問題なのか、それともチップ内部で使っているSPI接続(フラッシュメモリ)との競合なのか、などとと謎は増すばかり。基板まで作っておいて手元にはテスター以外の計測器がなく・・・「わからないときはモノに聞け!」とばかりに宮仕え先のオシロをひっぱりだしてしまった。ESP8266のSPI通信周りをオシロで確認したまず、疑ったのはSPIのモード。SPI通信には4種類のモードがある。mbedのSPIマスターのWikiがまとまっている。ESP8266_SPI_Driverを使ってテストした。0);と書いてしまっていた。信号!出てねえ!!マジかよ。ちなみに緑がクロック、水色がスレーブ信号出力(MISO)です。1);んークロックが負論理になっててラッチ先行だからMODE2ですよね。1);クロックが負論理で、シフト先行だから、MODE3ですよね。0)だと動きそうにないことはわかった。なんかモヤモヤするけど、とりあえずの観察結果は以上です。MCP2515はMODE0とMODE3をサポートしているから、デフォルトでOKなのかしら(確認していない)たぶん、何か勘違いしていると思いますが、現場からは以上です。SPIとHSPIの違いもうひとつの疑問。HSPIとSPIの違いは・・・実はよくわかりませんでした。速度差なのかな?と思って速度を調べてみました。SPIのほうはArduino標準APIに沿っているので最大ホストクロックの2分周(DIV2)のようです。この場合の波形は以下のようになります。1クロック(立ち上がり立下り)でだいたい150nsだから、周波数に直すと約6.6MHzですかね。大半の用途では十分でしょう。2);の場合は以下のような波形になりました。60nsに2クロック入っているように見えます。周波数に直すと33MHzも出ているということになります。この設定では信号がかなり鈍ってしまってますので、実際に基板パターンをひきまわしてペリフェラルと33Mbpsで通信ができるとは限りませんが・・・確かに速いですね。MCP2515の場合10MbpsまでサポートしていますからHSPIの方がよさそうです。デバイスにもよりますが画像取り込みもできる速度だと思います。意外とポテンシャル高いねESP8266。コメントを受け付けていません。コメントを受け付けていません。BUSとは...ボツシュが開発した車両用のネットワークであり、これにつなげられると車速や燃料噴射量などを取得できる。車両にはOBD2端子というものがダッシュボード下に出ていて、自動車工場にある自動診断装置を接続すると、車両の情報を読んで、故障を診断する。BUSからデータを読んでいる。我々素人がCANを読むにはOBD2アダプタというものを買えば、基本的にはOK。安いし、スマホのアプリにBluetoothで飛ばして電子メーターとか可能になる。ハードウェアを作る理由は、実はあんまりない。昔からスマホでドラレコとかやっていた身から言わせてもらえれば、スマホは「設置」するのも「接続」するのもけっこう大変だ。車両機器は、できればダッシュボードにがっちり固定しておきたい。Piの場合はHDMI出力があるから、CANが読めれば電子メーターや累積燃費系みたいなものをリッチにつくることができるだろう。BUSが動かなかったこれまで作ってきたボードは、大した周辺チップが載っておらず特に問題なかったのだ。CANは動かなかった。動かない原因がわからない。PiのOS側の設定ミスなのか、ヤフオクで落としたプリウスのヨーレートセンサーの中古が壊れているのか、もう皆目見当がつかないわけである。手元にある測定機器といえば、10年前に買ったフルークのテスター1個・・・・・ロジアナもオシロもなしに、表面実装部品のボードを開発すること自体が、あまりに無謀で常軌を逸していたのは否めない。測定機器を買うお金がない。範囲で買えるものではなかった。・・・初心にかえって実物を目の前にして、なお調べようもないので、ボード設計時のデータを見直すことにした。CADが出してくれていた警告を1度無視する操作をしてしまった。Eagleの仕様上、未配線を無視すると図面からも消滅するのであった。ワーニングには必ず意味がある。ブラインドでポチポチしてはいけなかった。手配線で3.3Vを20番ピンに投入したら、めでたく動き出した・・・ここまで2週間。コメントを受け付けていません。コメントを受け付けていません。フル搭載した基板を焼いたおまえなんかレンジでチンだ!できあがった基板はCARMOD1、と呼びます。Pi本体への電源供給を管理します。Piがおかしくなったらリセットできます。・・・・・できるはずでした!!次回以降に続きます。コメントを受け付けていません。コメントを受け付けていません。(GitHub)これ以上持っていても仕方がないのでとりあえず公開しておきます。実は純正プログラムも、最初はPID制御をしていたけど後に辞めた、ということを知ったのはPIDライブラリで書きなおしたあとでした(^^;TSSOP-8パッケージのリフロー成功まだ、1608パッドの周辺はダマになってるけど、狭ピッチのICもリフローできるようになってきたよ。秘訣は....クリームはんだを撹拌することでした....マジかよ。要するに上澄みの方は有機溶剤が飛んでいて、十分な濡れ性を確保できていなかったようだ。表面張力で引き寄せられない部分がダマになるってわけ。均一性が崩れるので撹拌しすぎるのも良くないらしいけど。世間を見回せば、今回買ったような容器タイプじゃなくて、シリンジタイプのものがたくさんあるのね。これは有機溶剤が飛ばないようにするためのものだと思う。通販だと賞味期限とか保管時の温度とか信頼できないわけだけど、最低限撹拌はするというのが勘所かしら。温度プロファイルの条件出し最終的な温度プロファイルは以下に。最初のころとあまり変わっていない。プリヒート工程を2段にしたことくらいかな。いうページが一番わかりやすかったです。今回のヒーターの場合はKdがあまり小さいと追従性がいまいちということがわかりました。あと色々苦労した経験上、やっぱりプログラムや熱電対だけでは実際の基板の温度がわからないので、下記のような放射温度計がどーしても必要です。参照基板に熱電対をカプトンテープで固定しているのですが、隣接する実際の基板と20度以上違うことも珍しくありませんでした。熱せないとクリームはんだ溶けませんけど、熱し過ぎるとチップが壊れるので測定重要です。Eagleの設定し忘れ余談ですが。以前から気になっていたのだが、PCBステンシルを使ってパッドに盛ったクリームはんだの量が多い。写真でも確認できるけど1608のパッドはてんこ盛りである。デザインルールはElecrowからダウンロードしたものをそのまま使っていたので再確認してみると...Masksの設定が全くされていない(オール0)であることに気づいた。いつからだ....このうちのStopがストップマスクの設定で、Creamがクリームはんだを塗る領域を指定する指標らしいんだな。今これを気づいたところで、また基板とステンシルを再発注ということになってしまうのであった。ほんと経験がないから金ばっかりかかってもう....ハード屋さんが身近にいれば色々助かるんだけどねえ。コメントを受け付けていません。コメントを受け付けていません。Samba3で苦労しているほんと「単一ドメインでディレクトリ/mnt/shareを誰でも共有できるようにする」目的だけ達成できればいいのに、すごーく苦労しているという話。samba3もないものだけど余計に情報が錯綜して困ってる。Sambaのアカウント管理が同期してくれないよのね。/var/lib/samba/passdb.tdbがなぜか更新されない。smbpasswdも使えない。コメントを受け付けていません。コメントを受け付けていません。とある動画系商用システムで、定期的に動かしていたコンテンツを別サーバと同期するバッチが凍り付くようになったとヘルプ。\;(これが20行くらい続く)ouch!仮に/var/cacheに10万個ファイルがあれば、ディレクトリサーチは10万x20行。開発者に聞いたところ「拡張子を列挙しようと思ったが()が効かないのでそういうものだと諦めた」だそうで。Linuxなどでよく使われているGNUfindコマンドの場合、regextypeで正規表現を切り替えることができる。大文字小文字を区別しない-iregexもある。以下のように書くだけでディレクトリサーチの回数は1/20になる。....ファイル削除の高速化さらにバッチが凍り付く原因を調べると、動画からサムネイルを生成するプログラムが壊れたアップロードファイルを読み込んで暴走し、cacheディレクトリに800万個くらいのJPEGを生成したことがわかった。そりゃ凍り付くわな....findのもうひとつの盲点は-execオプションの扱い。\;が書いてある(俺もな!)。実はこの指定、1ファイルごとにrmコマンドをfork()してexec()するのでとても遅い。...というように複数ファイルを指定することが多いはず。これを模倣してくれるのがxargsコマンド。findから受け取ったファイルリストをコマンド引数ギリギリの長さまで羅列して、rmコマンドに渡してくれる。20万個の空ファイルを生成してベンチマークしてみる。0m35.328sファイル名に空白を含む場合を想定して、findには-print0オプションを、xargsには-0オプションをつけることにしよう。0m2.812s約18倍高速化6時間かかる削除処理が20分で終わります...となると、実作業の効率はだいぶ異なってくる。