PICにやつあたり
PICって
Peripheral Interface Controller
のことです。
Pacific Islands Club
のことじゃありません (^^;;
----
先週からPICの使い方を覚えようとあれこれ始めました。GPS受信モジュールの測位情報を読み取るのが目的です。
PIC10F222から始めなんだかんだありましたがLEDをピカピカさせるのはできるようになりました。いろんなパターンで点滅するようになったLEDを見て悦に入ってます (^^)
そこで今度はPIC16F648Aに取り組むことにしました。
PIC10F222のときはデータシートを一気に斜め読みしてわかったような気分になれたのですが機能がたくさんあるPIC16F648Aだとそういうわけにも行きません。やさしいところからちょっとずつということでまずPIC10F222のプログラムを持ってきて動かすことをめざします。
ところがすんなり行きません。
----
その1
アセンブルしたときメッセージが出ます。例えばこんなのがあると
こんなメッセージが表示されます。
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)で代用してます。
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)で代用してます。
« 光を電気に.... | トップページ | なんとなくPICらしくなってきた(追記あり) »
「編集用」カテゴリの記事
- メモ(2013.11.04)
- 天体望遠鏡・拡大撮影の原理 (1)(2013.07.26)
- 天体望遠鏡・拡大撮影の原理 (2)(2013.07.26)
- 天体望遠鏡・拡大撮影の原理 (3)(2013.07.26)
- 天体望遠鏡・拡大撮影の原理 (0)(2013.07.26)
この記事へのコメントは終了しました。
コメント