ちょっとTea Time!? コントローラの刷新?(RP2040-PICOを使う) 2024.8.26
PICは高性能化
いままではマイクロコントローラには主にPICを使っていました。中でも28PinのPICがサイズ的にも
使い易いものでした。使い始めの頃はPIC16F886というものでしたが、最近ではPIC18F27Q43を使う
ようになって、速度や容量も格段に大きくなりました。
価格的にもPIC16F886は保守用品のようになってしまって、今はかなり高くなってしまって
PIC18F27Q43よりも高いです。
PIC16F886 | PIC18F27Q43 | |
処理ビット数 | 8ビット | 8ビット |
プログラム容量 | 14kByte | 128kByte |
RAM容量 | 368Byte | 8kByte |
CPUクロック | 内蔵8MHz | 内蔵64MHz |
AD変換分解能 | 10bit | 12Bit |
価格(現時点@秋月) | 440円 | 330円 |
PICの限界?
便利なPICだけど、やはり使いにくいところも多々あります。中でも、特に気になる点は
下記のところです。
整数が8ビットと小さい
これはPICの問題というよりはコンパイラ(CCS-S)の問題ですが、いわゆる整数(int)は
8ビット長なので0-255の範囲でしかつかえません。これはプログラムを組むうえで、常に
気をつけなければならない点です。long(16ビット)あるいはint32(32ビット)を常に使えば
いいのですが、プログラムも大きくなり、実行速度が遅くなっちゃいます。とくにint32を使うと、
気が遠くなるほど遅くなってしまいます。
ROMが小さい
PIC18F27Q43になって128kBまで拡大しましたが、グラフィックLCDを接続してフォントを
表示しようとすると、かなり窮屈です。例えば32dotフォントを必要最小限の英数記号だけ
格納しても12kByteあります。平かな、カタカナをいれると数10kBにすぐなってしまうので、
フォントデータだけでプログラム領域が潰されてしまいます。
専用の書き込み器が必要
PICのプログラムを書くのには専用のライターが必要です。PIC18F27Q43に書き込もうと
すればPICKIT3では不可で、PICKIT4以上が必要です。秋月で手に入るのは、現在では
PICKIT5ですが、これは17,800円もします。取り扱いには結構気をつかいます(以前に
PICKIT4を壊した前科があります)
これからはRP2040かなあ〜
PICの問題点を考えると、これからはRP2040を使ったPICOなどに移行したほうが良いのかな〜
と思ってきています。極めてシンプルな用途ではPICの方がサイズとかを考えると有効な場合が
あるかとと思いますが、ある程度の規模のIFを持たせたりプログラムを組むことを考えると、
RP2040を使うことでPICの問題はほぼ無くなるのではないかな〜と思います。
RP2040を使ったマイコン(PICO等)の利点(朱記はPIC)
2MBと大容量のROM(4MB以上もあり) (128kB)
256kBのRAM (8kB)
CPUクロック125MHzと高速 (64MHz)
USB-Cで書き込み可 (高価な専用ライター必要)
標準のANSI-C(intは32bit長) (intは8ビット長)
とくにUSB-CをつかってPCから簡単に書き込みができるということは、
プログラムの修正がとても簡単になります。
価格ですが、RP2040をつかったマイコンボードは秋月のものだと700円ですが、
中華製のサードパーティだと500円程度です。PICよりは高いですが、気になるような
差ではないでしょう。
統合コントローラのプラットフォームを用意しよう
RP2040を使ったマイコンボードのプラットフォームをつくって、ソフトのライブラリを作って
みたいと思います。PICを使っていたときは、プログラム容量が小さいので、必要な物だけを
その都度組み込むようなことをしていましたが、RP2040ボードだとROMが最低でも2MBありますから、
使うものだけでなく、使わないものも含めてなんでもかんでも組み込んだようなライブラリを
作っておくことができそうです。まあ、最終的には使わないライブラリをすべて抱合した巨大な
プログラムになってしまいますが、とくに問題にはならないでしょう(書き込みに多少時間が
かかる程度です)。
まずは蛇の目基板で作成
プラットフォームの最初の段階としては、320x240のグラフィックパネルとスイッチ4個、
エンコーダ、そして赤外線受光器を取り付けました。
まずは簡単に動作させるためのボードを作成です。
最初のプログラムはパネルに文字を書くためのライブラリ作成です。すでにPICで作った
ものがありますが、32dotのフォントも使えるようにしました。PICでは32dotのフォントは
プログラムの容量から見送っていました。ライブラリとしては8dot,16dot,32dotのフォントが
使えるようにしてみました。この3種類があれば、色々とつかえるでしょう。
32ドットフォント.このサイズなら遠目でもわかります.
16ドットフォント.バランス的にはこのくらいのサイズがちょうど良い感じ。
8ビットフォント.小さいので情報量は多くなりますが、流石に小さいかなあ〜。
次は赤外線リモコンルーチンを作成
次は赤外線リモコンの学習と解析プログラムの作成です。
すでにPIC用に作ったものがありますが、RP2040がより高速に動くこともあり、
受光モジュール出力を高速にサンプリングしたものに変更です。
赤外線リモコンの受光プログラムも作成しました。
次はI2Cの汎用ルーチンだなあ〜
まずは、I2Cで動く適当なデバイスを接続してみましょう。
I2Cで動く128x64のOLEDを接続 2024.8.27
身近なI2Cデバイスとして128x64のグラフィックパネルがあるので、それが動くようにしてみました。
フォントデータは5x7を搭載しているんので、文字だけだと21x8文字を表示することができます。
グラフィックパネルをつなげてみました。
(つづく?)