AIと戦って、あなたの人生のリスク診断 >>

PICマイコンにて8つのAD入力で同時測定を行いたいのですが、それが可能な型番を教えて頂けないでしょうか。またこのような疑問点は何処で調べれば良いのか、アドバイス頂けると助かります。
Microchip社のHPを探したのですが、見つけることが出来ませんでした。

A 回答 (2件)

PICマイコンで同時測定は、原則的にできません。

データの読み出しは、順次になるからです。A/D変換とPICの速度が速い場合は、msecかμsecオーダーのズレなので同時測定と言えないこともないです。

また、A/Dコンバータを切り替えて使っている(殆どのA/D変換器は、A/Dコンバータを入力チャンネル分切り替えて使っています)場合が多く、この方式では、チャネルを切り替えるたびに新しいA/D変換をしますので、どうしても読み出しが遅くなります。

もし、贅沢に個別のA/Dコンバータを用意して、読み出したデータをバッファに記録しておく方式のA/D変換器なら、次から次へと読み出してきますので、殆ど同時とも言って良いかたちになります。

下記は、A/D変換に関するページです。質問の答えにはなっていませんが、参考にはなるでしょう。
http://www.picfun.com/PIC24F/AP/app24F03.html
http://oasis.halfmoon.jp/other/pic-ic/675-temp-s …
http://yamato-pic.blogspot.com/2010/11/adrs232c. …
下記は、ワンチップマイコン活用工作を紹介しています。
http://www.picfun.com/app00.html
http://www.picfun.com/equipj69.html

これらのA/Dコンバータへの入力を、高速で切り替えることができれば、複数のチャンネルを変換できます(ただし、読み出しはその分遅くなる)。また、A/Dコンバータを複数用意(当然費用は高くなります)すれば、同時読み込み(PICの読み出しだけになる)に近くなります。

"またこのような疑問点は何処で調べれば良いのか、アドバイス頂けると助かります。"につては、設計の経験者に当たるのが最も早いですが、CQ出版の本も参考になると思います。トランジスタ技術(ガチガチのハードウエア向け)やインターフェース(一寸ソフトウエア寄り)等でしょうか。頑張って下さい。
    • good
    • 0
この回答へのお礼

迅速なアドバイス、ありがとうございました。

やはり難しそうですね。

何とか同時測定出来ないかもがいていたのですが、各chにS/Hをもうけて、値の取り込みは同時に、でも測定は順番に行う方法を試そうと思います。

CQの本もかなり調べたのですが、雰囲気は何となく分かるのですが、結論までには至らず、どう判断すべきか悩んでいました。

やっとすっきりしましたので、別のアプローチを考えてみます。
助かりました。

お礼日時:2011/07/29 08:53

>それが可能な型番を教えて頂けないでしょうか。



ありません。
ADCを複数搭載したPICはありません、どのPICも入力をアナログ・スイッチで切り替え1つのADCで変換していますアナログ・スイッチの切り替え(チャンネル選択)を含めると1チャンネル当たり少なくとも20μsは必要です、8チャンネルだと160μs+α必要ということになります。
「同時測定」が厳密に同時ということならPICでは不可能です。同時測定を実現するには外部に8個のADCを用意するしかないでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。

信号の相対比較が必要なので、取り込む瞬間の時間のずれは1uS以内に納めたいと思っています。
ただし読み込み作業は時間のずれが許されますので、別の方法を考えます。

PICの型番によっては実現できるのではないかと期待していたのですが、正攻法で試します。
お世話になりました。

お礼日時:2011/07/29 08:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPICシリアル通信での入出力送信方法

現在PIC勉強中の初心者です。
教えて頂きたいのですが、

現在PIC16F877Aを2台使用して相互間をシリアル通信で結び、
一台のPICからの入力12点を二台目のPICの出力12点に出力するプログラムを作成中です。
現在は通信で1点の入力をうけ1点の出力にだすところまでは何とかできました。

