niszetの日記

10年目エンジニアが最近勉強したことを忘れないようにメモをする

(R…?) 昨日の続き。そしてHW色々…

昨日の続き。

昨日はconnectionまわりを見ていました。

niszet.hatenablog.com

通常のファイルからの読み込みの場合、ファイル名をfile_nameに入れておいたとして、

  con <- file(file_name, "rb")
  on.exit(close(con))

とするのが一般的だと思います。on.exit(close(con))で閉じておくようにしておくと良いです。コネクション開いた直後に。 arduinoとのシリアル通信でも同じじゃないかなぁと思っているのdすが、ちょっと準備に時間がかかりそうです。結果は確認でき次第。

Tinker board

実は、Maker Faire Tokyo 2017でTinker boardを入手していたのですが、すっかり放置…。
先ほど起動を確認しました。マニュアルにあるとおり、OSをmicroSDに書き込んであげれば特に難もなく起動できると思います。ケースに入れるのが一番苦労したような(microSD刺したままケースに入れるのは避けるべきです)
こちらも追々。

SPIとかI2Cとか

段々と趣旨が変わってきていることを感じていますが、Rでarduinoと通信したい。そのためにSPIとかI2Cの仕様を理解しよう、という流れになってきました。
SPIの説明はいたるところに書いてあるので、自分は特に書かないで良いよね。。。

こちらとか、参考にいたしました。 synapse.kyoto

SPIに限りませんが、Clockとdataを別々に送る場合、その遅延差、skewが気になるところです。
これがつき過ぎると受信側のセットアップ/ホールドのタイミングが発生する可能性があるためです。

しかし、SPIは精々数Mbps、送信側でClockとDataをタイミングマージン最大になるような位置、つまりデータの腹の位置にClockのエッジが来ているので、よほどの配線skewがない限りは問題にならないのでしょう。
SPIの、このあたりのゆるーい仕様による使いやすさが受けているのでしょうね。HW的なことをあまり意識しなくてよいという点はSW屋さんにとってはありがたいのだろうなと思います。
私は電気的特性やこのあたりのタイミング関係の記述が全然見つからないので逆に不安になるのですが…

ちなみに、I/O系のまとまった書籍でわかりやすいものってあまりないですよね。まぁ大体データシート読めって話になるのだとは思いますが。
そんななかで、こちら

www.shoeisha.co.jp

は珍しいI/Oについての本です。普段Cとか組み込みで使っている人に、HWのことを理解できるようにということで書かれたらしい、結構貴重な本だと思います。
もっと高速な、LSIの中に入っているような回路についてはCQの青い本のシリーズもありますが、あれは一般ユーザ向けではないですからね。

とはいえ、I2C/SPIについて、ページ数としては多くないので、もっと基礎から、割り込みとかまで踏み込みたい、とかいう方…やはり組み込み系の人向けかなぁ。
自分も必要な箇所だけ読んで積んでいたのですが、arduinoをいじり倒すためにももう一度読み直してみようと思います。

おススメの書籍等あれば、ご連絡ください(twitterでも)

しばらくHW寄りの話が多くなっていくと思いますが、Rもやっていきます。二足のワラジー