Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

2024-10-01から1ヶ月間の記事一覧

Clapクレートをつかって、Rustでコマンドライン引数をつかう

RustにはCLAP(Command Line Argument Parser for Rust)という優秀なコマンドラインパーサーがあるそうなので、こいつを使って遊んでいきます。 実際のところ 導入 $ cargo add clap --features deriveとやるか、 tomlに clap = { version = "4.5.20", featur…

Ubuntu22LTSでRust言語をやる その7:I2Cの実験をやる

Ubuntu22LTSでRust言語をやる その6:teensy4.0で組み込み用環境no_Stdをためす - Bye Bye Moore の続き。 組み込みといえば外付けセンサー。 まずはI2Cのテストとして、秋月で調達しやすいADT7410を使ってみることにします akizukidenshi.com 実際のところ…

Ubuntu22LTSでRust言語をやる その6:embeded halで外部インターフェースをつかう

実際のところ toml [package] name = "teensy_led_blink" version = "0.1.0" edition = "2021" [dependencies] cortex-m = "0.7" #Teensy4.0のCortexの低レイヤ実装をする方法 cortex-m-rt = "0.7" #Teensy4.0の起動時のあれこれ。メモリ初期化とか embedded…

Ubuntu22LTSでRust言語をやる その5:teensy4.0で組み込み用環境no_Stdをためす

no_std環境は、要するにOSに依存するような機能を削ぎ落として使用するってことです。 ファイルの読み書きといった機能が無効になる上、メモリを動的に確保することができなくなったりします。 まぁ、よりC言語的になるというか……。 ただ、このお陰で動作が…

 .

.

.

.

Ubuntu22LTSでRust言語をやる その4:エラーハンドリング

インターネットの強い人たちが絶賛するRustのすごいトコの一つ、エラーハンドリングを見ていきます。 実際のところ matchでエラーの有無により挙動を切り替えできる。 use std::error::Error; use std::fs::File; fn complex_operation() -> Result<(), Box<dyn Error>></dyn>…

Ubuntu22LTSでRust言語をやる その3:外部パッケージいれる

Pythonにおけるpip、Rubyにおけるgemみたいなのが、Rustにもあります。 今回はactix-webというパッケージを使ってWEB鯖をつくってみます。 実際のところ とりあえずシンプルに パッケージ導入 tomlファイルというのがありましたが、こいつを弄ると入る様子 […

Ubuntu22LTSでRust言語をやる その2:変数の定義、そして所有権というやつ

Rust言語が称賛される理由の一つに「所有権」というやつがあります。 データの取り扱いを、ユーザーに意識的に行わせることで、安全性を保ちます。 実際のところ 所有権の基礎 fn main() { let s1 = String::from("hello"); // 基本的な所有権の移動 let _s2…

Ubuntu22LTSでRust言語をやる その1:環境構築

実際のところ $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shbashrcに以下の値を追加 source "$HOME/.cargo/env"環境変数を再読込 $ exec $SHELL 動作確認 $ rustc --version rustc 1.82.0 (f6e511eec 2024-10-15)個人的好みでベースに…

UARTの受信割り込み設定を明示的にやる

実際のところ 一部のピンは最初から割り込み設定に対応しているものの、そうでない奴は明示的に使い方を示しておかんといけないみたいです。 たとえば、ArduinoUno互換であれば2,3は対応しています。 サンプルコマンド通りに繋いだら動いたけど、ピン替えた…

.

.

.

.

AppImageで配布されてるやつをタスクバーに固定できるようにする

Ubuntu22.04LTSにCursorをいれる際、公式推奨だとAppImageで入れることになります。 が、最初は良くても毎回毎回AppImageを展開するのはどうも文化的ではないような気がします。 というわけで、こいつを通常のアプリと同様ランチャーで起動できるようにし、…

iPhoneのユーザー辞書で独特な用語を入れておく

上の方の➕をクリックし 参考もと https://support.apple.com/ja-jp/guide/iphone/iph6d01d862/ios

"GD32E103搭載 CAN BUSモジュール"で5MbpsのCANFDパケットをM5stackBasicで扱う

CAN FDをマイコンで扱った事例がネット上に少なく苦労しましたが……要約疎通したのでメモ 実際のところ 回路接続 M5stack Basic Grove PortA (赤)にコネクタをつなげる 私の環境では不要でしたが、終端の120Ωが必要なときは裏面にある端子をジャンパはんださ…

MG4010I36をPythonで動かす

探してみても、以下のような情報くらいしか出ておらず……肝心のパケットはどこに行ったんだっていう Open CAN Protocol 1. CAN bus parameters and single motor command send and receive message format Bus interface: CAN Baud rate: 1Mbps The format of…

.

.

.

.

.

.

M5stackで底面にケーブルを出す場合

M5Stack用BUSモジュールArduino (アルドゥイーノ)Amazon 実際のところ M5Stack用BUSモジュールはソケットの引き出し口が横に出てくれています 公式の想定では、横方向へL金具を使って引きだす運用を考えているようです。 今回はこれを使って下にピンを出すよ…

.

.

.

.

acan2517FD.hでreceiveが動かないとき、直前にpollを入れると動くことがある

なんかバッドノウハウ的ですが……Arduino系でCANFDを実現するときにつかうライブラリ"acan2517FD.h"で、 CAN FDパケットの疎通に失敗するときはpoll関数をブチ込むと、いう事を聞くようになる可能性があります。 実際のところ 初期化サイド const uint32_t er…

acan2517FD.hで初期化時のエラーコードが262144などと訳の分からない値になってたらケーブルが長すぎるのかも

実際のところ 初期化時がこれで const uint32_t errorCode = can.begin(settings, [] { canfd.isr(); }); エラーコードの格納部分をこれ(M5stackに表示) if (errorCode == 0) { M5.Lcd.setCursor(10, 30); M5.Lcd.print("CAN FD OK"); } else { M5.Lcd.set…

.

.

.

.

.

.

.

.

.

.