そこで調べても合理的で良いやりかたが見つからなかったのでよく御存じの方に教えて頂きたいのですが、
12点の入力をどのようなやり方でまとめ、シリアル通信で送り、どのようなやり方で展開し12点の出力を出すのか良いやり方がありましたら教えて下さい。
(入力はRA,RE,RC,RDを使い、出力はRB,RC,RDを使用してます)
(自分としては2進数でまとめて2つ送ったらわかりやすいのではないかと思っているのですが..)

Aベストアンサー

PICも含めて、いかなる組込みマイコンでシリアル通信を行う場合でも、その内蔵のシリアル通信機能を使えば、比較的簡単に「送信」する事は誰でも可能です。

問題は、シリアルデーターの2バイト以上の受信です。
(1)その内蔵のシリアル通信機能で、いつ来るか判らない「受信データー」を絶えず環視している必要が有る。->つまり割込処理とするか、あるいは絶えず受信のプログラムを優先的に動かしている必要があるという事です。

(2)内蔵機能であろうが、プログラムでのシリアル受信であろうが、1バイト以上連続して何バイトもデーターが送られて来る様な場合には、その間髪入れずに送られてくるバイトデーターを、取りこぼす事無く、次々と記憶する領域(バッファー)が必要となります。

PICの内蔵シリアル受信機能には、バイトバッファを2個持っています。つまり、2個までは連続したバイトデーターを取りこぼしする事無く自動で受信できますが、それ以上連続したバイトを受信すると、取りこぼしを起こすという事です。

今回は、2バイトで済むので、特に問題なく受信が可能と思いますが、あまりにも、通信のノイズに対する防御が無くて、今後のためにも、そのままの受信はお薦めできません。

詳しくは、下記サイトにPICでのシリアル通信で、割込型ソフトウエアFIFOバッファについて、やさしく詳しく教えています。

ご参照ください。これを知らないと、2バイト以上の受信が全てのマイコンで出来ません。
「パレットソフト」
http://www.palettesoft.co.jp/index.htm
HOME > 技術談話 > PIC microcontroller > シリアル通信

頑張って下さいね。

PICも含めて、いかなる組込みマイコンでシリアル通信を行う場合でも、その内蔵のシリアル通信機能を使えば、比較的簡単に「送信」する事は誰でも可能です。

問題は、シリアルデーターの2バイト以上の受信です。
(1)その内蔵のシリアル通信機能で、いつ来るか判らない「受信データー」を絶えず環視している必要が有る。->つまり割込処理とするか、あるいは絶えず受信のプログラムを優先的に動かしている必要があるという事です。

(2)内蔵機能であろうが、プログラムでのシリアル受信であろうが、1バイト...続きを読む

QA/Dコンバーターのノイズ対策について(マイコン)

PICプログラムを楽しんでいる初心者です。

ある本で、18ビットのI2C制御A/Dコンバーターを使ったハードウェアの説明をしているのですが、
その本では、マイコンのI2Cピンを5.1kΩの抵抗でプルアップし、A/Dコンバーターとの間には
ノイズ対策のため、さらに330Ωの抵抗を直列に挿入していると書かれています。

どうして、330Ωの抵抗を直列に挿入することでノイズ対策になるのでしょうか?
また、A/Dコンバーターは入念なノイズ対策が必要なのでしょうか?

詳しい方、すみませんが教えてください。
よろしくお願いします。

Aベストアンサー

>どうして、330Ωの抵抗を直列に挿入することでノイズ対策になるのでしょうか?

抵抗によりノイズの伝達が抑制されるからです。
配線容量や寄生容量と共にCRフィルタが構成され、高周波ノイズに効きます。
もちろん正規信号にも多少なりとも影響が出るので、
この値や方法がどんな場面でも使えるわけではありません。


>また、A/Dコンバーターは入念なノイズ対策が必要なのでしょうか?

A/Dコンバータに限らずノイズが乗って邪魔なら対策が要るし、
A/Dコンバータであっても変換方式や分解能によっては対策無用な場合もあります。
要は「A/Dコンバータだから」でなく
「信号と区別できないノイズが載る可能性があって載るとまずい時」に対策します。

