PICでもっと遊ぶその4「外部メモリを使ってサーボを複雑に動かす」夏でも楽しい工作教室(1/2 ページ)

» 2005年08月02日 14時00分 公開
[小林哲雄,ITmedia]

外部ROMをつけて動作ステップを飛躍的に増やす

 1つのシーケンスに対し場所と時間という2バイトのデータが必要になる前回の方法では、PIC12F675に内蔵されたEEROMを使う場合、たった64ステップの動作しか行えない。といって、シーケンス数を増やすためにデータバイトを減らすと動きや時間に制約が出る。

 となると、データ総数を増やす方法を使うしかない。そのためにEEPROMの多いPICを買ってくるのもバカバカしい。というのもPICについているEEPROMデータサイズはPIC16シリーズで最大でも256バイトと2倍にしかならない。もっともっとシーケンス動作ステップを増やさなければ面白くないし、将来の野望に備えるには不十分だ。

 そこで外部メモリに活路を見出すことにした。I2C(アイスクエアシーと呼ぶ)のシリアル転送EEPROMを使えば少ない2ピンでROMを読み書きできる。そして、それを簡単に行えるSSP機能を搭載したPICもある。でもPIC12F675にはSSP機能はない。アララ……

 ではPIC12F675でI2CのEEPROMが使えないのか? というと、スレーブ動作(コントロールされる側)は無理だが、外部回路をコントロールするマスター動作はソフトウェアで実現可能だ。そのプログラムはMicroChipから“Application Note”として公開されている。I2Cの制御は色々と面倒なことがあるし、デバッグも難しくなるので、素直にこのサンプルプログラムを使ってしまおう。

 前回はEEPROMに対してプログラムと同時に書き込んだが、外部I2C ROMへの書き込みは春の工作教室でも紹介した「IC-Prog」と秋月の「AKI-PICプログラマー Ver.4」で共にサポートしている。シリアルROMも秋月電子で売っている(シリアルI2C EEPROM)。

 秋月電子では以下を販売している。

メーカー容量価格型番
MicroChip64Kビット100円24LC64
256Kビット160円24(L)C256
ATMEL256Kビット160円AT24C256
512Kビット300円AT24C512
1Mビット600円AT24C1024

2ピンで制御可能なEEPROM。見かけはPICとあまり変わらない

 価格と容量で256Kビット(32Kバイト)製品が適当なようだ。秋月電子ではATMELとMicroChipの製品を販売しているが、それぞれでピン配置が異なるので配線には注意したい。ここではPICと同メーカーということでMicroChipのメモリを使う。ただし、64Kビット製品も容量が違うだけで制御方法は同じでなので、ステップ数が4000もあれば十分という場合は64Kビット製品を買ってもよいだろう。

 ちなみにI2CのスレーブにはA0、A1、A2という3つのアドレスピンがあって、これが背番号になる。つまり背番号0から7までの機器を指定することで、最大8つの機器がI2Cでコントールできるのだ。

 あとはプログラム(とシーケンスデータ)を書くだけだ。と言っても今回はプログラムの変更点が多い。まず、資料としてMicroChipのWebサイトから“Application Note”のページを見ると、「APP NOTES BY FUNCTION」という機能別に項目が並んでいる。

 その項目から「Communication」セクションの「I2C」というサブカテゴリを開くと「AN982:Interfacing I2C Serial EEPROMs to PIC10 and PIC12 Devices」という説明が見つかるはずだ。ここで「AN892」をクリックしてサマリーを見るとキーワードとして「Serial EEPROM, I2C, PIC10F202, PIC12F675, 24LC16B」と書かれている。

 ここからサンプルソースファイルをダウンロードしよう。キーワードから分かるように、非常に好都合なことにPIC12F675をターゲットにしたプログラムとなっているので、ほとんど変更せずに利用できそうだ。I2Cでのコントロールの詳細はPDFファイルのドキュメントを読むとよいだろう。もちろん、24LC64/24(L)C256の資料もMicroChipのサイトから入手できる。

 サンプルソースは共通となるモジュール「i2c_routines.inc」と数種類のサンプルプログラムから構成されている。ざっと目を通してみると

  • キーワードから分かるように24LC16B用となっている。そのためアクセス方法が違う可能性がある
  • TRISIOへの値が決め打ちになっていて、(サーボを動かすのに使っている)GPIOの4ピンから5ピンが入力となっている

 という問題がありそうだ。後者はソースファイルを書き変えてしまえば対応だろう。前者は少々厄介で、資料を見ると24LC16Bのメモリ構成は「8*256*8」と書いてある。後ろの8は8ビットアクセスという意味で真ん中の256はアドレスが8ビットあるということだ。では前の8はというと、先に書いたA0、A1、A2でバンクセレクトしてしまおうということになっている。つまり冒頭に書いた「最大8つのスレーブ」というのが使えない。

 一方、24C64/256はアドレスを2バイト(16ビット)必要とする。資料を見るとアドレス設定のコントロールワードの後にアドレスを2回、8ビットづつ送信すればよいことが分かる。読み出しルーチンはソースを参考にして別途作ってしまうのがよさそうだ。

 もう1つ、I2Cは元々100kHzでのシリアル転送であったが、現在は速度アップされている。ソースは100kHz版だが、秋月電子で売っているMicroChipのI2C EEPROMはすべて400kHz版なので、そこもソースをいじっておくとよいだろう。

i2c_routine.incの変更点

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

2026年08月15日 更新
  1. 「Pixel Watch 5」が8月20日に発売へ 前モデルから最大20%の高速化、価格は6万2800円から (2026年08月13日)
  2. 劇的大進化した「Insta360 X6」 8K/50fpsや大型センサー、内蔵ストレージ搭載、X5から買い替える価値はある? (2026年08月14日)
  3. 映画もゲームもPC画面も大迫力で楽しめる! Google TV搭載のRGBレーザー方式4Kプロジェクター「AWOL Valerion Pro 2」を試す (2026年08月14日)
  4. タッチパッドを手前に引き出して使える「Ewin ワイヤレス折りたたみキーボード」がセールで24%オフの5319円に (2026年08月12日)
  5. シャープのヘルスケア特化スマートウォッチ「からだメイト Watch」を試す 装着するだけでカロリー&水分補給を自動記録 (2026年08月10日)
  6. Googleの折りたたみスマホ「Pixel 11 Pro Fold」は何が変わった!? 最大14万7600円お得になるキャンペーンも (2026年08月12日)
  7. 3K非光沢OLEDが秀逸! 最新Ryzen AI搭載の14型モバイル「EliteBook X G2a 14 AI PC」を試す (2026年08月13日)
  8. GMKtec、7.2cm四方のカラフルな超小型ミニPC「G5S」を発売 あえて少し古いCPUを採用して価格を抑制 「桜ピンク」も後日追加 (2026年08月14日)
  9. 「文系か理系か」で悩まなくていい――NVIDIAが女子中高生に伝えたAI時代のキャリアと英語の重要性 (2026年08月13日)
  10. ノートPCやミニPCにGPUを外付けできる! OCuLinkとUSB4 V2(Thunderbolt 5)両対応のeGPUドック「MINISFORUM DEG2」が22%オフの3万5994円に (2026年08月12日)
最新トピックスPR

過去記事カレンダー