M11A、M12Aについて~
低価格なマイコンと言えば、AVRですが、ルネサスにも、CPの高いマイコンがあります。
それは、R8Cマイコンで、R8C/M12A/M11Aです。
「@100円、確かに安いけど、AVRもあるし、PICもあるしで、そんなにインパクト無いけどーー」と言いたくなるかもしれませんが・・
このマイコン、裏事情があって、表向きは
・プログラムメモリ(フラッシュ):2KB
・RAM:256バイト
となっていますが、実際には、
・プログラムメモリ(フラッシュ):32KB
・RAM:1280バイト
※時代に逆行するアセンブラ屋さんの調査による。
これが、現在出回っているデバイスでも有効に出来るのなら、今までの常識が一遍しそうです。
AVRのATTiny2313は、安くて使いやすいマイコンですが、A/Dコンバーターが無いのが痛いとこです。
※最近秋月の価格を観ると@150になっていますね・・
M12Aの場合は:
・最大20MHz動作(2.7V以上)
・1.8V~5.5V動作
・入出力ポート:17本 (LED駆動用ポート含む)
・外部割り込み入力:8本
・16ビット多機能タイマ(タイマRJ2):1
・8ビットプリスケーラ付8ビット多機能タイマ(タイマRB2):1
・16ビットインプットキャプチャ/アウトプットコンペアタイマ(タイマRC):1
・UART/クロック同期形シリアルインタフェース:1チャネル
・10ビットA/Dコンバータ:6チャネル
・コンパレータ:2回路
・ウォッチドッグタイマ
・クロック発生回路:XINクロック発振回路、オンチップオシレータ(高速/低速)
この充実ぶりです・・
この機能と、プログラムエリア32Kバイト、RAMエリア1280バイトとなると、かなりの用途にマッチします。
フラッシュの書き込みボードの作成
・配線は、ハードウェアーマニュアルに詳しく書かれていますので参考にして下さい。
・フラッシュ書き込みモードで電源投入後、FDTとの接続が時間内に無いと、接続出来なくなるので、「リセットスイッチ」は必要です。
・フラッシュの書き込みは、3.3Vでも行えるようです。
このDIPタイプは、シリアルインターフェースで接続出来る為、非常に手軽に書き込みが行えます。
購入したデバイス
デバイスの表記では(下に書かれているのはロット番号と思います)
M120AN 0432N01 M110AN 0432N01
となっていました。
書き込みソフトのインストールと設定ファイルの修正
書き込みソフトは、FDT4.09 を使います。
インストール後、以下の設定ファイルを書き換えます。(Windows7 64 ビットの環境です)
/c/Program Files (x86)/Renesas/FDT4.09/kernels/ProtD/R5F2M110A/Renesas/1_0_00/R5F2M110A.fcf /c/Program Files (x86)/Renesas/FDT4.09/kernels/ProtD/R5F2M120A/Renesas/1_0_00/R5F2M120A.fcf
「R5F2M110A.fcf」の修正箇所
[Header] Description = Flash Development Toolkit Configuration File File Type = 2.1 [Device Info] EVB Name = R5F2M110A EVB Kernel Suffix = R5F2M110A ... FLASH ROM Size = 32768 ... Secret Flash Memory = Erase Block Count = 10 Memory Area Count = 2 Reserved Area Count = 0 ... [Erase Block 2] Block Name = EB8 Start Address = 32768 Start (Hex) = 0x00008000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 3] Block Name = EB7 Start Address = 36864 Start (Hex) = 0x00009000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 4] Block Name = EB6 Start Address = 40960 Start (Hex) = 0x0000A000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 5] Block Name = EB5 Start Address = 45056 Start (Hex) = 0x0000B000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 6] Block Name = EB4 Start Address = 49152 Start (Hex) = 0x0000C000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 7] Block Name = EB3 Start Address = 53248 Start (Hex) = 0x0000D000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 8] Block Name = EB2 Start Address = 57344 Start (Hex) = 0x0000E000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 9] Block Name = EB1 Start Address = 61440 Start (Hex) = 0x0000F000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Memory Area 0] Block Name = UA0 Start Address = 32768 Start (Hex) = 0x00008000 Block Size = 32768 Size (Hex) = 0x00008000 Area Type = User Flash Overlay = 0 ...
「R5F2M120A.fcf」の修正箇所
[Header] Description = Flash Development Toolkit Configuration File File Type = 2.1 [Device Info] EVB Name = R5F2M120A EVB Kernel Suffix = R5F2M120A ... FLASH ROM Size = 32768 ... Secret Flash Memory = Erase Block Count = 10 Memory Area Count = 2 Reserved Area Count = 0 ... [Erase Block 2] Block Name = EB8 Start Address = 32768 Start (Hex) = 0x00008000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 3] Block Name = EB7 Start Address = 36864 Start (Hex) = 0x00009000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 4] Block Name = EB6 Start Address = 40960 Start (Hex) = 0x0000A000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 5] Block Name = EB5 Start Address = 45056 Start (Hex) = 0x0000B000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 6] Block Name = EB4 Start Address = 49152 Start (Hex) = 0x0000C000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 7] Block Name = EB3 Start Address = 53248 Start (Hex) = 0x0000D000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 8] Block Name = EB2 Start Address = 57344 Start (Hex) = 0x0000E000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Erase Block 9] Block Name = EB1 Start Address = 61440 Start (Hex) = 0x0000F000 Block Size = 4096 Size (Hex) = 0x00001000 EBR0 = 0 EBR1 = 0 EBR2 = 0 Overlay = 0 Lockable = False [Memory Area 0] Block Name = UA0 Start Address = 32768 Start (Hex) = 0x00008000 Block Size = 32768 Size (Hex) = 0x00008000 Area Type = User Flash Overlay = 0
書き込みプロジェクトの設定
・デバイスを指定する際、チェックサムが合わない為、警告が出ますが、そのまま進みます。
・とりあえずこの修正で、32Kまでプログラムメモリーが使えると思います。
※MSYS のコンソールから、emacs でファイルを直接編集したのですが、パーミッションの関係で、実際には更新されない事が判りました。
エクスプローラーなどで、編集後のファイルを上書き保存する必要があります。(その際、警告のダイアログが出ます)
謝辞
・「時代に逆行するアセンブラ屋」さんの「toida」さんには、設定内容などお世話になりました。