使途が確定してない汎用品とか勉強用装置ならこの限りではありませんが。

信号内容によってはソフトウェアが「これは正規信号でない」と区別できるなら
ハードウェアでなくソフトウェアで除去する事もあります。

分解能 18bit だと 約256k 段階の電圧を表せるので、
基準電圧が2.5Vとすると 1ステップが 約 0.01mV という数値になります。
種類によりますがノイズは 0.01mV なんて小さい数値ではないので、
無体策では小さな信号がノイズに埋もれてしまい、
信号を測定してるつもりが全部ノイズだった、なんて状況も発生します。


入念って言いますがここではプルアップ抵抗と直列抵抗だけでしょ...

>どうして、330Ωの抵抗を直列に挿入することでノイズ対策になるのでしょうか?

抵抗によりノイズの伝達が抑制されるからです。
配線容量や寄生容量と共にCRフィルタが構成され、高周波ノイズに効きます。
もちろん正規信号にも多少なりとも影響が出るので、
この値や方法がどんな場面でも使えるわけではありません。


>また、A/Dコンバーターは入念なノイズ対策が必要なのでしょうか?

A/Dコンバータに限らずノイズが乗って邪魔なら対策が要るし、
A/Dコンバータであっても変換方式や分解能によっては対策無...続きを読む

Q【PICマイコン】AD変換中にタイマー割り込みしたらAD変換はやりなおしですか?

PICでデジタル時計を作っているんですが
AD変換を使ってみようと思って調べたら
AD変換中は他の処理は出来ないような事が書いてありました。
メインの処理は時計のカウントなのでタイマー割り込みを止めたら時間が狂ってしまいます。
AD変換中にタイマー割り込みが発生して変換処理を中断してしまったらAD変換は始めからやり直しになってしまうんでしょうか?

Aベストアンサー

 PIC16ではA/D変換は専用ハードウェアで行い割り込みに影響されません。変換終了時にフラグが立ったりADC割込みが発生したりするのでその後変換結果を見に行けばよいです。プログラム上の事情で変換中の割込みを停めたい場合は、割り込み禁止となる時間がタイマー割込みの周期とタイマー割込みの処理時間の合計より充分に短くなるように配慮すればよいです。

Q三端子レギュレータに付けるコンデンサ

三端子レギュレータ7805を使用するのに、あるHPで「入力、出力側にそれぞれ1つずつ0.1μFのコンデンサを付ける」というのを見た事があるのですが、別の本には入力側には22μF、出力側には100μFを取り付けるとありました。
どちらが正解なのでしょう?また、2つの違いは何でしょう?
目的に応じて使い分けたりするのでしょうか?

Aベストアンサー

どちらも正しく、どちらも間違っています。
本に書いてあるから、ではなく、設計によって違ってきます。
つまり、入力電圧、入力のリップル含有率、出力電流、出力に求めたいリップル含有率、出力のリアクタンス分・・・などなど
それによって計算します。
それから、リップル率によってコンデンサに流れる電流を求め、そこから発熱を求め、それに耐えられるコンデンサを選びます。
また、入力電圧と出力電圧の差、出力電流、リップル率、使用状態の周囲温度などから、レギュレータの発熱を計算し、熱抵抗を求めて、放熱板を決定します。
かなり面倒な計算なので、おおよその回答を言いますと、7805は出力が5V1Aの定格ですから、最大0.8Aまで使うとし、入力はAC6Vの全波整流として、入力も出力も100μFの電解コンデンサと0.1μFのプラスチックコンデンサを並列接続したもので、いけると思います。
ただし、0.1μFのコンデンサはレギュレータの足に直結します。
100μFのコンデンサは回路中についていればどこでも良いです。

入力はAC6Vの全波整流で、出力電流を0.8A取ると、レギュレータで約1.6Wを消費しますので、周囲温度を30℃まで使うとして、ジャンクション温度を80℃にしたければ、熱抵抗は25℃/W程度の放熱板が必要です。
これ以外の入力電圧や、出力電流の場合は再計算が必要です。

