どうも、秋月電子のHPで素子を探していたのに、気付けばマイコンの検索を始めているほどマイコン沼から抜け出せなくなっていました。
ここ最近、ルネサスの R8C マイコンをいじっていました。元は三菱のマイコンらしい。こんなやつです。
なんと100円。これはお買い得すぎる。しかし ROM が 2kb かぁ と思ったら、このサイトによるとなんと 64kb もあるというらしい。本当にお買い得だ。もしかしてこの値段対性能では、かつての LPC810 を大きく超えるコスパなのでは!?
ただ、関数ごとにセクションの指定をしてあげる必要があるらしく、多分お得意の vsprintf
とかは含めることは出来ないなと思うのでした。
ということで3つほど購入。当然ですが計300円です。これがマイコン3つ分の値段だとは思えないね。
肝心の機能
- Vdd: 1.8V〜5.5V
- GPIO: 最大16pin
- タイマ: RJ2, RB2, C の3つ
- ADC: 6チャネル
- ウォッチドッグタイマ: あり
- シリアル通信: UARTのみ
そこそこ使えそうですね。I2Cが無いのが玉に瑕。SPIはSWで簡単に実装できるんだけどなぁ...
書き込み
GCC 等はGitHub - hirakuni45/R8Cを参照すれば良い。書き込みプログラムもこちらのを使用。
接続ピンは以下。
R8Cピン番号 | R8Cピン名 | FT232ピン名 |
---|---|---|
3 | RESET | |
5 | VSS | GND |
7 | VCC | VIO |
14 | TXD | |
16 | RXD |
MODE 端子は起動時に動作か書き込みかを決めるものです。どっちがどっちか忘れましたがHigh or Lowとしてくださいね。
んでこんな感じで実行すれば良いんじゃないでしょうか。
$ r8c_prog -d R5F2M120 --progress -e -w -v $(TARGET).mot -s 115200 -P /dev/tty.usbserial-AI0454E0
プログラムたち
今回のマイコンは比較的素直に行ったな、と言う感じでした。といっても毎回恒例シリアル通信でつまずくということがありましたがね。
何かデータの送信がよく分からず、脳死的に wait を入れたらいい感じに動き始めました。よくわからないけどとりあえずこれでOKということにしよう。
あと注意点をいうと、一部ペリフェラルはモジュールストップを解除しなければなりません。多分ここハマりポイントなのでしょうが、僕は何か予感を感じたのでハマり回避しました。
ということでそこまで長くはないコードなのですが、プロジェクトファイルをここに投げて終わりたいと思います。タイマーRCについては何もしてないけど、まあすぐ出来るだろうからええやろ()ということにしています。はい。
LEDChika
なお、リンカ、スタートアップルーチン等は先程の平松さんのリポジトリのものを使わせて頂きました。