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

» 2005年08月02日 14時00分 公開
[小林哲雄,ITmedia]
前のページへ 1|2       

i2c_routine.incの変更点

 他人のプログラムなので、ここでは変更点だけを記載する。62行めと63行めは、GPIO4とGPIO5をサーボコントールに使っているので出力設定にする。

 SDA_OUT equ b'11001100' ; TRIS value for SDA as an output
 SDA_IN equ b'11001101' ; TRIS value for SDA as an input

 また71行めからのマクロ定義は100kHz用のものなので、「goto $+1」「nop」をすべてコメントアウトするとよいだろう。「goto $+1」は次の命令にジャンプするので1命令で2ステップと命令数を減らしたウェイトを狙っている。

 読み出し用メモリが増えたのでデータフォーマットも少々拡張しておこう。128バイトではサーボを1つ動かすので手がいっぱいだが、外部メモリを使うことでステップ数は大幅に増える。そこで2チャネルに拡張した。2バイトを基本として、まず冒頭に各チャネルのスタートアドレスを記載する。初期化ルーチンは冒頭を読んでエリアセットを行い、またシーケンスデータが「00:00」のペアは終了コードで冒頭に戻す。

 メインプログラム側はシーケンス動作拡張にあわせたメインルーチンの拡張と外部シリアルROMの読み出しルーチンだ。これは先のAN982のサンプルプログラム「ByteRead.asm」と「SecRead.asm」を参考にして組み込む。

 このサンプルプログラムは読み出すだけで何もしていないが、これでは意味がないので読み出し後ワークレジスタに書き込むのと、今回のシーケンスデータは偶数アドレスから2バイト読むという前提で、2バイト読み出しルーチンを作った(奇数アドレスから読み出すと異常動作するバグがあるが、これは「奇数アドレスにしないこと!」という条件で逃げる。もしも余力があれば、奇数アドレスで問題が起きる原因とその解決策を考えてみるとよいだろう)。今回で一応プログラムは終了なので、次回の記事でソースコードを掲載して、プログラムの全体解説をおこなう。

 先ほど述べたように、EEPROMへのデータ書き込みはIC-PROGでも秋月電子のPICライターでもできる。秋月電子のライターを使う場合は書き込みソフトを秋月電子のwebサイトからダウンロードすればよい。

 5月23日に新しいβ版ファームウェアとライティングソフトも登場している。EEPROMデータ作成にはHEXデータが必要だが、これは適当なツールを物色すればよい。今回はMarioさんが作成したHEXファイルツールを使用した。

秋月のPICライターはプログラムを変えるとシリアルEEPROMライターになる

 シミュレータを回していても実感がわかないのでブレッドボードに配線して試してみた、……が動かない。これはおかしいとシミュレータとI2Cの規格を見直すと、I2Cバスはオープンコレクタで外部にブルアップ抵抗を用意する。AN982のソースはオープンコレクタ出力(Lかハイインピーダンス)にするためにPICのI/OピンをLの出力か入力の切替としているためだ。正常動作のためには外部にプルアップ抵抗が必要となる。2kオーム程度の抵抗を回路に加えると動き出した。

外部EEPROMを付け、RCサーボも2つ制御しても十分な動作が行える

 シリアルROMをつけたことで、5つある出力ピンのうち2つが使われた。今回のプログラムは2つのサーボをコントールしているが、必要ならばあと1つ増やす余裕はある。3つあれば私の野望「デジカメのオートコントール」も達成できそうだし、それでもダメなら今回のプログラムをI/Oピンの多いPICで使えばよい。

 今回のプログラムは割り込み、拡張割り込み、内部A-D変換、内部EEPROM、I2C制御と要素が非常に多くなった。確実に動作するルーチンを組み合わせるだけでも難しいところがあったが、確実にプログラムを組むことによって、また必要に応じて「達人のプログラム」を使うことによって実現できる。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

2026年07月01日 更新
  1. Macで外付けGPUが使える「TinyGPU」をRTX 5060 Tiで検証 実用性と浮き彫りになった課題 (2026年06月29日)
  2. 懐かしの「タマゴ型マウス」が現代仕様にアップデート エレコム創業40周年モデルの4代目「EGG MOUSE」は10色の着せ替え対応で4980円 (2026年06月30日)
  3. サブスク不要で画面を持たない潔さ Polarの新型フィットネストラッカー「POLAR Loop」を「Fitbit Air」と比較 (2026年06月30日)
  4. “縦2眼”で広角20mmから望遠120mmまでカバーするジンバルカメラ「DJI Osmo Pocket 4P」を試す (2026年06月30日)
  5. アキバ夏のボーナス商戦は「コスパと延命」がキーワード! 5000円切りのピラーレスケースや3000円弱のDDR5用メモリクーラー登場 (2026年06月29日)
  6. NUC風PCやメモリ128GBのモンスターミニPC「DAIV CX」などを続々投入! マウスコンピューターが事業戦略発表会で明かした新製品ロードマップ (2026年06月29日)
  7. 各社製マザーボードをデザインしたカプセルトイ「手のひらPCパーツ」が発売予定 4大メーカーが監修 (2026年06月29日)
  8. IBMが世界初のサブ1nm半導体チップ技術を発表/LenovoがノートPC向けで世界初となる“1000Wh/L”バッテリーの詳細を明らかに (2026年06月28日)
  9. レノボ、スピーカー9基を備えた12.1型Androidタブレット「Lenovo Tab Plus Gen 2」 (2026年06月30日)
  10. GIGAスクール時代の学校に欠かせない「ネットワーク」と「周辺機器」 その動向に迫る (2026年06月30日)
最新トピックスPR

過去記事カレンダー