どちらも正しく、どちらも間違っています。
本に書いてあるから、ではなく、設計によって違ってきます。
つまり、入力電圧、入力のリップル含有率、出力電流、出力に求めたいリップル含有率、出力のリアクタンス分・・・などなど
それによって計算します。
それから、リップル率によってコンデンサに流れる電流を求め、そこから発熱を求め、それに耐えられるコンデンサを選びます。
また、入力電圧と出力電圧の差、出力電流、リップル率、使用状態の周囲温度などから、レギュレータの発熱を計算し、熱抵抗を...続きを読む

Qプルアップ抵抗値の決め方について

ほとんどこの分野に触れたことがないので大変初歩的な質問になると思います。

図1のような回路でプルアップ抵抗の値を決めたいと思っています。
B点での電圧を4.1Vとしたい場合について考えています。その場合、AB間での電圧降下は0.9Vとなります。

抵抗値×電流=0.9Vとなるようにプルアップ抵抗の値を決めるべきだと考えていますが、この抵抗に流れる電流が分からないため、決めるのは不可能ではないでしょうか?

抵抗値を決めてからやっと、V=IRより流れる電流が決まるため、それから再度流れる電流と抵抗を調節していって電圧降下が0.9Vとなるように設定するのでしょうか。どうぞご助力お願いします。



以下、理解の補足です。
・理解その1
ふつう、こういう場合は抵抗値を計算するためには、電圧降下と抵抗に流れる電流が決まっていることが前提だと考えていました。V=IRを計算するためには、この変数のうち2つを知っていなければならないからです。
また、例えば5V/2Aの電源を使った場合、マイコン周りは電源ラインからの分岐が多いため、この抵抗に2A全てが流るわけではないことも理解しています。

電源ラインからは「使う電流」だけ引っ張るイメージだと理解しているのですが、その「使う電流」が分からないため抵抗値を決定できません。(ポート入力電流の最大定格はありますが…)


・理解その2
理解その1で書いたように、抵抗値を計算するためには、電圧降下と抵抗に流れる電流が必要だと理解しています。図2を例に説明します。Rの値を決めたいとします。
CD間の電圧降下が5Vであることと、回路全体を流れる電流が2Aであることから、キルヒホッフの法則より簡単にRの値とそれぞれの抵抗に流れる電流が分かります。今回の例もこれと同じように考えられないのでしょうか。

ほとんどこの分野に触れたことがないので大変初歩的な質問になると思います。

図1のような回路でプルアップ抵抗の値を決めたいと思っています。
B点での電圧を4.1Vとしたい場合について考えています。その場合、AB間での電圧降下は0.9Vとなります。

抵抗値×電流=0.9Vとなるようにプルアップ抵抗の値を決めるべきだと考えていますが、この抵抗に流れる電流が分からないため、決めるのは不可能ではないでしょうか?

抵抗値を決めてからやっと、V=IRより流れる電流が決まるため、それから再度流れる電流と抵抗を調...続きを読む

Aベストアンサー

NO1です。

スイッチがONした時に抵抗に流れる電流というのは、最大入力電流や最大入力電圧
という仕様から読めば良いのでしょうか。
→おそらくマイコンの入力端子の電流はほとんど0なので気にしなくてよいと思われます。
入力電圧は5Vかけても問題ないかは確認必要です。

マイコンの入力電圧として0Vか5Vを入れたいのであれば、抵抗値は、NO3の方が
言われているとおり、ノイズに強くしたいかどうかで決めれば良いです。
あとは、スイッチがONした時の抵抗の許容電力を気にすれば良いです。
例えば、抵抗を10KΩとした場合、抵抗に流れる電流は5V/10kΩ=0.5mAで
抵抗で消費する電力は5V×0.5mA=0.0025Wです。
1/16Wの抵抗を使っても全く余裕があり問題ありません。
しかし、100Ωとかにしてしまうと、1/2Wなどもっと許容電力の大きい抵抗を
使用しなければいけません。
まあ大抵、NO3の方が書かれている範囲の中間の、10kΩ程度付けておけば
問題にはならないのでは?

