PICにやつあたり | 池袋駅南口の天文計算

池袋駅南口の天文計算

小望遠鏡とデジタルカメラを使った天体観測とExcelでできる天文計算のブログでした (^^;;
新規の記事は書きませんがよろしくおねがいします m(._.)m

PICって

  Peripheral Interface Controller

のことです。

  Pacific Islands Club

のことじゃありません (^^;;

----

先週からPICの使い方を覚えようとあれこれ始めました。GPS受信モジュールの測位情報を読み取るのが目的です。

PIC10F222から始めなんだかんだありましたがLEDをピカピカさせるのはできるようになりました。いろんなパターンで点滅するようになったLEDを見て悦に入ってます (^^)

そこで今度はPIC16F648Aに取り組むことにしました。

PIC10F222のときはデータシートを一気に斜め読みしてわかったような気分になれたのですが機能がたくさんあるPIC16F648Aだとそういうわけにも行きません。やさしいところからちょっとずつということでまずPIC10F222のプログラムを持ってきて動かすことをめざします。

ところがすんなり行きません。

----

その1

アセンブルしたときメッセージが出ます。例えばこんなのがあると

  bcf    STATUS,RP1
  bsf STATUS,RP0
  clrf TRISB


こんなメッセージが表示されます。

  Register in operand not in bank 0.
  Ensure that bank bits are correct.

MessageであってErrorでもWarningでもないのでいいといえばいいのですが気になります。

確かにTRISB(とかTRISA)はBANK0にありませんが、だからこそBANK切り替えをしているわけです。なんでメッセージが表示されるんだろうとずいぶん悩みました。

いろいろ考えたり調べたりしたのですが“p16f648a.inc”を見ているうちに理由がわかりました。

TRISB EQU H'0086'

と定義してあります。BANK1にありますから物理アドレスは確かに0x86でしょう。でも物理アドレスが0x86で直接アクセスできないからバンクを切り替えてアクセスしているわけです。0x06のアドレスとして。

だったら

TRISB EQU H'0006'

と定義すべきなんじゃないでしょうか。じっさいこうして(別の識別子で)定義してアセンブルするとなんら問題ありません。もちろんアセンブルしたものもちゃんと動きます。

皆さんこのメッセージはどうやって回避されているんでしょう。

----

その2

さてアセンブルが終わってPICに転送(program)しようとすると今度は警告が表示されます。

  MPLAB ICD 2 does not support programming this device
  if both the internal oscillator and internal MCLR are selected.

これには参りました。結論を先に書くとほよほよさんから教えていただいたサイト

  「電子工作

にある記事

  「コンフィギュレーションビットの設定方法

に警告が出る理由と対処法が書いてあります。このページを見ると上の警告の出るデバイスとして

  PIC12F629,PIC12F675,PIC16F627A,PIC16F628A,PIC16F630,PIC16F676,PIC16F818,PIC16F819

があげてありますからよくある現象なのでしょう。

困っている方も多いと見えてこれに関する質問はOKWaveにもありました。OKWave系__つまり「教えてGoo!」とか「Yahoo!知恵袋」とかいろいろ__を見ていつも思うんですが、なんで自分で手を動かしたこともないのに妄想で(エラそうに)回答を書く人が多いんでしょう。最初から電子工作で調べればなんてことはなかったのですがいつものクセでググってしまい振り回されました (^^;;

-----

PICKit3用に作ったコネクターです。

ブレッドボード用のジャンパーを束ねエポキシ系接着剤を染み込ませたティッシュで固めてあります。PICKit3のソケットとピッチが合うようにジャンパーの保護用のゴムをカッターでけずって間隔を調整しました。
$池袋駅南口の天文計算

この「エポキシ系接着剤を染み込ませたティッシュ」は

  好きな形にできる
  固化する前にたれない
  接着剤が使えないような材料でも固定できる
  固まるとけっこうな強度がある

ということでよく使ってます。

配線の色は
 茶(1)、赤(2)、橙(3)、黄(4)、緑(5)
とカラーコード順にするつもりだったのですが茶色がなかったので白(9)で代用してます。