PIC焼きと4倍速・・・
2014-12-18
LCメータ作成にあたってPIC関連の気付いた点を、例によって備忘録としてブログ活用・・・これがあるお陰で結構救われることもあるんで、今回もまとめておきます。
◆ PICkit3でプログラムを書き込む場合のIDEの設定
PICをたまにしか弄らないことが原因なんですが、MPLAB X IDEを「バージョンアップする機会」が多く、その度にプログラムを書き込むための設定が消えてしまいマゴマゴしてしまうんで、改めてこの部分を記しておきます。

プロジェクトのプロパティでPICkit3を選択した後、上のイメージのように「Power」タブで電源供給を行う&供給電圧を指定するという部分をきちんと設定しないと、プログラム書き込みの際にエラー停止します。この設定忘れで毎度躓いて・・・って、単にもの覚えが悪いだけなんですが、ひとまずここまで書いておけばもう大丈夫でしょう
◆ PLLENの設定
振り返ってみると、PICで作ったヘッポコ作品において「外付けのクリスタル」を使ったものが2作目です。これが、今回のLCメータ製作で躓くポイントになってしまうとは・・・。
気に入って使っている「PIC16F18xxシリーズ」を含めた新し目のPICでは、4倍クロック動作をサポートしています。これが何と「ディフォルトでON」なんです

ConfigビットのPLLENの仕様はご覧の通りで、丸囲みの部分のディフォルト設定値が「1」・・・ということは、何もしないと「1 = 4xPLL enabled」となります。今回のLCメータ製作の初っ端で躓いたのがここで、簡単な初期化の後にLCD表示をしても上手くいかず、論理バグでないことを確認した上でConfigを見直したら・・・といった形で行き着きました。LCDの初期化のタイミング論理が全て4倍速になってしまっては、まともな初期設定はできませんからねぇ・・・。
Configビット設定については、プログラム上「pragma 設定部分」を使い回しており、ミニ・エレキー⇒低周波発振器⇒ミニ・パワー計という順で製作してきたものは全て「内蔵クロック使用」のため、これまでは特に問題にならなかった(内蔵クロックで4倍クロック動作が有効になるのは、PIC16F18xxでは「16MHz」の設定の場合のみ)ということです。
また、これまでに外付けクリスタルを使ったのは「PIC16F648A」・・・こいつにはそもそも4倍クロック動作機能がなく、今回は「知らぬ間に生きちゃった」という格好なんですが、どうもこの「ディフォルト」が解せないぞよ・・・と悔し紛れにボヤいてしまいました。4倍クロック動作の方が「特殊」な気がするんですがねぇ・・・
◆ PICkit3でプログラムを書き込む場合のIDEの設定
PICをたまにしか弄らないことが原因なんですが、MPLAB X IDEを「バージョンアップする機会」が多く、その度にプログラムを書き込むための設定が消えてしまいマゴマゴしてしまうんで、改めてこの部分を記しておきます。

プロジェクトのプロパティでPICkit3を選択した後、上のイメージのように「Power」タブで電源供給を行う&供給電圧を指定するという部分をきちんと設定しないと、プログラム書き込みの際にエラー停止します。この設定忘れで毎度躓いて・・・って、単にもの覚えが悪いだけなんですが、ひとまずここまで書いておけばもう大丈夫でしょう

◆ PLLENの設定
振り返ってみると、PICで作ったヘッポコ作品において「外付けのクリスタル」を使ったものが2作目です。これが、今回のLCメータ製作で躓くポイントになってしまうとは・・・。
気に入って使っている「PIC16F18xxシリーズ」を含めた新し目のPICでは、4倍クロック動作をサポートしています。これが何と「ディフォルトでON」なんです


ConfigビットのPLLENの仕様はご覧の通りで、丸囲みの部分のディフォルト設定値が「1」・・・ということは、何もしないと「1 = 4xPLL enabled」となります。今回のLCメータ製作の初っ端で躓いたのがここで、簡単な初期化の後にLCD表示をしても上手くいかず、論理バグでないことを確認した上でConfigを見直したら・・・といった形で行き着きました。LCDの初期化のタイミング論理が全て4倍速になってしまっては、まともな初期設定はできませんからねぇ・・・。
Configビット設定については、プログラム上「pragma 設定部分」を使い回しており、ミニ・エレキー⇒低周波発振器⇒ミニ・パワー計という順で製作してきたものは全て「内蔵クロック使用」のため、これまでは特に問題にならなかった(内蔵クロックで4倍クロック動作が有効になるのは、PIC16F18xxでは「16MHz」の設定の場合のみ)ということです。
また、これまでに外付けクリスタルを使ったのは「PIC16F648A」・・・こいつにはそもそも4倍クロック動作機能がなく、今回は「知らぬ間に生きちゃった」という格好なんですが、どうもこの「ディフォルト」が解せないぞよ・・・と悔し紛れにボヤいてしまいました。4倍クロック動作の方が「特殊」な気がするんですがねぇ・・・

- 関連記事
コメントの投稿
新年会しましょーよ
こんにちわ!
4xPLLって設定がややこしいですね。デフォルトにしているのはAVRを意識しているとしか思えないんですよね^^;
4クロックサイクルで1命令処理のPICより1クロックサイクルで1命令処理のAVRのほうが処理速度的に有利ですから。自作ハムの間でもどちらかというとPICよりAVRが良く使われているような印象です。
4xPLLって設定がややこしいですね。デフォルトにしているのはAVRを意識しているとしか思えないんですよね^^;
4クロックサイクルで1命令処理のPICより1クロックサイクルで1命令処理のAVRのほうが処理速度的に有利ですから。自作ハムの間でもどちらかというとPICよりAVRが良く使われているような印象です。
忘年会を忘れてた・・・
ぶんきゅうさん、こんにちは。
どうもPICのマニュアルは、解り難い部分が結構ありますね。仕事柄、7,8年前まで各種デバイスのマニュアルを読み下してドライバなど作っていたわけですが、もうちょっとマシだったように思います。
AVRは確かに優れもののようですが、自分としては、PICの「古い奴もできるだけ製造を続けるよ」というコンセプトに完全に参ってしまい、今のところ「味見」の気配もありません(^^; 継続性や上位互換性って、結構重要だと思っています(経験上ですがね・・・)。
PICはペリフェラルもへんてこだし、C言語をコンパイルして吐き出されるニーモニックも素直でないし・・・と思うものの、もう慣れちゃったというのが大きいかも知れません。arduinoのようなプラットフォームも、今いまの作りものにはあんまり必要性を感じないんで、当分はPICだろうなぁ・・・。
・・・とういわけで、次もPICでいこうと思います(^^)b
どうもPICのマニュアルは、解り難い部分が結構ありますね。仕事柄、7,8年前まで各種デバイスのマニュアルを読み下してドライバなど作っていたわけですが、もうちょっとマシだったように思います。
AVRは確かに優れもののようですが、自分としては、PICの「古い奴もできるだけ製造を続けるよ」というコンセプトに完全に参ってしまい、今のところ「味見」の気配もありません(^^; 継続性や上位互換性って、結構重要だと思っています(経験上ですがね・・・)。
PICはペリフェラルもへんてこだし、C言語をコンパイルして吐き出されるニーモニックも素直でないし・・・と思うものの、もう慣れちゃったというのが大きいかも知れません。arduinoのようなプラットフォームも、今いまの作りものにはあんまり必要性を感じないんで、当分はPICだろうなぁ・・・。
・・・とういわけで、次もPICでいこうと思います(^^)b