QPICはアセンブラとC言語のどちらにすればよいですか

PICマイコンをはじめるにあたって、アセンブラかC言語、どちらにしようか迷っていたところ、下記の知恵袋で「まだ、C言語に手を出していないのであれば、絶対にアセンブラーから学んで下さい。」

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1386032198

と、書いてありました。実は以前よりC言語を勉強していたのですが、どちらにすればよいですか?
詳しくは上のサイトを見て頂きたいのですが、この知恵袋の回答者の方が言う「構造体・ポインター」の直前、アドレス・バイトとビット付近で現在つまずいていて、PICとまとめてC言語の書籍で補おうとしていたのですが、タイミングとしてはちょうど良いでしょうか?

C言語のレベルとしては、プログラミングで必ず出てくる、文章表示と繰り返し・条件分岐・論理演算くらいしかわかりません。

C言語とアセンブラ、現在の自分にどちらの方が適当かご教示ください。

Aベストアンサー

「繰り返し・条件分岐・論理演算」が分かっているならとりあえずプログラミングの入門は済んでいるようですね。この辺でアセンブラに手を出すのは面白いと思います。

ただ、アセンブラを学ぶにあたってPICマイコンは最悪です。
kabasanさんも「苦行以外の何物でもなく」とおっしゃっていますが、PICのアーキテクチャ(構造)は最近の流行から外れており、非常に癖があります。
私もPICはよく使っていますが、パズルとしての楽しさを求めてアセンブラを書いているように思います。
癖の詳細については割愛しますが、ざっと言うと「レジスタが1つのみ」「命令とデータのアドレスが別」「命令数が35個などと少ない」あたり。
なおこれはPICのうち、ベースライン・ミッドレンジ・Enhancedミッドレンジ・ハイエンド(PIC18)に当てはまります。
他の、PIC24・PIC32については上記の癖はありませんが、これらのPICはマイナーなので、あえてそれらを選ぶ理由はないように思います。
(PICを選ぶ理由は情報の多さと入手性のよさが主なので)

命令セットが素直なマイコンとしては、AVRマイコンが良いでしょう。PICに比べて情報が少ないのが難点ですが。
またARM(特にThumb命令セットのCortexM0(+)あたり)もよいですが、こちらも情報が少ないですし高性能なゆえの難解さがあります。
マイコンにかぎらずアセンブラを学びたいならx86という手もなきにしもあらず。命令セットは非常に複雑ですが、その分かゆいところに手が届く便利さがあります。情報が多いのも嬉しいところ。

「繰り返し・条件分岐・論理演算」が分かっているならとりあえずプログラミングの入門は済んでいるようですね。この辺でアセンブラに手を出すのは面白いと思います。

ただ、アセンブラを学ぶにあたってPICマイコンは最悪です。
kabasanさんも「苦行以外の何物でもなく」とおっしゃっていますが、PICのアーキテクチャ(構造)は最近の流行から外れており、非常に癖があります。
私もPICはよく使っていますが、パズルとしての楽しさを求めてアセンブラを書いているように思います。
癖の詳細については割愛しますが、...続きを読む

Q可変抵抗器には何故足が3本あるのでしょうか?

基本的な部分で理解できません。

Aベストアンサー

http://www.ops.dti.ne.jp/~ishijima/sei/letselec/letselec7.htm

両端の抵抗値は変わりません。両端と中心の端子の間の抵抗値が変わるようです。


+----+----+
4Ω 4Ω
両端は8Ω 中心と両端は4Ω4Ω

可変抵抗をまわして左にする
++--------+
0Ω 8Ω
両端は8Ω 中心と両端は0Ω8Ω

可変抵抗をまわして右にする
+--------++
8Ω 0Ω
両端は8Ω 中心と両端は8Ω0Ω

QPIC 16F84A でLEDが点滅しない

どんな事をしても、LEDが点滅しません何が原因なのかわかりません。何方か教えて頂けませんか。
環境は、Windowos8 MPLAB X IDE XC8 PICkit3  Pickit3対応ICSP書き込みアダブターです。

PICは PIC16F84A を使用しています。ソースコードは下記のようにしてあります。

 #include <xc.h>

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = EXTRC // Oscillator Selection bits (RC oscillator)
#pragma config WDTE = ON // Watchdog Timer (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (Power-up Timer is disabled)
#pragma config CP = OFF // Code Protection bit (Code protection disabled)
#define_XTAL_FREQ 20000000

void main(void) {
TRISA = 0x00;
PORTA = 0x031;
TRISB = 0x00;
PORTB = 0x00;

while (1)
{
PORTA = 0x02;
Delay_ms(1000);
PORTA = 0x01;
Delay_(1000);
}
}

------------回路  PIC16F84A      ------------

  18  RA1-----1Kオーム----- (K)LED(A)----←  5V   
  17  RA0----- 1Kオーム-----(K)LED(A)----←  5V  
  16  OSC1----
            セラロック20MHZ -------- GND
  15  OSC2----
  14 VDD---------------← 5V
   4  MCLR--------------← 5V
5 VSS----------------- GND

 
コンパイルも、書き込みもできましたが駄目でした。いろいろ試みましたが成功しません。

コンフィギレーションに決定的な間違いがあるのではないか?疑っております。

よろしくお願いいたします。

どんな事をしても、LEDが点滅しません何が原因なのかわかりません。何方か教えて頂けませんか。
環境は、Windowos8 MPLAB X IDE XC8 PICkit3  Pickit3対応ICSP書き込みアダブターです。

PICは PIC16F84A を使用しています。ソースコードは下記のようにしてあります。

 #include <xc.h>

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = EXTRC // Oscillator Selection bits (RC...続きを読む

Aベストアンサー

No5です。

ああ、すみません、「高速クリスタル」と書いてしまいましたが、クリスタル(水晶)発振子とセラミック発振子で設定に違いはありません。
セラロックでも(周波数が3.5MHz以上なら)同じくHSです。

このHSという名前ですが、
まずそもそもPIC16F84Aでは、FOSCの選択肢として
・RC RC発振器
・HS 高速クリスタル/セラミック発振子 (3.5MHz以上)
・XT クリスタル/セラミック発振子
・LP 低出力クリスタル
の4つがあります。
これはデータシートに載っている名前なのですが、C言語では「RC」に対して「EXTRC」という別の名前を使っているようですね。
PICのC言語には詳しくないのですが、どこかに「HS」に対応するC言語での名前が載っていませんか?

なお「FOSC_INTOSCIO」は内蔵クロックが搭載されたPIC専用の設定ですね。16F84Aには内蔵クロックはありません。

Qint型からchar型への変換

タイトル通り、int型からchar型への変換の仕方がわかりません!><
どうしたらいいのでしょうか?

Aベストアンサー

#include <stdio.h>


char buf[5];
int no;

no = 10;
sprintf(buf, "%d", no);

QPCとPICkit3の接続

過去の質問を見ましたが、解決策が見つからなかったため質問させていただきました。

PCにMPLABX IDEをインストールし、PICkit3を接続してマイコン(PIC18F4553)に書き込み、デバッグをしたいと思っています。

MPLABX IDEでコンパイルは正常に行えましたが、書き込みが出来ない状態です。
MPLABXの画面にPICkit3のシリアル番号は出てきていますが、connection failedと出ており、書き込む以前にPICkit3との接続がうまく行っていないのではないかと思っています。

なお、一緒にインストールされたswitcherも念のため操作してみましたが、こちらもエラーメッセージが出て切り替えも正常に出来ていません。

ちなみに、PICkit3 programmerではマイコンへの書き込みは行えました。ただし、programmer終了時にはエラーメッセージが出ています。マイコンの動作は正常でしたので書き込み動作自体は出来ているようです。

接続するUSBポートは全て試しています。マウスとPICkit3しか使っていない状況です。

何度か再インストールもしてみましたが、同じ結果です。
PICkit3使用で、気を付けなければいけないこと、原因と疑われるようなこと、がありましたらご教授お願いします。

よろしくお願いいたします。

過去の質問を見ましたが、解決策が見つからなかったため質問させていただきました。

PCにMPLABX IDEをインストールし、PICkit3を接続してマイコン(PIC18F4553)に書き込み、デバッグをしたいと思っています。

MPLABX IDEでコンパイルは正常に行えましたが、書き込みが出来ない状態です。
MPLABXの画面にPICkit3のシリアル番号は出てきていますが、connection failedと出ており、書き込む以前にPICkit3との接続がうまく行っていないのではないかと思っています。

なお、一緒にインストールされたswitcherも念の...続きを読む

Aベストアンサー

質問に回答させていただきます。

>恥ずかしながらPICkit3のOS切り替えが必要というのが目からウロコだったのですが、
>このOS切り替えは基本中の基本、当たり前のことなのでしょうか?

PICKit2とはチップも違いますので、PICKit3はそういう仕様だと思ってます。
あまりこの点についてはネットでも書かれているところは少ないので、PICKit3 Programmerを使っている人はあまり居ないのかもしれません。
(私はロジアナを使いたいときだけProgrammerを使ってますが)

PICKit3 Programmerに付属のアプリケーションマニュアルPDFより抜粋

「Revert to MPLAB mode - the PICkit 3 cannot operate in the Programmer Application and MPLAB IDE modes simultaneously.
Selecting this option returns the PICkit 3 to bootloader mode so that the MPLAB IDE can update the PICkit 3 with compatible firmware.」

とありますように同時には動作させることは出来ないとあります。
PICKit3ファームをMPLABで更新可能なブートローダモードへ戻す、ということなので、ブートローダの仕様が異なっているためでしょう。
(PICKit2ProgrammerアプリとPICKit2用のOSをそのままベースにしてPICKit3用に改良した為、新旧2つの方式に切り替えて対応できるブートローダが載っているのかなと想像してますが)

>またOS切り替えはProgrammerからは行えましたが、MPLABX IDEからは行えないのでしょうか?
>(MPLABを使用する際には、OS切り替えのためだけにProgrammerの実行が必須?)

面倒ですがそうなってしまいます。
PICKit3 Programmerアプリによる書き込みは、既にアップデート対象から外れており、メーカはMPLAB X IPEを推奨しています。そのためMPLABでそういう機能がサポートされることは無いと思います。(MPLAB X IPEは、そのまま使えるプログラマです)

既にご存じのように、ボタンを押しながらUSBへ繋ぐと元のブートローダに戻ります。
(私もアプリからしか操作出来ないと思ってましたが、後に知りました)

>そもそも通常出荷時は、どちらのモードになっているものなんでしょうか?

出荷時は、MPLABモードですので、最初にPICKit3 Programmerを立ち上げた際は、
画面上に「OSをダウンロードしてください」とのメッセージが表示されます。

MPLABモードとありますが便宜上、そう呼んでいるものと思います。PICKit3においてはMPLABで認識できる状態が標準のブートローダで、Programmerが対応しているブートローダはあくまで特殊なモードということになりますので。

質問に回答させていただきます。

>恥ずかしながらPICkit3のOS切り替えが必要というのが目からウロコだったのですが、
>このOS切り替えは基本中の基本、当たり前のことなのでしょうか?

PICKit2とはチップも違いますので、PICKit3はそういう仕様だと思ってます。
あまりこの点についてはネットでも書かれているところは少ないので、PICKit3 Programmerを使っている人はあまり居ないのかもしれません。
(私はロジアナを使いたいときだけProgrammerを使ってますが)

PICKit3 Programmerに付属のアプリケーショ...続きを読む


人気Q&Aランキング